|
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
|