packages feed

api-builder 0.11.0.0 → 0.12.0.0

raw patch · 4 files changed

+20/−11 lines, 4 filesdep +tlsdep ~aesondep ~basedep ~http-clientPVP ok

version bump matches the API change (PVP)

Dependencies added: tls

Dependency ranges changed: aeson, base, http-client, http-client-tls, http-types, transformers

API changes (from Hackage documentation)

- Network.API.Builder.Builder: _baseURL :: Builder -> Text
- Network.API.Builder.Builder: _customizeRequest :: Builder -> Request -> Request
- Network.API.Builder.Builder: _customizeRoute :: Builder -> Route -> Route
- Network.API.Builder.Builder: _name :: Builder -> Text
- Network.API.Builder.Builder: instance Show Builder
- Network.API.Builder.Error: instance Eq a => Eq (APIError a)
- Network.API.Builder.Error: instance Monoid (APIError a)
- Network.API.Builder.Error: instance Show a => Show (APIError a)
- Network.API.Builder.Examples.StackOverflow: instance Eq Question
- Network.API.Builder.Examples.StackOverflow: instance Eq Questions
- Network.API.Builder.Examples.StackOverflow: instance FromJSON Question
- Network.API.Builder.Examples.StackOverflow: instance FromJSON Questions
- Network.API.Builder.Examples.StackOverflow: instance Receivable Questions
- Network.API.Builder.Examples.StackOverflow: instance Show Question
- Network.API.Builder.Examples.StackOverflow: instance Show Questions
- Network.API.Builder.Examples.StackOverflow: isAnswered :: Question -> Bool
- Network.API.Builder.Examples.StackOverflow: score :: Question -> Int
- Network.API.Builder.Examples.StackOverflow: tags :: Question -> [Text]
- Network.API.Builder.Examples.StackOverflow: title :: Question -> Text
- Network.API.Builder.Query: instance ToQuery Bool
- Network.API.Builder.Query: instance ToQuery Int
- Network.API.Builder.Query: instance ToQuery Integer
- Network.API.Builder.Query: instance ToQuery Text
- Network.API.Builder.Query: instance ToQuery a => ToQuery (Maybe a)
- Network.API.Builder.Query: instance ToQuery a => ToQuery [a]
- Network.API.Builder.Receive: instance (Receivable a, Receivable b) => Receivable (a, b)
- Network.API.Builder.Receive: instance (Receivable a, Receivable b, Receivable c) => Receivable (a, b, c)
- Network.API.Builder.Receive: instance (Receivable a, Receivable b, Receivable c, Receivable d) => Receivable (a, b, c, d)
- Network.API.Builder.Receive: instance (Receivable a, Receivable b, Receivable c, Receivable d, Receivable e) => Receivable (a, b, c, d, e)
- Network.API.Builder.Receive: instance Eq a => Eq (JSONResponse a)
- Network.API.Builder.Receive: instance ErrorReceivable ()
- Network.API.Builder.Receive: instance ErrorReceivable ByteString
- Network.API.Builder.Receive: instance ErrorReceivable Value
- Network.API.Builder.Receive: instance FromJSON a => FromJSON (JSONResponse a)
- Network.API.Builder.Receive: instance FromJSON a => Receivable (JSONResponse a)
- Network.API.Builder.Receive: instance Ord a => Ord (JSONResponse a)
- Network.API.Builder.Receive: instance Read a => Read (JSONResponse a)
- Network.API.Builder.Receive: instance Receivable (Response ByteString)
- Network.API.Builder.Receive: instance Receivable ByteString
- Network.API.Builder.Receive: instance Receivable Value
- Network.API.Builder.Receive: instance Show a => Show (JSONResponse a)
- Network.API.Builder.Receive: unwrapJSON :: JSONResponse a -> a
- Network.API.Builder.Routes: httpMethod :: Route -> Method
- Network.API.Builder.Routes: instance Eq Route
- Network.API.Builder.Routes: instance Read Route
- Network.API.Builder.Routes: instance Show Route
- Network.API.Builder.Routes: urlParams :: Route -> [URLParam]
- Network.API.Builder.Routes: urlPieces :: Route -> [URLPiece]
- Network.API.Builder.Send: instance Sendable ()
- Network.API.Builder.Send: instance Sendable ByteString
- Network.API.Builder.Send: instance Sendable PostQuery
- Network.API.Builder.Send: instance Sendable Value
- Network.API.Builder.Send: instance Show PostQuery
- Network.API.Builder.Send.Multipart: instance Show Multipart
+ Network.API.Builder.Builder: [_baseURL] :: Builder -> Text
+ Network.API.Builder.Builder: [_customizeRequest] :: Builder -> Request -> Request
+ Network.API.Builder.Builder: [_customizeRoute] :: Builder -> Route -> Route
+ Network.API.Builder.Builder: [_name] :: Builder -> Text
+ Network.API.Builder.Builder: instance GHC.Show.Show Network.API.Builder.Builder.Builder
+ Network.API.Builder.Error: instance GHC.Base.Monoid (Network.API.Builder.Error.APIError a)
+ Network.API.Builder.Error: instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.API.Builder.Error.APIError a)
+ Network.API.Builder.Error: instance GHC.Show.Show a => GHC.Show.Show (Network.API.Builder.Error.APIError a)
+ Network.API.Builder.Examples.StackOverflow: [isAnswered] :: Question -> Bool
+ Network.API.Builder.Examples.StackOverflow: [score] :: Question -> Int
+ Network.API.Builder.Examples.StackOverflow: [tags] :: Question -> [Text]
+ Network.API.Builder.Examples.StackOverflow: [title] :: Question -> Text
+ Network.API.Builder.Examples.StackOverflow: getAnswersSSL :: IO (Either (APIError ()) Questions)
+ Network.API.Builder.Examples.StackOverflow: instance Data.Aeson.Types.Class.FromJSON Network.API.Builder.Examples.StackOverflow.Question
+ Network.API.Builder.Examples.StackOverflow: instance Data.Aeson.Types.Class.FromJSON Network.API.Builder.Examples.StackOverflow.Questions
+ Network.API.Builder.Examples.StackOverflow: instance GHC.Classes.Eq Network.API.Builder.Examples.StackOverflow.Question
+ Network.API.Builder.Examples.StackOverflow: instance GHC.Classes.Eq Network.API.Builder.Examples.StackOverflow.Questions
+ Network.API.Builder.Examples.StackOverflow: instance GHC.Show.Show Network.API.Builder.Examples.StackOverflow.Question
+ Network.API.Builder.Examples.StackOverflow: instance GHC.Show.Show Network.API.Builder.Examples.StackOverflow.Questions
+ Network.API.Builder.Examples.StackOverflow: instance Network.API.Builder.Receive.Receivable Network.API.Builder.Examples.StackOverflow.Questions
+ Network.API.Builder.Examples.StackOverflow: stackOverflowSSL :: Builder
+ Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery Data.Text.Internal.Text
+ Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery GHC.Integer.Type.Integer
+ Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery GHC.Types.Bool
+ Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery GHC.Types.Int
+ Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery a => Network.API.Builder.Query.ToQuery (GHC.Base.Maybe a)
+ Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery a => Network.API.Builder.Query.ToQuery [a]
+ Network.API.Builder.Receive: [unwrapJSON] :: JSONResponse a -> a
+ Network.API.Builder.Receive: instance (Network.API.Builder.Receive.Receivable a, Network.API.Builder.Receive.Receivable b) => Network.API.Builder.Receive.Receivable (a, b)
+ Network.API.Builder.Receive: instance (Network.API.Builder.Receive.Receivable a, Network.API.Builder.Receive.Receivable b, Network.API.Builder.Receive.Receivable c) => Network.API.Builder.Receive.Receivable (a, b, c)
+ Network.API.Builder.Receive: instance (Network.API.Builder.Receive.Receivable a, Network.API.Builder.Receive.Receivable b, Network.API.Builder.Receive.Receivable c, Network.API.Builder.Receive.Receivable d) => Network.API.Builder.Receive.Receivable (a, b, c, d)
+ Network.API.Builder.Receive: instance (Network.API.Builder.Receive.Receivable a, Network.API.Builder.Receive.Receivable b, Network.API.Builder.Receive.Receivable c, Network.API.Builder.Receive.Receivable d, Network.API.Builder.Receive.Receivable e) => Network.API.Builder.Receive.Receivable (a, b, c, d, e)
+ Network.API.Builder.Receive: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Network.API.Builder.Receive.JSONResponse a)
+ Network.API.Builder.Receive: instance Data.Aeson.Types.Class.FromJSON a => Network.API.Builder.Receive.Receivable (Network.API.Builder.Receive.JSONResponse a)
+ Network.API.Builder.Receive: instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.API.Builder.Receive.JSONResponse a)
+ Network.API.Builder.Receive: instance GHC.Classes.Ord a => GHC.Classes.Ord (Network.API.Builder.Receive.JSONResponse a)
+ Network.API.Builder.Receive: instance GHC.Read.Read a => GHC.Read.Read (Network.API.Builder.Receive.JSONResponse a)
+ Network.API.Builder.Receive: instance GHC.Show.Show a => GHC.Show.Show (Network.API.Builder.Receive.JSONResponse a)
+ Network.API.Builder.Receive: instance Network.API.Builder.Receive.ErrorReceivable ()
+ Network.API.Builder.Receive: instance Network.API.Builder.Receive.ErrorReceivable Data.Aeson.Types.Internal.Value
+ Network.API.Builder.Receive: instance Network.API.Builder.Receive.ErrorReceivable Data.ByteString.Lazy.Internal.ByteString
+ Network.API.Builder.Receive: instance Network.API.Builder.Receive.Receivable (Network.HTTP.Client.Types.Response Data.ByteString.Lazy.Internal.ByteString)
+ Network.API.Builder.Receive: instance Network.API.Builder.Receive.Receivable Data.Aeson.Types.Internal.Value
+ Network.API.Builder.Receive: instance Network.API.Builder.Receive.Receivable Data.ByteString.Lazy.Internal.ByteString
+ Network.API.Builder.Routes: [httpMethod] :: Route -> Method
+ Network.API.Builder.Routes: [urlParams] :: Route -> [URLParam]
+ Network.API.Builder.Routes: [urlPieces] :: Route -> [URLPiece]
+ Network.API.Builder.Routes: instance GHC.Classes.Eq Network.API.Builder.Routes.Route
+ Network.API.Builder.Routes: instance GHC.Read.Read Network.API.Builder.Routes.Route
+ Network.API.Builder.Routes: instance GHC.Show.Show Network.API.Builder.Routes.Route
+ Network.API.Builder.Send: instance GHC.Show.Show Network.API.Builder.Send.PostQuery
+ Network.API.Builder.Send: instance Network.API.Builder.Send.Sendable ()
+ Network.API.Builder.Send: instance Network.API.Builder.Send.Sendable Data.Aeson.Types.Internal.Value
+ Network.API.Builder.Send: instance Network.API.Builder.Send.Sendable Data.ByteString.Lazy.Internal.ByteString
+ Network.API.Builder.Send: instance Network.API.Builder.Send.Sendable Network.API.Builder.Send.PostQuery
+ Network.API.Builder.Send: useToJSON :: ToJSON a => Builder -> Route -> a -> Maybe Request
+ Network.API.Builder.Send.Multipart: instance GHC.Show.Show Network.API.Builder.Send.Multipart.Multipart

Files

api-builder.cabal view
@@ -1,5 +1,5 @@ name: api-builder-version: 0.11.0.0+version: 0.12.0.0 synopsis: Library for easily building REST API wrappers in Haskell license: BSD3 license-file: LICENSE@@ -33,16 +33,17 @@     Network.API.Builder.Send     Network.API.Builder.Send.Multipart   build-depends:-    base >= 4.6 && < 4.9,-    aeson >= 0.9 && < 0.10,+    base >= 4.6 && < 4.10,+    aeson >= 0.9 && < 0.12,     bifunctors >= 4.0 && < 6.0,     bytestring == 0.10.*,     HTTP == 4000.*,-    http-client >= 0.4.11 && < 0.4.21,-    http-client-tls >= 0.2 && < 0.2.3,-    http-types == 0.8.*,+    http-client >= 0.4.30 && < 0.6,+    http-client-tls >= 0.2 && < 0.4,+    http-types >= 0.8 && < 0.10,     text == 1.*,-    transformers >= 0.4 && < 0.5+    tls >= 1.2 && < 1.4,+    transformers >= 0.4 && < 0.6   hs-source-dirs: src/   default-language: Haskell2010   default-extensions:
src/Network/API/Builder/API.hs view
@@ -81,7 +81,6 @@ execAPI b s api = do   m <- liftIO $ newManager tlsManagerSettings   (res, _, _) <- runAPI b m s api-  liftIO $ closeManager m   return res  -- | Runs an @API@ by executing its transformer stack and dumping it all into @IO@.
src/Network/API/Builder/Examples/StackOverflow.hs view
@@ -35,6 +35,9 @@ stackOverflow :: Builder stackOverflow = basicBuilder "StackOverflow API" "http://api.stackexchange.com" +stackOverflowSSL :: Builder+stackOverflowSSL = basicBuilder "StackOverflow API" "https://api.stackexchange.com"+ answersRoute :: Route answersRoute = Route { urlPieces = [ "2.2", "questions" ]                      , urlParams = [ "order" =. ("desc" :: Text)@@ -44,3 +47,6 @@  getAnswers :: IO (Either (APIError ()) Questions) getAnswers = execAPI stackOverflow () $ runRoute answersRoute++getAnswersSSL :: IO (Either (APIError ()) Questions)+getAnswersSSL = execAPI stackOverflowSSL () $ runRoute answersRoute
src/Network/API/Builder/Send.hs view
@@ -18,7 +18,7 @@   send builder r () =     case httpMethod r of       "POST" -> do-        req <- parseUrl $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)+        req <- parseUrlThrow $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)         return $ _customizeRequest builder $           req { requestHeaders = ("Content-Type", "application/x-www-form-urlencoded") : requestHeaders req               , requestBody = RequestBodyBS (dropQuestion $ queryString req)@@ -29,19 +29,22 @@  basicSend :: Builder -> Route -> Maybe Request basicSend builder r = do-  req <- parseUrl $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)+  req <- parseUrlThrow $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)   return $ _customizeRequest builder $ req { method = httpMethod r }  instance Sendable Value where   send builder r value =     case httpMethod r of       "POST" -> do-        req <- parseUrl $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)+        req <- parseUrlThrow $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)         return $ _customizeRequest builder $           req { requestBody = RequestBodyLBS (encode value)               , requestHeaders = ("Content-Type", "application/json") : requestHeaders req               , method = httpMethod r }       _ -> Nothing++useToJSON :: ToJSON a => Builder -> Route -> a -> Maybe Request+useToJSON b r v = send b r (toJSON v)  instance Sendable ByteString where   send builder r bs =