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 +6/−0
- servant-multipart.cabal +25/−20
- src/Servant/Multipart.hs +14/−1
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)