Blame examples/Twitter.hs

Packit 9a2dfb
-- These types follow the format of Twitter search results, as can be
Packit 9a2dfb
-- found in the benchmarks/json-data directory.
Packit 9a2dfb
--
Packit 9a2dfb
-- For uses of these types, see the Twitter subdirectory.
Packit 9a2dfb
--
Packit 9a2dfb
-- There is one deviation for the sake of convenience: the Geo field
Packit 9a2dfb
-- named "type_" is really named "type" in Twitter's real feed.  I
Packit 9a2dfb
-- renamed "type" to "type_" in the *.json files, to avoid overlap
Packit 9a2dfb
-- with a Haskell reserved keyword.
Packit 9a2dfb
Packit 9a2dfb
{-# LANGUAGE DeriveDataTypeable #-}
Packit 9a2dfb
{-# LANGUAGE DeriveGeneric #-}
Packit 9a2dfb
Packit 9a2dfb
module Twitter
Packit 9a2dfb
    (
Packit 9a2dfb
      Metadata(..)
Packit 9a2dfb
    , Geo(..)
Packit 9a2dfb
    , Story(..)
Packit 9a2dfb
    , Result(..)
Packit 9a2dfb
    ) where
Packit 9a2dfb
Packit 9a2dfb
import Prelude ()
Packit 9a2dfb
import Prelude.Compat
Packit 9a2dfb
Packit 9a2dfb
import Control.DeepSeq
Packit 9a2dfb
import Data.Data (Typeable, Data)
Packit 9a2dfb
import Data.Int (Int64)
Packit 9a2dfb
import Data.Text (Text)
Packit 9a2dfb
import GHC.Generics (Generic)
Packit 9a2dfb
import Prelude hiding (id)
Packit 9a2dfb
Packit 9a2dfb
{-# ANN module "Hlint: ignore Use camelCase" #-}
Packit 9a2dfb
{-# ANN module "Hlint: ignore Use newtype instead of data" #-}
Packit 9a2dfb
Packit 9a2dfb
data Metadata = Metadata {
Packit 9a2dfb
    result_type :: Text
Packit 9a2dfb
  } deriving (Eq, Show, Typeable, Data, Generic)
Packit 9a2dfb
Packit 9a2dfb
instance NFData Metadata
Packit 9a2dfb
Packit 9a2dfb
data Geo = Geo {
Packit 9a2dfb
    type_       :: Text
Packit 9a2dfb
  , coordinates :: (Double, Double)
Packit 9a2dfb
  } deriving (Eq, Show, Typeable, Data, Generic)
Packit 9a2dfb
Packit 9a2dfb
instance NFData Geo
Packit 9a2dfb
Packit 9a2dfb
data Story = Story {
Packit 9a2dfb
    from_user_id_str  :: Text
Packit 9a2dfb
  , profile_image_url :: Text
Packit 9a2dfb
  , created_at        :: Text -- ZonedTime
Packit 9a2dfb
  , from_user         :: Text
Packit 9a2dfb
  , id_str            :: Text
Packit 9a2dfb
  , metadata          :: Metadata
Packit 9a2dfb
  , to_user_id        :: Maybe Int64
Packit 9a2dfb
  , text              :: Text
Packit 9a2dfb
  , id_               :: Int64
Packit 9a2dfb
  , from_user_id      :: Int64
Packit 9a2dfb
  , geo               :: Maybe Geo
Packit 9a2dfb
  , iso_language_code :: Text
Packit 9a2dfb
  , to_user_id_str    :: Maybe Text
Packit 9a2dfb
  , source            :: Text
Packit 9a2dfb
  } deriving (Show, Typeable, Data, Generic)
Packit 9a2dfb
Packit 9a2dfb
instance NFData Story
Packit 9a2dfb
Packit 9a2dfb
data Result = Result {
Packit 9a2dfb
    results          :: [Story]
Packit 9a2dfb
  , max_id           :: Int64
Packit 9a2dfb
  , since_id         :: Int64
Packit 9a2dfb
  , refresh_url      :: Text
Packit 9a2dfb
  , next_page        :: Text
Packit 9a2dfb
  , results_per_page :: Int
Packit 9a2dfb
  , page             :: Int
Packit 9a2dfb
  , completed_in     :: Double
Packit 9a2dfb
  , since_id_str     :: Text
Packit 9a2dfb
  , max_id_str       :: Text
Packit 9a2dfb
  , query            :: Text
Packit 9a2dfb
  } deriving (Show, Typeable, Data, Generic)
Packit 9a2dfb
Packit 9a2dfb
instance NFData Result