@@ -0,0 +1,59 @@
1+{-# LANGUAGE OverloadedStrings, RecordWildCards #-}
2+{-# OPTIONS_GHC -fno-warn-orphans #-}
3+
4+module Compare.BufferBuilder () where
5+
6+import Data.BufferBuilder.Json
7+import Data.Monoid ((<>))
8+import Data.Int (Int64)
9+import Prelude hiding (id)
10+import Twitter
11+import qualified Data.BufferBuilder.Utf8 as UB
12+
13+instance (ToJson a, ToJson b) => ToJson (a,b) where
14+ toJson (a,b) = array [toJson a, toJson b]
15+
16+instance ToJson Int64 where
17+ toJson a = unsafeValueUtf8Builder $
18+ UB.appendDecimalSignedInt (fromIntegral a)
19+ {-# INLINE toJson #-}
20+
21+instance ToJson Metadata where
22+ toJson Metadata{..} = toJson $
23+ "result_type" .= result_type
24+
25+instance ToJson Geo where
26+ toJson Geo{..} = toJson $
27+ "type_" .= type_
28+ <> "coordinates" .= coordinates
29+
30+instance ToJson Story where
31+ toJson Story{..} = toJson $
32+ "from_user_id_str" .= from_user_id_str
33+ <> "profile_image_url" .= profile_image_url
34+ <> "created_at" .= created_at
35+ <> "from_user" .= from_user
36+ <> "id_str" .= id_str
37+ <> "metadata" .= metadata
38+ <> "to_user_id" .= to_user_id
39+ <> "text" .= text
40+ <> "id" .= id
41+ <> "from_user_id" .= from_user_id
42+ <> "geo" .= geo
43+ <> "iso_language_code" .= iso_language_code
44+ <> "to_user_id_str" .= to_user_id_str
45+ <> "source" .= source
46+
47+instance ToJson Result where
48+ toJson Result{..} = toJson $
49+ "results" .= results
50+ <> "max_id" .= max_id
51+ <> "since_id" .= since_id
52+ <> "refresh_url" .= refresh_url
53+ <> "next_page" .= next_page
54+ <> "results_per_page" .= results_per_page
55+ <> "page" .= page
56+ <> "completed_in" .= completed_in
57+ <> "since_id_str" .= since_id_str
58+ <> "max_id_str" .= max_id_str
59+ <> "query" .= query