polysemy-http 0.11.0.0 → 0.13.1.0
raw patch · 6 files changed
Files
- changelog.md +1/−1
- integration/Polysemy/Http/Server.hs +21/−4
- lib/Polysemy/Http/Effect/Entity.hs +3/−3
- lib/Polysemy/Http/Http.hs +1/−1
- lib/Polysemy/Http/Interpreter/Native.hs +13/−13
- polysemy-http.cabal +62/−136
changelog.md view
@@ -1,4 +1,4 @@-# Unreleased+# 0.13.0.0 # 0.8.0.0
integration/Polysemy/Http/Server.hs view
@@ -20,8 +20,25 @@ ) import qualified Network.Wai.Handler.Warp as Warp import Prelude hiding (bracket)-import Servant (Get, Handler, Header, JSON, PlainText, Post, ReqBody, ServerT, serve, (:<|>) ((:<|>)), (:>))-import Servant.Client (BaseUrl (BaseUrl), Client, ClientEnv, ClientM, Scheme (Http), client, mkClientEnv, runClientM)+import Servant (+ Get,+ Handler,+ Header,+ JSON,+ NoFraming,+ PlainText,+ Post,+ ReqBody,+ ServerT,+ SourceIO,+ StreamGet,+ serve,+ (:<|>) ((:<|>)),+ (:>),+ )+import Servant.Client (BaseUrl (BaseUrl), ClientEnv, Scheme (Http), mkClientEnv)+import Servant.Client.Streaming (Client, ClientM, client, runClientM)+import Servant.Types.SourceT (source) freePort :: IO PortNumber@@ -48,7 +65,7 @@ :<|> "add" :> ReqBody '[JSON] Payload :> Post '[JSON] Int :<|>- "stream" :> Get '[PlainText] Text+ "stream" :> StreamGet NoFraming PlainText (SourceIO Text) :<|> "cookie" :> Header "cookie" Text :> Get '[PlainText] Text @@ -72,7 +89,7 @@ :<|> (\ (Payload a b) -> pure (a + b)) :<|>- pure (Text.replicate (10 * 8192) "x")+ pure (source (replicate 10 (Text.replicate 8192 "x"))) :<|> (\ cookies -> pure (fromMaybe "no cookies" cookies))
lib/Polysemy/Http/Effect/Entity.hs view
@@ -83,7 +83,7 @@ -- foo :: Entities [Encode Int, Decode Double] r => Sem r () -- @ type family Entities es r :: Constraint where- Entities '[] r = ()+ Entities '[] _ = () Entities (Encode d ': ds) r = (Member (EntityEncode d) r, Entities ds r) Entities (Decode d ': ds) r = (Member (EntityDecode d) r, Entities ds r) @@ -93,7 +93,7 @@ -- foo :: Encoders [Int, Double] r => Sem r () -- @ type family Encoders es r :: Constraint where- Encoders '[] r = ()+ Encoders '[] _ = () Encoders (d ': ds) r = (Member (EntityEncode d) r, Encoders ds r) -- |Convenience constraint for requiring multiple decoders.@@ -102,5 +102,5 @@ -- foo :: Decoders [Int, Double] r => Sem r () -- @ type family Decoders ds r :: Constraint where- Decoders '[] r = ()+ Decoders '[] _ = () Decoders (d ': ds) r = (Member (EntityDecode d) r, Decoders ds r)
lib/Polysemy/Http/Http.hs view
@@ -39,7 +39,7 @@ (∀ x . StreamEvent o c h x -> Sem r x) -> Response c -> Sem r o-streamHandler chunkSize process response = do+streamHandler chunkSize process response = bracket acquire release (streamLoop chunkSize process response) where acquire =
lib/Polysemy/Http/Interpreter/Native.hs view
@@ -6,25 +6,25 @@ import qualified Data.CaseInsensitive as CaseInsensitive import Data.CaseInsensitive (foldedCase) import Exon (exon)+import qualified Log as Log import qualified Network.HTTP.Client as HTTP import Network.HTTP.Client (BodyReader, brRead, brReadSome, httpLbs, responseClose, responseOpen) import Network.HTTP.Client.Internal (CookieJar (CJ)) import Polysemy.Internal.Tactics (liftT)-import qualified Log as Log -import Polysemy.Http.Data.Header (Header (Header), unHeaderName, unHeaderValue)+import Polysemy.Http.Data.Header (Header (..), HeaderName (..), HeaderValue (..)) import qualified Polysemy.Http.Data.HttpError as HttpError import Polysemy.Http.Data.HttpError (HttpError) import Polysemy.Http.Data.Request (- Body (Body),- Host (Host),- Path (Path),- Request (Request),- Tls (Tls),+ Body (..),+ Host (..),+ Path (..),+ Port (..),+ QueryKey (..),+ QueryValue (..),+ Request (..),+ Tls (..), methodUpper,- unPort,- unQueryKey,- unQueryValue, ) import Polysemy.Http.Data.Response (Response (Response)) import qualified Polysemy.Http.Effect.Http as Http@@ -48,11 +48,11 @@ } where queryParams =- bimap (encodeUtf8 . unQueryKey) (fmap (encodeUtf8 . unQueryValue)) <$> query+ bimap (encodeUtf8 @Text . coerce) (fmap (encodeUtf8 @Text . coerce)) <$> query port =- maybe (if tls then 443 else 80) unPort portOverride+ maybe (if tls then 443 else 80) (coerce) portOverride encodedHeaders =- bimap (CaseInsensitive.mk . encodeUtf8 . unHeaderName) (encodeUtf8 . unHeaderValue) <$> headers+ bimap (CaseInsensitive.mk . encodeUtf8 @Text . coerce) (encodeUtf8 @Text . coerce) <$> headers convertResponse :: HTTP.Response b -> Response b convertResponse response =
polysemy-http.cabal view
@@ -1,29 +1,29 @@ cabal-version: 2.2 --- This file has been generated from package.yaml by hpack version 0.35.0.+-- This file has been generated from package.yaml by hpack version 0.36.1. -- -- see: https://github.com/sol/hpack name: polysemy-http-version: 0.11.0.0+version: 0.13.1.0 synopsis: Polysemy effects for HTTP clients description: See https://hackage.haskell.org/package/polysemy-http/docs/Polysemy-Http.html category: Network-homepage: https://git.tryp.io/tek/polysemy-http-bug-reports: https://git.tryp.io/tek/polysemy-http/issues+homepage: https://github.com/tek/polysemy-http#readme+bug-reports: https://github.com/tek/polysemy-http/issues author: Torsten Schmits maintainer: hackage@tryp.io-copyright: 2022 Torsten Schmits+copyright: 2025 Torsten Schmits license: BSD-2-Clause-Patent license-file: LICENSE build-type: Simple extra-source-files:- changelog.md readme.md+ changelog.md source-repository head type: git- location: https://git.tryp.io/tek/polysemy-http+ location: https://github.com/tek/polysemy-http library exposed-modules:@@ -47,87 +47,62 @@ hs-source-dirs: lib default-extensions:+ StrictData AllowAmbiguousTypes ApplicativeDo- BangPatterns- BinaryLiterals BlockArguments- ConstraintKinds DataKinds DefaultSignatures DeriveAnyClass- DeriveDataTypeable- DeriveFoldable- DeriveFunctor- DeriveGeneric- DeriveLift- DeriveTraversable DerivingStrategies DerivingVia DisambiguateRecordFields- DoAndIfThenElse DuplicateRecordFields- EmptyCase- EmptyDataDecls- ExistentialQuantification- FlexibleContexts- FlexibleInstances FunctionalDependencies GADTs- GeneralizedNewtypeDeriving- InstanceSigs- KindSignatures LambdaCase LiberalTypeSynonyms- MultiParamTypeClasses+ MonadComprehensions MultiWayIf- NamedFieldPuns OverloadedLabels OverloadedLists OverloadedStrings PackageImports PartialTypeSignatures- PatternGuards PatternSynonyms- PolyKinds QuantifiedConstraints QuasiQuotes- RankNTypes RecordWildCards RecursiveDo RoleAnnotations- ScopedTypeVariables- StandaloneDeriving TemplateHaskell- TupleSections- TypeApplications TypeFamilies TypeFamilyDependencies- TypeOperators- TypeSynonymInstances UndecidableInstances UnicodeSyntax ViewPatterns- ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages -fplugin=Polysemy.Plugin+ OverloadedRecordDot+ NoFieldSelectors+ ghc-options: -fplugin=Polysemy.Plugin -Wall -Widentities -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Wredundant-constraints -Wunused-type-patterns -Wunused-packages build-depends:- aeson >=1.4 && <2.2- , base >=4.12 && <5- , case-insensitive >=1.2- , exon >=0.3- , http-client >=0.5.14- , http-client-tls >=0.3.1- , http-types >=0.12.3- , polysemy ==1.9.*- , polysemy-plugin ==0.4.*- , prelate ==0.5.*- , time+ aeson >=2.1.0.0 && <2.3+ , base >=4.17.2.1 && <4.21+ , case-insensitive >=1.2.0.11 && <1.3+ , exon >=1.4.0.0 && <1.8+ , http-client >=0.5.13.1 && <0.8+ , http-client-tls >=0.3.0 && <0.4+ , http-types >=0.12.3 && <0.13+ , polysemy >=1.9.0.0 && <1.10+ , polysemy-plugin >=0.4.4.0 && <0.5+ , prelate >=0.5.0.0 && <0.9+ , time >=1.12.2 && <1.13 mixins: base hiding (Prelude) , prelate (Prelate as Prelude) , prelate hiding (Prelate)- default-language: Haskell2010+ default-language: GHC2021 -test-suite polysemy-http-integration+test-suite integration type: exitcode-stdio-1.0 main-is: Main.hs other-modules:@@ -139,91 +114,67 @@ hs-source-dirs: integration default-extensions:+ StrictData AllowAmbiguousTypes ApplicativeDo- BangPatterns- BinaryLiterals BlockArguments- ConstraintKinds DataKinds DefaultSignatures DeriveAnyClass- DeriveDataTypeable- DeriveFoldable- DeriveFunctor- DeriveGeneric- DeriveLift- DeriveTraversable DerivingStrategies DerivingVia DisambiguateRecordFields- DoAndIfThenElse DuplicateRecordFields- EmptyCase- EmptyDataDecls- ExistentialQuantification- FlexibleContexts- FlexibleInstances FunctionalDependencies GADTs- GeneralizedNewtypeDeriving- InstanceSigs- KindSignatures LambdaCase LiberalTypeSynonyms- MultiParamTypeClasses+ MonadComprehensions MultiWayIf- NamedFieldPuns OverloadedLabels OverloadedLists OverloadedStrings PackageImports PartialTypeSignatures- PatternGuards PatternSynonyms- PolyKinds QuantifiedConstraints QuasiQuotes- RankNTypes RecordWildCards RecursiveDo RoleAnnotations- ScopedTypeVariables- StandaloneDeriving TemplateHaskell- TupleSections- TypeApplications TypeFamilies TypeFamilyDependencies- TypeOperators- TypeSynonymInstances UndecidableInstances UnicodeSyntax ViewPatterns- ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages -fplugin=Polysemy.Plugin -threaded -rtsopts -with-rtsopts=-N+ OverloadedRecordDot+ NoFieldSelectors+ ghc-options: -fplugin=Polysemy.Plugin -threaded -rtsopts -with-rtsopts=-N -Wall -Widentities -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Wredundant-constraints -Wunused-type-patterns -Wunused-packages build-depends:- aeson- , base >=4.12 && <5- , exon- , hedgehog- , http-client- , network- , polysemy ==1.9.*+ aeson >=2.1.0.0 && <2.3+ , base >=4.17.2.1 && <4.21+ , exon >=1.4.0.0 && <1.8+ , hedgehog >=1.1.2 && <1.6+ , http-client >=0.5.13.1 && <0.8+ , network >=3.1.2.9 && <3.2+ , polysemy >=1.9.0.0 && <1.10 , polysemy-http- , polysemy-plugin ==0.4.*- , prelate ==0.5.*- , servant-client- , servant-server- , tasty- , tasty-hedgehog- , warp+ , polysemy-plugin >=0.4.4.0 && <0.5+ , prelate >=0.5.0.0 && <0.9+ , servant >=0.19.1 && <0.21+ , servant-client >=0.19 && <0.21+ , servant-server >=0.19.2 && <0.21+ , tasty >=1.2.2 && <1.6+ , tasty-hedgehog >=1.3.0.0 && <1.5+ , warp >=3.3.21 && <3.5 mixins: base hiding (Prelude) , prelate (Prelate as Prelude) , prelate hiding (Prelate)- default-language: Haskell2010+ default-language: GHC2021 -test-suite polysemy-http-unit+test-suite polysemy-http-test type: exitcode-stdio-1.0 main-is: Main.hs other-modules:@@ -233,81 +184,56 @@ hs-source-dirs: test default-extensions:+ StrictData AllowAmbiguousTypes ApplicativeDo- BangPatterns- BinaryLiterals BlockArguments- ConstraintKinds DataKinds DefaultSignatures DeriveAnyClass- DeriveDataTypeable- DeriveFoldable- DeriveFunctor- DeriveGeneric- DeriveLift- DeriveTraversable DerivingStrategies DerivingVia DisambiguateRecordFields- DoAndIfThenElse DuplicateRecordFields- EmptyCase- EmptyDataDecls- ExistentialQuantification- FlexibleContexts- FlexibleInstances FunctionalDependencies GADTs- GeneralizedNewtypeDeriving- InstanceSigs- KindSignatures LambdaCase LiberalTypeSynonyms- MultiParamTypeClasses+ MonadComprehensions MultiWayIf- NamedFieldPuns OverloadedLabels OverloadedLists OverloadedStrings PackageImports PartialTypeSignatures- PatternGuards PatternSynonyms- PolyKinds QuantifiedConstraints QuasiQuotes- RankNTypes RecordWildCards RecursiveDo RoleAnnotations- ScopedTypeVariables- StandaloneDeriving TemplateHaskell- TupleSections- TypeApplications TypeFamilies TypeFamilyDependencies- TypeOperators- TypeSynonymInstances UndecidableInstances UnicodeSyntax ViewPatterns- ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages -fplugin=Polysemy.Plugin -threaded -rtsopts -with-rtsopts=-N+ OverloadedRecordDot+ NoFieldSelectors+ ghc-options: -fplugin=Polysemy.Plugin -threaded -rtsopts -with-rtsopts=-N -Wall -Widentities -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Wredundant-constraints -Wunused-type-patterns -Wunused-packages build-depends:- base >=4.12 && <5- , exon- , hedgehog- , http-client- , polysemy ==1.9.*+ base >=4.17.2.1 && <4.21+ , exon >=1.4.0.0 && <1.8+ , hedgehog >=1.1.2 && <1.6+ , http-client >=0.5.13.1 && <0.8+ , polysemy >=1.9.0.0 && <1.10 , polysemy-http- , polysemy-plugin ==0.4.*- , prelate ==0.5.*- , tasty- , tasty-hedgehog+ , polysemy-plugin >=0.4.4.0 && <0.5+ , prelate >=0.5.0.0 && <0.9+ , tasty >=1.2.2 && <1.6+ , tasty-hedgehog >=1.3.0.0 && <1.5 mixins: base hiding (Prelude) , prelate (Prelate as Prelude) , prelate hiding (Prelate)- default-language: Haskell2010+ default-language: GHC2021