|
Packit |
9a2dfb |
-- Manually write instances.
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
{-# LANGUAGE CPP #-}
|
|
Packit |
9a2dfb |
{-# LANGUAGE OverloadedStrings #-}
|
|
Packit |
9a2dfb |
{-# LANGUAGE RecordWildCards #-}
|
|
Packit |
9a2dfb |
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
#ifdef HAS_BOTH_AESON_AND_BENCHMARKS
|
|
Packit |
9a2dfb |
{-# LANGUAGE PackageImports #-}
|
|
Packit |
9a2dfb |
#endif
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
module Twitter.Manual
|
|
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.Applicative
|
|
Packit |
9a2dfb |
import Data.Monoid ((<>))
|
|
Packit |
9a2dfb |
import Prelude hiding (id)
|
|
Packit |
9a2dfb |
import Twitter
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
#ifndef HAS_BOTH_AESON_AND_BENCHMARKS
|
|
Packit |
9a2dfb |
import Data.Aeson hiding (Result)
|
|
Packit |
9a2dfb |
#else
|
|
Packit |
9a2dfb |
import "aeson" Data.Aeson hiding (Result)
|
|
Packit |
9a2dfb |
import qualified "aeson-benchmarks" Data.Aeson as B
|
|
Packit |
9a2dfb |
#endif
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance ToJSON Metadata where
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toJSON Metadata{..} = object [
|
|
Packit |
9a2dfb |
"result_type" .= result_type
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Metadata{..} = pairs $
|
|
Packit |
9a2dfb |
"result_type" .= result_type
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance FromJSON Metadata where
|
|
Packit |
9a2dfb |
parseJSON (Object v) = Metadata <$> v .: "result_type"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance ToJSON Geo where
|
|
Packit |
9a2dfb |
toJSON Geo{..} = object [
|
|
Packit |
9a2dfb |
"type_" .= type_
|
|
Packit |
9a2dfb |
, "coordinates" .= coordinates
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Geo{..} = pairs $
|
|
Packit |
9a2dfb |
"type_" .= type_
|
|
Packit |
9a2dfb |
<> "coordinates" .= coordinates
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance FromJSON Geo where
|
|
Packit |
9a2dfb |
parseJSON (Object v) = Geo <$>
|
|
Packit |
9a2dfb |
v .: "type_"
|
|
Packit |
9a2dfb |
<*> v .: "coordinates"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance ToJSON Story where
|
|
Packit |
9a2dfb |
toJSON Story{..} = object [
|
|
Packit |
9a2dfb |
"from_user_id_str" .= from_user_id_str
|
|
Packit |
9a2dfb |
, "profile_image_url" .= profile_image_url
|
|
Packit |
9a2dfb |
, "created_at" .= created_at
|
|
Packit |
9a2dfb |
, "from_user" .= from_user
|
|
Packit |
9a2dfb |
, "id_str" .= id_str
|
|
Packit |
9a2dfb |
, "metadata" .= metadata
|
|
Packit |
9a2dfb |
, "to_user_id" .= to_user_id
|
|
Packit |
9a2dfb |
, "text" .= text
|
|
Packit |
9a2dfb |
, "id" .= id_
|
|
Packit |
9a2dfb |
, "from_user_id" .= from_user_id
|
|
Packit |
9a2dfb |
, "geo" .= geo
|
|
Packit |
9a2dfb |
, "iso_language_code" .= iso_language_code
|
|
Packit |
9a2dfb |
, "to_user_id_str" .= to_user_id_str
|
|
Packit |
9a2dfb |
, "source" .= source
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Story{..} = pairs $
|
|
Packit |
9a2dfb |
"from_user_id_str" .= from_user_id_str
|
|
Packit |
9a2dfb |
<> "profile_image_url" .= profile_image_url
|
|
Packit |
9a2dfb |
<> "created_at" .= created_at
|
|
Packit |
9a2dfb |
<> "from_user" .= from_user
|
|
Packit |
9a2dfb |
<> "id_str" .= id_str
|
|
Packit |
9a2dfb |
<> "metadata" .= metadata
|
|
Packit |
9a2dfb |
<> "to_user_id" .= to_user_id
|
|
Packit |
9a2dfb |
<> "text" .= text
|
|
Packit |
9a2dfb |
<> "id" .= id_
|
|
Packit |
9a2dfb |
<> "from_user_id" .= from_user_id
|
|
Packit |
9a2dfb |
<> "geo" .= geo
|
|
Packit |
9a2dfb |
<> "iso_language_code" .= iso_language_code
|
|
Packit |
9a2dfb |
<> "to_user_id_str" .= to_user_id_str
|
|
Packit |
9a2dfb |
<> "source" .= source
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance FromJSON Story where
|
|
Packit |
9a2dfb |
parseJSON (Object v) = Story <$>
|
|
Packit |
9a2dfb |
v .: "from_user_id_str"
|
|
Packit |
9a2dfb |
<*> v .: "profile_image_url"
|
|
Packit |
9a2dfb |
<*> v .: "created_at"
|
|
Packit |
9a2dfb |
<*> v .: "from_user"
|
|
Packit |
9a2dfb |
<*> v .: "id_str"
|
|
Packit |
9a2dfb |
<*> v .: "metadata"
|
|
Packit |
9a2dfb |
<*> v .: "to_user_id"
|
|
Packit |
9a2dfb |
<*> v .: "text"
|
|
Packit |
9a2dfb |
<*> v .: "id"
|
|
Packit |
9a2dfb |
<*> v .: "from_user_id"
|
|
Packit |
9a2dfb |
<*> v .: "geo"
|
|
Packit |
9a2dfb |
<*> v .: "iso_language_code"
|
|
Packit |
9a2dfb |
<*> v .: "to_user_id_str"
|
|
Packit |
9a2dfb |
<*> v .: "source"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance ToJSON Result where
|
|
Packit |
9a2dfb |
toJSON Result{..} = object [
|
|
Packit |
9a2dfb |
"results" .= results
|
|
Packit |
9a2dfb |
, "max_id" .= max_id
|
|
Packit |
9a2dfb |
, "since_id" .= since_id
|
|
Packit |
9a2dfb |
, "refresh_url" .= refresh_url
|
|
Packit |
9a2dfb |
, "next_page" .= next_page
|
|
Packit |
9a2dfb |
, "results_per_page" .= results_per_page
|
|
Packit |
9a2dfb |
, "page" .= page
|
|
Packit |
9a2dfb |
, "completed_in" .= completed_in
|
|
Packit |
9a2dfb |
, "since_id_str" .= since_id_str
|
|
Packit |
9a2dfb |
, "max_id_str" .= max_id_str
|
|
Packit |
9a2dfb |
, "query" .= query
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Result{..} = pairs $
|
|
Packit |
9a2dfb |
"results" .= results
|
|
Packit |
9a2dfb |
<> "max_id" .= max_id
|
|
Packit |
9a2dfb |
<> "since_id" .= since_id
|
|
Packit |
9a2dfb |
<> "refresh_url" .= refresh_url
|
|
Packit |
9a2dfb |
<> "next_page" .= next_page
|
|
Packit |
9a2dfb |
<> "results_per_page" .= results_per_page
|
|
Packit |
9a2dfb |
<> "page" .= page
|
|
Packit |
9a2dfb |
<> "completed_in" .= completed_in
|
|
Packit |
9a2dfb |
<> "since_id_str" .= since_id_str
|
|
Packit |
9a2dfb |
<> "max_id_str" .= max_id_str
|
|
Packit |
9a2dfb |
<> "query" .= query
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance FromJSON Result where
|
|
Packit |
9a2dfb |
parseJSON (Object v) = Result <$>
|
|
Packit |
9a2dfb |
v .: "results"
|
|
Packit |
9a2dfb |
<*> v .: "max_id"
|
|
Packit |
9a2dfb |
<*> v .: "since_id"
|
|
Packit |
9a2dfb |
<*> v .: "refresh_url"
|
|
Packit |
9a2dfb |
<*> v .: "next_page"
|
|
Packit |
9a2dfb |
<*> v .: "results_per_page"
|
|
Packit |
9a2dfb |
<*> v .: "page"
|
|
Packit |
9a2dfb |
<*> v .: "completed_in"
|
|
Packit |
9a2dfb |
<*> v .: "since_id_str"
|
|
Packit |
9a2dfb |
<*> v .: "max_id_str"
|
|
Packit |
9a2dfb |
<*> v .: "query"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
#ifdef HAS_BOTH_AESON_AND_BENCHMARKS
|
|
Packit |
9a2dfb |
instance B.ToJSON Metadata where
|
|
Packit |
9a2dfb |
toJSON Metadata{..} = B.object [
|
|
Packit |
9a2dfb |
"result_type" B..= result_type
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Metadata{..} = B.pairs $
|
|
Packit |
9a2dfb |
"result_type" B..= result_type
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance B.FromJSON Metadata where
|
|
Packit |
9a2dfb |
parseJSON (B.Object v) = Metadata <$> v B..: "result_type"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance B.ToJSON Geo where
|
|
Packit |
9a2dfb |
toJSON Geo{..} = B.object [
|
|
Packit |
9a2dfb |
"type_" B..= type_
|
|
Packit |
9a2dfb |
, "coordinates" B..= coordinates
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Geo{..} = B.pairs $
|
|
Packit |
9a2dfb |
"type_" B..= type_
|
|
Packit |
9a2dfb |
<> "coordinates" B..= coordinates
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance B.FromJSON Geo where
|
|
Packit |
9a2dfb |
parseJSON (B.Object v) = Geo <$>
|
|
Packit |
9a2dfb |
v B..: "type_"
|
|
Packit |
9a2dfb |
<*> v B..: "coordinates"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance B.ToJSON Story where
|
|
Packit |
9a2dfb |
toJSON Story{..} = B.object [
|
|
Packit |
9a2dfb |
"from_user_id_str" B..= from_user_id_str
|
|
Packit |
9a2dfb |
, "profile_image_url" B..= profile_image_url
|
|
Packit |
9a2dfb |
, "created_at" B..= created_at
|
|
Packit |
9a2dfb |
, "from_user" B..= from_user
|
|
Packit |
9a2dfb |
, "id_str" B..= id_str
|
|
Packit |
9a2dfb |
, "metadata" B..= metadata
|
|
Packit |
9a2dfb |
, "to_user_id" B..= to_user_id
|
|
Packit |
9a2dfb |
, "text" B..= text
|
|
Packit |
9a2dfb |
, "id" B..= id_
|
|
Packit |
9a2dfb |
, "from_user_id" B..= from_user_id
|
|
Packit |
9a2dfb |
, "geo" B..= geo
|
|
Packit |
9a2dfb |
, "iso_language_code" B..= iso_language_code
|
|
Packit |
9a2dfb |
, "to_user_id_str" B..= to_user_id_str
|
|
Packit |
9a2dfb |
, "source" B..= source
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Story{..} = B.pairs $
|
|
Packit |
9a2dfb |
"from_user_id_str" B..= from_user_id_str
|
|
Packit |
9a2dfb |
<> "profile_image_url" B..= profile_image_url
|
|
Packit |
9a2dfb |
<> "created_at" B..= created_at
|
|
Packit |
9a2dfb |
<> "from_user" B..= from_user
|
|
Packit |
9a2dfb |
<> "id_str" B..= id_str
|
|
Packit |
9a2dfb |
<> "metadata" B..= metadata
|
|
Packit |
9a2dfb |
<> "to_user_id" B..= to_user_id
|
|
Packit |
9a2dfb |
<> "text" B..= text
|
|
Packit |
9a2dfb |
<> "id" B..= id_
|
|
Packit |
9a2dfb |
<> "from_user_id" B..= from_user_id
|
|
Packit |
9a2dfb |
<> "geo" B..= geo
|
|
Packit |
9a2dfb |
<> "iso_language_code" B..= iso_language_code
|
|
Packit |
9a2dfb |
<> "to_user_id_str" B..= to_user_id_str
|
|
Packit |
9a2dfb |
<> "source" B..= source
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance B.FromJSON Story where
|
|
Packit |
9a2dfb |
parseJSON (B.Object v) = Story <$>
|
|
Packit |
9a2dfb |
v B..: "from_user_id_str"
|
|
Packit |
9a2dfb |
<*> v B..: "profile_image_url"
|
|
Packit |
9a2dfb |
<*> v B..: "created_at"
|
|
Packit |
9a2dfb |
<*> v B..: "from_user"
|
|
Packit |
9a2dfb |
<*> v B..: "id_str"
|
|
Packit |
9a2dfb |
<*> v B..: "metadata"
|
|
Packit |
9a2dfb |
<*> v B..: "to_user_id"
|
|
Packit |
9a2dfb |
<*> v B..: "text"
|
|
Packit |
9a2dfb |
<*> v B..: "id"
|
|
Packit |
9a2dfb |
<*> v B..: "from_user_id"
|
|
Packit |
9a2dfb |
<*> v B..: "geo"
|
|
Packit |
9a2dfb |
<*> v B..: "iso_language_code"
|
|
Packit |
9a2dfb |
<*> v B..: "to_user_id_str"
|
|
Packit |
9a2dfb |
<*> v B..: "source"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance B.ToJSON Result where
|
|
Packit |
9a2dfb |
toJSON Result{..} = B.object [
|
|
Packit |
9a2dfb |
"results" B..= results
|
|
Packit |
9a2dfb |
, "max_id" B..= max_id
|
|
Packit |
9a2dfb |
, "since_id" B..= since_id
|
|
Packit |
9a2dfb |
, "refresh_url" B..= refresh_url
|
|
Packit |
9a2dfb |
, "next_page" B..= next_page
|
|
Packit |
9a2dfb |
, "results_per_page" B..= results_per_page
|
|
Packit |
9a2dfb |
, "page" B..= page
|
|
Packit |
9a2dfb |
, "completed_in" B..= completed_in
|
|
Packit |
9a2dfb |
, "since_id_str" B..= since_id_str
|
|
Packit |
9a2dfb |
, "max_id_str" B..= max_id_str
|
|
Packit |
9a2dfb |
, "query" B..= query
|
|
Packit |
9a2dfb |
]
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
toEncoding Result{..} = B.pairs $
|
|
Packit |
9a2dfb |
"results" B..= results
|
|
Packit |
9a2dfb |
<> "max_id" B..= max_id
|
|
Packit |
9a2dfb |
<> "since_id" B..= since_id
|
|
Packit |
9a2dfb |
<> "refresh_url" B..= refresh_url
|
|
Packit |
9a2dfb |
<> "next_page" B..= next_page
|
|
Packit |
9a2dfb |
<> "results_per_page" B..= results_per_page
|
|
Packit |
9a2dfb |
<> "page" B..= page
|
|
Packit |
9a2dfb |
<> "completed_in" B..= completed_in
|
|
Packit |
9a2dfb |
<> "since_id_str" B..= since_id_str
|
|
Packit |
9a2dfb |
<> "max_id_str" B..= max_id_str
|
|
Packit |
9a2dfb |
<> "query" B..= query
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
instance B.FromJSON Result where
|
|
Packit |
9a2dfb |
parseJSON (B.Object v) = Result <$>
|
|
Packit |
9a2dfb |
v B..: "results"
|
|
Packit |
9a2dfb |
<*> v B..: "max_id"
|
|
Packit |
9a2dfb |
<*> v B..: "since_id"
|
|
Packit |
9a2dfb |
<*> v B..: "refresh_url"
|
|
Packit |
9a2dfb |
<*> v B..: "next_page"
|
|
Packit |
9a2dfb |
<*> v B..: "results_per_page"
|
|
Packit |
9a2dfb |
<*> v B..: "page"
|
|
Packit |
9a2dfb |
<*> v B..: "completed_in"
|
|
Packit |
9a2dfb |
<*> v B..: "since_id_str"
|
|
Packit |
9a2dfb |
<*> v B..: "max_id_str"
|
|
Packit |
9a2dfb |
<*> v B..: "query"
|
|
Packit |
9a2dfb |
parseJSON _ = empty
|
|
Packit |
9a2dfb |
#endif
|