@@ -1,7 +1,12 @@
11-- Use GHC generics to automatically generate good instances.
2+
23{-# LANGUAGE CPP #-}
34{-# OPTIONS_GHC -fno-warn-orphans #-}
45
6+#ifdef HAS_BOTH_AESON_AND_BENCHMARKS
7+{-# LANGUAGE PackageImports #-}
8+#endif
9+
510module Twitter.Generic
611 (
712 Metadata(..)
@@ -11,39 +16,64 @@ module Twitter.Generic
1116 ) where
1217
1318import Prelude ()
14−import Prelude.Compat
19+import Prelude.Compat ()
1520
1621import Twitter
22+import Twitter.Options
1723
1824#ifndef HAS_BOTH_AESON_AND_BENCHMARKS
19−import Data.Aeson (ToJSON, FromJSON)
25+import Data.Aeson (ToJSON (..), FromJSON (..), genericToJSON, genericToEncoding, genericParseJSON)
2026#else
21−import "aeson" Data.Aeson (ToJSON, FromJSON)
27+import "aeson" Data.Aeson (ToJSON (..), FromJSON (..), genericToJSON, genericToEncoding, genericParseJSON)
2228import qualified "aeson-benchmarks" Data.Aeson as B
2329#endif
2430
25−instance ToJSON Metadata
26−instance FromJSON Metadata
31+instance ToJSON Metadata where
32+ toJSON = genericToJSON twitterOptions
33+ toEncoding = genericToEncoding twitterOptions
34+instance FromJSON Metadata where
35+ parseJSON = genericParseJSON twitterOptions
2736
28−instance ToJSON Geo
29−instance FromJSON Geo
37+instance ToJSON Geo where
38+ toJSON = genericToJSON twitterOptions
39+ toEncoding = genericToEncoding twitterOptions
40+instance FromJSON Geo where
41+ parseJSON = genericParseJSON twitterOptions
3042
31−instance ToJSON Story
32−instance FromJSON Story
43+instance ToJSON Story where
44+ toJSON = genericToJSON twitterOptions
45+ toEncoding = genericToEncoding twitterOptions
46+instance FromJSON Story where
47+ parseJSON = genericParseJSON twitterOptions
3348
34−instance ToJSON Result
35−instance FromJSON Result
49+instance ToJSON Result where
50+ toJSON = genericToJSON twitterOptions
51+ toEncoding = genericToEncoding twitterOptions
52+instance FromJSON Result where
53+ parseJSON = genericParseJSON twitterOptions
3654
3755#ifdef HAS_BOTH_AESON_AND_BENCHMARKS
38−instance B.ToJSON Metadata
39−instance B.FromJSON Metadata
56+instance B.ToJSON Metadata where
57+ toJSON = B.genericToJSON btwitterOptions
58+ toEncoding = B.genericToEncoding btwitterOptions
59+instance B.FromJSON Metadata where
60+ parseJSON = B.genericParseJSON btwitterOptions
4061
41−instance B.ToJSON Geo
42−instance B.FromJSON Geo
62+instance B.ToJSON Geo where
63+ toJSON = B.genericToJSON btwitterOptions
64+ toEncoding = B.genericToEncoding btwitterOptions
65+instance B.FromJSON Geo where
66+ parseJSON = B.genericParseJSON btwitterOptions
4367
44−instance B.ToJSON Story
45−instance B.FromJSON Story
68+instance B.ToJSON Story where
69+ toJSON = B.genericToJSON btwitterOptions
70+ toEncoding = B.genericToEncoding btwitterOptions
71+instance B.FromJSON Story where
72+ parseJSON = B.genericParseJSON btwitterOptions
4673
47−instance B.ToJSON Result
48−instance B.FromJSON Result
74+instance B.ToJSON Result where
75+ toJSON = B.genericToJSON btwitterOptions
76+ toEncoding = B.genericToEncoding btwitterOptions
77+instance B.FromJSON Result where
78+ parseJSON = B.genericParseJSON btwitterOptions
4979#endif