@@ -76,10 +76,6 @@ newtype OAuthToken = OAuthToken Text
76instance ToText OAuthToken where
76instance ToText OAuthToken where
77 toText (OAuthToken t) = "Bearer " <> t
77 toText (OAuthToken t) = "Bearer " <> t
79−class GoogleAuth a where
80− _AuthKey :: Traversal' a AuthKey
81− _AuthToken :: Traversal' a OAuthToken
83newtype MediaDownload a = MediaDownload a
79newtype MediaDownload a = MediaDownload a
85_MediaDownload :: Iso' (MediaDownload a) a
81_MediaDownload :: Iso' (MediaDownload a) a
@@ -117,7 +113,6 @@ data SerializeError = SerializeError'
117 { _serializeId :: !ServiceId
113 { _serializeId :: !ServiceId
118 , _serializeHeaders :: [HTTP.Header]
114 , _serializeHeaders :: [HTTP.Header]
119 , _serializeStatus :: !Status
115 , _serializeStatus :: !Status
120− , _serializeMedia :: !MediaType
121 , _serializeMessage :: String
116 , _serializeMessage :: String
122 } deriving (Eq, Show, Typeable)
117 } deriving (Eq, Show, Typeable)
@@ -125,8 +120,7 @@ data ServiceError = ServiceError'
125 { _serviceId :: !ServiceId
120 { _serviceId :: !ServiceId
126 , _serviceStatus :: !Status
121 , _serviceStatus :: !Status
127 , _serviceHeaders :: [HTTP.Header]
122 , _serviceHeaders :: [HTTP.Header]
128− , _serviceMedia :: !MediaType
129− , _serviceBody :: LBS.ByteString
123+ , _serviceBody :: Maybe LBS.ByteString
130 } deriving (Eq, Show, Typeable)
124 } deriving (Eq, Show, Typeable)
132class AsError a where
126class AsError a where
@@ -169,8 +163,6 @@ data Service = Service
169 , _svcPort :: !Int
163 , _svcPort :: !Int
170 , _svcSecure :: !Bool
164 , _svcSecure :: !Bool
171 , _svcTimeout :: !(Maybe Seconds)
165 , _svcTimeout :: !(Maybe Seconds)
172− , _svcCheck :: !(Status -> Bool)
173− , _svcRetry :: !(ServiceError -> Bool)
176-- | An intermediary request builder.
168-- | An intermediary request builder.
@@ -205,7 +197,7 @@ setBody rq c x = rq { _rqBody = Just (c, x) }
205data Client a = Client
197data Client a = Client
206 { _cliAccept :: Maybe MediaType
198 { _cliAccept :: Maybe MediaType
207 , _cliMethod :: Method
199 , _cliMethod :: Method
208− , _cliCheck :: Int -> Bool
200+ , _cliCheck :: Status -> Bool
209 , _cliService :: Service
201 , _cliService :: Service
210 , _cliRequest :: Request
202 , _cliRequest :: Request
211 , _cliResponse :: Stream -> ResourceT IO (Either SerializeError a)
203 , _cliResponse :: Stream -> ResourceT IO (Either SerializeError a)
@@ -237,7 +229,7 @@ client :: (Stream -> ResourceT IO (Either SerializeError a))
237client f cs m ns rq s = Client
229client f cs m ns rq s = Client
238 { _cliAccept = cs
230 { _cliAccept = cs
239 , _cliMethod = m
231 , _cliMethod = m
240− , _cliCheck = (`elem` ns)
232+ , _cliCheck = (`elem` ns) . fromEnum
241 , _cliService = s
233 , _cliService = s
242 , _cliRequest = rq
234 , _cliRequest = rq
243 , _cliResponse = f
235 , _cliResponse = f
@@ -275,7 +267,11 @@ instance FromJSON a => FromStream JSON a where
275 Left e -> undefined
267 Left e -> undefined
276 Right x -> pure (Right x)
268 Right x -> pure (Right x)
270+class GoogleAuth a where
271+ _AuthKey :: Traversal' a AuthKey
272+ _AuthToken :: Traversal' a OAuthToken
278−class GoogleRequest a where
274+class GoogleAuth a => GoogleRequest a where
279 type Rs a :: *
275 type Rs a :: *
281 requestClient :: a -> Client (Rs a)
277 requestClient :: a -> Client (Rs a)