packages feed

servant-multipart 0.11.2 → 0.11.3

raw patch · 3 files changed

+45/−21 lines, 3 filesdep +servant-foreigndep ~basedep ~bytestringdep ~directoryPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: servant-foreign

Dependency ranges changed: base, bytestring, directory, http-media, lens, resourcet, servant, servant-server, text, transformers, wai, wai-extra

API changes (from Hackage documentation)

- Servant.Multipart: instance Servant.Utils.Links.HasLink sub => Servant.Utils.Links.HasLink (Servant.Multipart.MultipartForm tag a Servant.API.Sub.:> sub)
+ Servant.Multipart: instance (Servant.Foreign.Internal.HasForeignType lang ftype a, Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.Multipart.MultipartForm t a Servant.API.Sub.:> api)
+ Servant.Multipart: instance Servant.Links.HasLink sub => Servant.Links.HasLink (Servant.Multipart.MultipartForm tag a Servant.API.Sub.:> sub)

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+0.11.3+------++- Add `HasForeign (MultipartForm t a :> api)` instance.+  [#20](https://github.com/haskell-servant/servant-multipart/pull/20)+ 0.11.2 ------ 
servant-multipart.cabal view
@@ -1,5 +1,5 @@ name:                servant-multipart-version:             0.11.2+version:             0.11.3 synopsis:            multipart/form-data (e.g file upload) support for servant description:   This package adds support for file upload to the servant ecosystem. It draws@@ -17,30 +17,35 @@ cabal-version:       >=1.10 extra-source-files:  CHANGELOG.md tested-with:-  GHC==7.8.4,-  GHC==7.10.3,-  GHC==8.0.2,-  GHC==8.2.2,-  GHC==8.4.3+  GHC ==8.0.2+   || ==8.2.2+   || ==8.4.4+   || ==8.6.2  library+  default-language:    Haskell2010   hs-source-dirs:      src   exposed-modules:     Servant.Multipart++  -- ghc boot libs   build-depends:-                base >= 4.7 && < 5,-                bytestring >= 0.10 && <0.11,-                directory,-                http-media >= 0.6 && <0.8,-                lens >= 4.0 && < 4.17,-                resourcet >=1.1 && <1.3,-                servant >=0.10 && <0.15,-                servant-docs >=0.10 && <0.15,-                servant-server >=0.10 && <0.15,-                text >=1.2 && <1.3,-                transformers >=0.3 && <0.6,-                wai >= 3.2 && <3.3,-                wai-extra >=3.0 && <3.1-  default-language:    Haskell2010+    base            >= 4.9       && < 5,+    bytestring      >= 0.10.8.1  && < 0.11,+    directory       >= 1.3       && < 1.4,+    text            >= 1.2.3.0   && < 1.3,+    transformers    >= 0.5.2.0   && < 0.6++  -- other dependencies+  build-depends:+    http-media      >= 0.7.1.3  && <0.8,+    lens            >= 4.17     && < 4.18,+    resourcet       >= 1.2.2    && <1.3,+    servant         >= 0.15     && <0.16,+    servant-docs    >= 0.10     && <0.15,+    servant-foreign >= 0.15     && <0.16,+    servant-server  >= 0.15     && <0.16,+    wai             >= 3.2.1.2  && <3.3,+    wai-extra       >= 3.0.24.3 && <3.1  executable upload   hs-source-dirs:      exe
src/Servant/Multipart.hs view
@@ -12,6 +12,7 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeApplications #-} -- | @multipart/form-data@ support for servant. -- --   This is mostly useful for adding file upload support to@@ -35,7 +36,7 @@   , ToMultipartSample(..)   ) where -import Control.Lens ((<>~), (&), view)+import Control.Lens ((<>~), (&), view, (.~)) import Control.Monad.IO.Class import Control.Monad.Trans.Resource import Data.Foldable (foldMap)@@ -49,6 +50,7 @@ import Network.Wai.Parse import Servant import Servant.Docs+import Servant.Foreign import Servant.Server.Internal import System.Directory @@ -525,3 +527,14 @@                     (Proxy :: Proxy a)                 ]     in docsFor (Proxy :: Proxy api) (endpoint, newAction) opts++instance (HasForeignType lang ftype a, HasForeign lang ftype api)+      => HasForeign lang ftype (MultipartForm t a :> api) where+  type Foreign ftype (MultipartForm t a :> api) = Foreign ftype api++  foreignFor lang ftype Proxy req =+    foreignFor lang ftype (Proxy @api) $+      req & reqBody .~ Just t+          & reqBodyContentType .~ ReqBodyMultipart+    where+      t = typeFor lang ftype (Proxy @a)