@@ -1,5 +1,8 @@
11-- Use GHC generics to automatically generate good instances.
2+
23{-# LANGUAGE CPP #-}
4+{-# LANGUAGE PackageImports #-}
5+
36{-# OPTIONS_GHC -fno-warn-orphans #-}
47
58module Twitter.Generic
@@ -11,39 +14,64 @@ module Twitter.Generic
1114 ) where
1215
1316import Prelude ()
14−import Prelude.Compat
17+import Prelude.Compat ()
1518
1619import Twitter
20+import Twitter.Options
1721
1822#ifndef HAS_BOTH_AESON_AND_BENCHMARKS
19−import Data.Aeson (ToJSON, FromJSON)
23+import Data.Aeson (ToJSON (..), FromJSON (..), genericToJSON, genericToEncoding, genericParseJSON)
2024#else
21−import "aeson" Data.Aeson (ToJSON, FromJSON)
25+import "aeson" Data.Aeson (ToJSON (..), FromJSON (..), genericToJSON, genericToEncoding, genericParseJSON)
2226import qualified "aeson-benchmarks" Data.Aeson as B
2327#endif
2428
25−instance ToJSON Metadata
26−instance FromJSON Metadata
29+instance ToJSON Metadata where
30+ toJSON = genericToJSON twitterOptions
31+ toEncoding = genericToEncoding twitterOptions
32+instance FromJSON Metadata where
33+ parseJSON = genericParseJSON twitterOptions
2734
28−instance ToJSON Geo
29−instance FromJSON Geo
35+instance ToJSON Geo where
36+ toJSON = genericToJSON twitterOptions
37+ toEncoding = genericToEncoding twitterOptions
38+instance FromJSON Geo where
39+ parseJSON = genericParseJSON twitterOptions
3040
31−instance ToJSON Story
32−instance FromJSON Story
41+instance ToJSON Story where
42+ toJSON = genericToJSON twitterOptions
43+ toEncoding = genericToEncoding twitterOptions
44+instance FromJSON Story where
45+ parseJSON = genericParseJSON twitterOptions
3346
34−instance ToJSON Result
35−instance FromJSON Result
47+instance ToJSON Result where
48+ toJSON = genericToJSON twitterOptions
49+ toEncoding = genericToEncoding twitterOptions
50+instance FromJSON Result where
51+ parseJSON = genericParseJSON twitterOptions
3652
3753#ifdef HAS_BOTH_AESON_AND_BENCHMARKS
38−instance B.ToJSON Metadata
39−instance B.FromJSON Metadata
54+instance B.ToJSON Metadata where
55+ toJSON = B.genericToJSON btwitterOptions
56+ toEncoding = B.genericToEncoding btwitterOptions
57+instance B.FromJSON Metadata where
58+ parseJSON = B.genericParseJSON btwitterOptions
4059
41−instance B.ToJSON Geo
42−instance B.FromJSON Geo
60+instance B.ToJSON Geo where
61+ toJSON = B.genericToJSON btwitterOptions
62+ toEncoding = B.genericToEncoding btwitterOptions
63+instance B.FromJSON Geo where
64+ parseJSON = B.genericParseJSON btwitterOptions
4365
44−instance B.ToJSON Story
45−instance B.FromJSON Story
66+instance B.ToJSON Story where
67+ toJSON = B.genericToJSON btwitterOptions
68+ toEncoding = B.genericToEncoding btwitterOptions
69+instance B.FromJSON Story where
70+ parseJSON = B.genericParseJSON btwitterOptions
4671
47−instance B.ToJSON Result
48−instance B.FromJSON Result
72+instance B.ToJSON Result where
73+ toJSON = B.genericToJSON btwitterOptions
74+ toEncoding = B.genericToEncoding btwitterOptions
75+instance B.FromJSON Result where
76+ parseJSON = B.genericParseJSON btwitterOptions
4977#endif