Blame examples/Twitter/Manual.hs

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