servant-to-elm 0.2.0.0 → 0.3.0.0
raw patch · 3 files changed
+30/−7 lines, 3 filesdep +servant-multipartPVP ok
version bump matches the API change (PVP)
Dependencies added: servant-multipart
API changes (from Hackage documentation)
+ Servant.To.Elm: instance (Language.Haskell.To.Elm.HasElmEncoder (Servant.Multipart.MultipartData tag) a, Servant.To.Elm.HasElmEndpoints api) => Servant.To.Elm.HasElmEndpoints (Servant.Multipart.MultipartForm tag a Servant.API.Sub.:> api)
+ Servant.To.Elm: instance Language.Haskell.To.Elm.HasElmEncoder (Servant.Multipart.MultipartData tag) (Servant.Multipart.MultipartData tag)
+ Servant.To.Elm: instance Language.Haskell.To.Elm.HasElmType (Servant.Multipart.MultipartData tag)
- Servant.To.Elm: Endpoint :: URL -> Method -> [(Text, Encoder, Bool)] -> Maybe Encoder -> Maybe Decoder -> [Text] -> Endpoint
+ Servant.To.Elm: Endpoint :: URL -> Method -> [(Text, Encoder, Bool)] -> Maybe (Expression Void, Encoder) -> Maybe Decoder -> [Text] -> Endpoint
- Servant.To.Elm: [$sel:_body:Endpoint] :: Endpoint -> Maybe Encoder
+ Servant.To.Elm: [$sel:_body:Endpoint] :: Endpoint -> Maybe (Expression Void, Encoder)
Files
- CHANGELOG.md +4/−0
- servant-to-elm.cabal +5/−2
- src/Servant/To/Elm.hs +21/−5
CHANGELOG.md view
@@ -2,6 +2,10 @@ ## Unreleased changes +## 0.3.0.0++- Add support for multipart forms+ ## 0.2.0.0 - Update code with changes from `haskell-to-elm-0.2.0.0`
servant-to-elm.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 11605446602bdfe9cebe8697f26a8560fb1d2b9ff791eaf13b847658631ffb92+-- hash: 93b2674b01cbea25b894fcbcb2d07f0308d2c535ba76a81fd6831bda6deb39cb name: servant-to-elm-version: 0.2.0.0+version: 0.3.0.0 synopsis: Automatically generate Elm clients for Servant APIs description: Please see the README on GitHub at <https://github.com/folq/servant-to-elm#readme> category: Servant, API, Elm, Compiler@@ -49,6 +49,7 @@ , http-types >=0.12.0 , protolude >=0.2.3 , servant >=0.16.0+ , servant-multipart >=0.11.0 , text >=1.2.0 default-language: Haskell2010 @@ -69,6 +70,7 @@ , http-types >=0.12.0 , protolude >=0.2.3 , servant+ , servant-multipart >=0.11.0 , servant-to-elm , text >=1.2.0 , unordered-containers@@ -93,6 +95,7 @@ , http-types >=0.12.0 , protolude >=0.2.3 , servant >=0.16.0+ , servant-multipart >=0.11.0 , servant-to-elm , text >=1.2.0 default-language: Haskell2010
src/Servant/To/Elm.hs view
@@ -25,6 +25,7 @@ import qualified Network.HTTP.Types as HTTP import Servant.API ((:<|>), (:>)) import qualified Servant.API as Servant+import qualified Servant.Multipart as Servant import qualified Servant.API.Modifiers as Servant import Language.Elm.Definition (Definition)@@ -90,7 +91,7 @@ | (_, type_, arg) <- _queryString $ _url endpoint ] , [ _encodedType body- | Just body <- [_body endpoint]+ | Just (_, body) <- [_body endpoint] ] ] )@@ -286,9 +287,9 @@ Nothing -> "Http.emptyBody" - Just body ->+ Just (bodyType, body) -> Expression.App- "Http.jsonBody"+ (vacuous bodyType) (Expression.App (vacuous $ _encoder body) $ pure bodyArgName) elmExpect =@@ -402,7 +403,7 @@ { _url :: URL , _method :: HTTP.Method , _headers :: [(Text, Encoder, Bool)]- , _body :: Maybe Encoder+ , _body :: Maybe (Expression Void, Encoder) , _returnType :: Maybe Decoder , _functionName :: [Text] }@@ -561,9 +562,16 @@ => HasElmEndpoints (Servant.ReqBody' mods list a :> api) where elmEndpoints' prefix = elmEndpoints' @api prefix- { _body = Just $ makeEncoder @Aeson.Value @a+ { _body = Just ("Http.jsonBody", makeEncoder @Aeson.Value @a) } +instance (HasElmEncoder (Servant.MultipartData tag) a, HasElmEndpoints api)+ => HasElmEndpoints (Servant.MultipartForm tag a :> api) where+ elmEndpoints' prefix =+ elmEndpoints' @api prefix+ { _body = Just ("Http.multipartBody", makeEncoder @(Servant.MultipartData tag) @a)+ }+ instance (KnownSymbol path, HasElmEndpoints api) => HasElmEndpoints (path :> api) where elmEndpoints' prefix = elmEndpoints' @api prefix@@ -607,3 +615,11 @@ instance HasElmDecoder Aeson.Value Servant.NoContent where elmDecoder = Expression.App "Json.Decode.succeed" "NoContent.NoContent"++instance HasElmType (Servant.MultipartData tag) where+ elmType =+ Type.App "List.List" "Http.Part"++instance HasElmEncoder (Servant.MultipartData tag) (Servant.MultipartData tag) where+ elmEncoder =+ "Basics.identity"