git.iko.soy/typeable/servant
on master help sign in
Apply stylish-haskell on all modules
commitf9bcc15d0b1877187b33cbfe5fa6ef60625e17d0 authorOleg Grenrus <oleg.grenrus@iki.fi> dateFri 29 Jun 2018, 22:08 (8 years ago) parente3c91ec
42 files changed+573−437
servant-client/src/Servant/Client.hs+2−2 servant-client/src/Servant/Client/Internal/HttpClient.hs+33−18 servant-client/test/Servant/ClientSpec.hs+31−34 servant-client/test/Servant/StreamSpec.hs+17−12 servant-docs/example/greet.hs+9−8 servant-docs/src/Servant/Docs.hs+2−2 servant-docs/src/Servant/Docs/Internal.hs+31−19 servant-docs/src/Servant/Docs/Internal/Pretty.hs+10−6 servant-docs/test/Servant/DocsSpec.hs+2−1 servant-foreign/Setup.hs+1−1 servant-foreign/src/Servant/Foreign.hs+3−3 servant-foreign/src/Servant/Foreign/Inflections.hs+7−4 servant-foreign/src/Servant/Foreign/Internal.hs+29−24 servant-foreign/test/Servant/ForeignSpec.hs+17−16 servant-server/src/Servant.hs+3−2 servant-server/src/Servant/Server.hs+13−9 servant-server/src/Servant/Server/Experimental/Auth.hs+28−24 servant-server/src/Servant/Server/Internal.hs+74−76 servant-server/src/Servant/Server/Internal/BasicAuth.hs+22−13 servant-server/src/Servant/Server/Internal/Handler.hs+19−11 servant-server/src/Servant/Server/Internal/Router.hs+9−6 servant-server/src/Servant/Server/Internal/RoutingApplication.hs+19−10 servant-server/src/Servant/Server/Internal/ServantErr.hs+8−5 servant-server/src/Servant/Utils/StaticFiles.hs+12−6 servant-server/test/Servant/ArbitraryMonadServerSpec.hs+4−3 servant-server/test/Servant/HoistSpec.hs+4−3 servant-server/test/Servant/Server/ErrorSpec.hs+11−7 servant-server/test/Servant/Server/Internal/ContextSpec.hs+6−3 servant-server/test/Servant/Server/Internal/RoutingApplicationSpec.hs+31−25 servant-server/test/Servant/Server/RouterSpec.hs+18−11 servant-server/test/Servant/Server/StreamingSpec.hs+8−7 servant-server/test/Servant/Server/UsingContextSpec.hs+4−3 servant-server/test/Servant/Server/UsingContextSpec/TestCombinators.hs+9−9 servant-server/test/Servant/Utils/StaticFilesSpec.hs+23−14 servant-server/test/doctests.hs+5−3 servant/src/Servant/API.hs+3−3 servant/src/Servant/API/Stream.hs+2−2 servant/src/Servant/Utils/Links.hs+1−1 servant/test/Servant/API/ContentTypesSpec.hs+21−14 servant/test/Servant/API/ResponseHeadersSpec.hs+4−4 servant/test/Servant/LinksSpec.hs+13−10 servant/test/doctests.hs+5−3
servant-client/src/Servant/Client.hs+2−2
@@ -13,5 +13,5 @@ module Servant.Client
1313 , module Servant.Client.Core.Reexport
1414 ) where
1515
16−import Servant.Client.Core.Reexport
17−import Servant.Client.Internal.HttpClient
16+import Servant.Client.Core.Reexport
17+import Servant.Client.Internal.HttpClient
servant-client/src/Servant/Client/Internal/HttpClient.hs+33−18
@@ -11,34 +11,49 @@
1111{-# LANGUAGE TypeFamilies #-}
1212module Servant.Client.Internal.HttpClient where
1313
14−import Prelude ()
14+import Prelude ()
1515import Prelude.Compat
1616
1717import Control.Concurrent.STM.TVar
1818import Control.Exception
1919import Control.Monad
20−import Control.Monad.Base (MonadBase (..))
21−import Control.Monad.Catch (MonadCatch, MonadThrow)
22−import Control.Monad.Error.Class (MonadError (..))
20+import Control.Monad.Base
21+ (MonadBase (..))
22+import Control.Monad.Catch
23+ (MonadCatch, MonadThrow)
24+import Control.Monad.Error.Class
25+ (MonadError (..))
2326import Control.Monad.Reader
24−import Control.Monad.STM (atomically)
25−import Control.Monad.Trans.Control (MonadBaseControl (..))
27+import Control.Monad.STM
28+ (atomically)
29+import Control.Monad.Trans.Control
30+ (MonadBaseControl (..))
2631import Control.Monad.Trans.Except
27−import Data.ByteString.Builder (toLazyByteString)
32+import Data.ByteString.Builder
33+ (toLazyByteString)
2834import qualified Data.ByteString.Lazy as BSL
29−import Data.Foldable (toList, for_)
30−import Data.Functor.Alt (Alt (..))
31−import Data.Maybe (maybeToList)
32−import Data.Semigroup ((<>))
33−import Data.Proxy (Proxy (..))
34−import Data.Sequence (fromList)
35−import Data.String (fromString)
35+import Data.Foldable
36+ (for_, toList)
37+import Data.Functor.Alt
38+ (Alt (..))
39+import Data.Maybe
40+ (maybeToList)
41+import Data.Proxy
42+ (Proxy (..))
43+import Data.Semigroup
44+ ((<>))
45+import Data.Sequence
46+ (fromList)
47+import Data.String
48+ (fromString)
3649import qualified Data.Text as T
37−import Data.Time.Clock (getCurrentTime)
50+import Data.Time.Clock
51+ (getCurrentTime)
3852import GHC.Generics
39−import Network.HTTP.Media (renderHeader)
40−import Network.HTTP.Types (hContentType, renderQuery,
41− statusCode)
53+import Network.HTTP.Media
54+ (renderHeader)
55+import Network.HTTP.Types
56+ (hContentType, renderQuery, statusCode)
4257import Servant.Client.Core
4358
4459import qualified Network.HTTP.Client as Client
servant-client/test/Servant/ClientSpec.hs+31−34
@@ -26,56 +26,53 @@
2626#include "overlapping-compat.h"
2727module Servant.ClientSpec (spec, Person(..), startWaiApp, endWaiApp) where
2828
29−import Prelude ()
29+import Prelude ()
3030import Prelude.Compat
3131
32−import Control.Arrow (left)
33−import Control.Concurrent (ThreadId, forkIO,
34− killThread)
35−import Control.Exception (bracket)
36−import Control.Monad.Error.Class (throwError)
32+import Control.Arrow
33+ (left)
34+import Control.Concurrent
35+ (ThreadId, forkIO, killThread)
36+import Control.Exception
37+ (bracket)
38+import Control.Monad.Error.Class
39+ (throwError)
3740import Data.Aeson
38−import Data.Char (chr, isPrint)
39−import Data.Foldable (forM_)
40−import Data.Semigroup ((<>))
41−import Data.Monoid ()
41+import Data.Char
42+ (chr, isPrint)
43+import Data.Foldable
44+ (forM_)
45+import Data.Monoid ()
4246import Data.Proxy
47+import Data.Semigroup
48+ ((<>))
4349import qualified Generics.SOP as SOP
44−import GHC.Generics (Generic)
50+import GHC.Generics
51+ (Generic)
4552import qualified Network.HTTP.Client as C
4653import qualified Network.HTTP.Types as HTTP
4754import Network.Socket
4855import qualified Network.Wai as Wai
4956import Network.Wai.Handler.Warp
50−import System.IO.Unsafe (unsafePerformIO)
57+import System.IO.Unsafe
58+ (unsafePerformIO)
5159import Test.Hspec
5260import Test.Hspec.QuickCheck
5361import Test.HUnit
5462import Test.QuickCheck
55−import Web.FormUrlEncoded (FromForm, ToForm)
56−
57−import Servant.API ((:<|>) ((:<|>)),
58− (:>), AuthProtect,
59− BasicAuth,
60− BasicAuthData (..),
61− Capture,
62− CaptureAll, Delete,
63− DeleteNoContent,
64− EmptyAPI, addHeader,
65− FormUrlEncoded,
66− Get, Header,
67− Headers, JSON,
68− NoContent (NoContent),
69− Post, Put, Raw,
70− QueryFlag,
71− QueryParam,
72− QueryParams,
73− ReqBody,
74− getHeaders)
63+import Web.FormUrlEncoded
64+ (FromForm, ToForm)
65+
66+import Servant.API
67+ ((:<|>) ((:<|>)), (:>), AuthProtect, BasicAuth,
68+ BasicAuthData (..), Capture, CaptureAll, Delete,
69+ DeleteNoContent, EmptyAPI, FormUrlEncoded, Get, Header,
70+ Headers, JSON, NoContent (NoContent), Post, Put, QueryFlag,
71+ QueryParam, QueryParams, Raw, ReqBody, addHeader, getHeaders)
7572import Servant.API.Internal.Test.ComprehensiveAPI
7673import Servant.Client
77−import qualified Servant.Client.Core.Internal.Request as Req
78−import qualified Servant.Client.Core.Internal.Auth as Auth
74+import qualified Servant.Client.Core.Internal.Auth as Auth
75+import qualified Servant.Client.Core.Internal.Request as Req
7976import Servant.Server
8077import Servant.Server.Experimental.Auth
8178
servant-client/test/Servant/StreamSpec.hs+17−12
@@ -26,31 +26,36 @@
2626#include "overlapping-compat.h"
2727module Servant.StreamSpec (spec) where
2828
29−import Control.Monad (replicateM_, void)
29+import Control.Monad
30+ (replicateM_, void)
3031import qualified Data.ByteString as BS
3132import Data.Proxy
3233import qualified Network.HTTP.Client as C
33−import Prelude ()
34+import Prelude ()
3435import Prelude.Compat
35−import System.IO (IOMode (ReadMode), withFile)
36−import System.IO.Unsafe (unsafePerformIO)
36+import System.IO
37+ (IOMode (ReadMode), withFile)
38+import System.IO.Unsafe
39+ (unsafePerformIO)
3740import Test.Hspec
3841import Test.QuickCheck
3942
40−import Servant.API ((:<|>) ((:<|>)), (:>), JSON,
41− NetstringFraming, NewlineFraming,
42− OctetStream, ResultStream (..),
43− StreamGenerator (..), StreamGet,
44− NoFraming)
43+import Servant.API
44+ ((:<|>) ((:<|>)), (:>), JSON, NetstringFraming,
45+ NewlineFraming, NoFraming, OctetStream, ResultStream (..),
46+ StreamGenerator (..), StreamGet)
4547import Servant.Client
46−import Servant.ClientSpec (Person (..))
48+import Servant.ClientSpec
49+ (Person (..))
4750import qualified Servant.ClientSpec as CS
4851import Servant.Server
4952
5053#if MIN_VERSION_base(4,10,0)
51−import GHC.Stats (gcdetails_mem_in_use_bytes, gc, getRTSStats)
54+import GHC.Stats
55+ (gc, gcdetails_mem_in_use_bytes, getRTSStats)
5256#else
53−import GHC.Stats (currentBytesUsed, getGCStats)
57+import GHC.Stats
58+ (currentBytesUsed, getGCStats)
5459#endif
5560
5661spec :: Spec
servant-docs/example/greet.hs+9−8
@@ -5,14 +5,15 @@
55{-# LANGUAGE OverloadedStrings #-}
66{-# LANGUAGE TypeOperators #-}
77{-# OPTIONS_GHC -fno-warn-orphans #-}
8−import Control.Lens
9−import Data.Aeson
10−import Data.Proxy
11−import Data.String.Conversions
12−import Data.Text (Text)
13−import GHC.Generics
14−import Servant.API
15−import Servant.Docs
8+import Control.Lens
9+import Data.Aeson
10+import Data.Proxy
11+import Data.String.Conversions
12+import Data.Text
13+ (Text)
14+import GHC.Generics
15+import Servant.API
16+import Servant.Docs
1617
1718-- * Example
1819
servant-docs/src/Servant/Docs.hs+2−2
@@ -56,5 +56,5 @@ module Servant.Docs
5656 , single
5757 ) where
5858
59−import Servant.Docs.Internal
60−import Servant.Docs.Internal.Pretty
59+import Servant.Docs.Internal
60+import Servant.Docs.Internal.Pretty
servant-docs/src/Servant/Docs/Internal.hs+31−19
@@ -20,33 +20,45 @@
2020#include "overlapping-compat.h"
2121module Servant.Docs.Internal where
2222
23−import Prelude ()
23+import Prelude ()
2424import Prelude.Compat
2525
2626import Control.Applicative
27−import Control.Arrow (second)
28−import Control.Lens (makeLenses, mapped, over,
29− traversed, view, (%~), (&), (.~),
30− (<>~), (^.), (|>))
27+import Control.Arrow
28+ (second)
29+import Control.Lens
30+ (makeLenses, mapped, over, traversed, view, (%~), (&), (.~),
31+ (<>~), (^.), (|>))
3132import qualified Control.Monad.Omega as Omega
3233import qualified Data.ByteString.Char8 as BSC
33−import Data.ByteString.Lazy.Char8 (ByteString)
34+import Data.ByteString.Lazy.Char8
35+ (ByteString)
3436import qualified Data.CaseInsensitive as CI
35−import Data.Foldable (fold)
36−import Data.Hashable (Hashable)
37−import Data.HashMap.Strict (HashMap)
38−import Data.List.Compat (intercalate, intersperse, sort)
39−import Data.List.NonEmpty (NonEmpty ((:|)), groupWith)
37+import Data.Foldable
38+ (fold)
39+import Data.Hashable
40+ (Hashable)
41+import Data.HashMap.Strict
42+ (HashMap)
43+import Data.List.Compat
44+ (intercalate, intersperse, sort)
45+import Data.List.NonEmpty
46+ (NonEmpty ((:|)), groupWith)
4047import qualified Data.List.NonEmpty as NE
4148import Data.Maybe
42−import Data.Monoid (All (..), Any (..), Dual (..),
43− First (..), Last (..),
44− Product (..), Sum (..))
45−import Data.Ord (comparing)
46−import Data.Proxy (Proxy (Proxy))
47−import Data.Semigroup (Semigroup (..))
48−import Data.String.Conversions (cs)
49−import Data.Text (Text, unpack)
49+import Data.Monoid
50+ (All (..), Any (..), Dual (..), First (..), Last (..),
51+ Product (..), Sum (..))
52+import Data.Ord
53+ (comparing)
54+import Data.Proxy
55+ (Proxy (Proxy))
56+import Data.Semigroup
57+ (Semigroup (..))
58+import Data.String.Conversions
59+ (cs)
60+import Data.Text
61+ (Text, unpack)
5062import GHC.Generics
5163import GHC.TypeLits
5264import Servant.API
servant-docs/src/Servant/Docs/Internal/Pretty.hs+10−6
@@ -4,16 +4,20 @@
44{-# LANGUAGE MultiParamTypeClasses #-}
55{-# LANGUAGE OverloadedStrings #-}
66{-# LANGUAGE PolyKinds #-}
7−{-# LANGUAGE TypeOperators #-}
87{-# LANGUAGE TypeFamilies #-}
8+{-# LANGUAGE TypeOperators #-}
99
1010module Servant.Docs.Internal.Pretty where
1111
12−import Data.Aeson (ToJSON(..))
13−import Data.Aeson.Encode.Pretty (encodePretty)
14−import Data.Proxy (Proxy(Proxy))
15−import Network.HTTP.Media ((//))
16−import Servant.API
12+import Data.Aeson
13+ (ToJSON (..))
14+import Data.Aeson.Encode.Pretty
15+ (encodePretty)
16+import Data.Proxy
17+ (Proxy (Proxy))
18+import Network.HTTP.Media
19+ ((//))
20+import Servant.API
1721
1822-- | PrettyJSON content type.
1923data PrettyJSON
servant-docs/test/Servant/DocsSpec.hs+2−1
@@ -20,7 +20,8 @@ import Control.Lens
2020import Data.Aeson
2121import Data.Monoid
2222import Data.Proxy
23−import Data.String.Conversions (cs)
23+import Data.String.Conversions
24+ (cs)
2425import GHC.Generics
2526import Test.Hspec
2627
servant-foreign/Setup.hs+1−1
@@ -1,2 +1,2 @@
1−import Distribution.Simple
1+import Distribution.Simple
22main = defaultMain
servant-foreign/src/Servant/Foreign.hs+3−3
@@ -51,6 +51,6 @@ module Servant.Foreign
5151 , module Servant.Foreign.Inflections
5252 ) where
5353
54−import Servant.API
55−import Servant.Foreign.Internal
56−import Servant.Foreign.Inflections
54+import Servant.API
55+import Servant.Foreign.Inflections
56+import Servant.Foreign.Internal
servant-foreign/src/Servant/Foreign/Inflections.hs+7−4
@@ -10,11 +10,14 @@ module Servant.Foreign.Inflections
1010 ) where
1111
1212
13−import Control.Lens hiding (cons)
14−import qualified Data.Char as C
13+import Control.Lens hiding
14+ (cons)
15+import qualified Data.Char as C
1516import Data.Monoid
16−import Data.Text hiding (map)
17−import Prelude hiding (head, tail)
17+import Data.Text hiding
18+ (map)
19+import Prelude hiding
20+ (head, tail)
1821import Servant.Foreign.Internal
1922
2023concatCaseL :: Getter FunctionName Text
servant-foreign/src/Servant/Foreign/Internal.hs+29−24
@@ -1,42 +1,47 @@
1−{-# LANGUAGE CPP #-}
2−{-# LANGUAGE ConstraintKinds #-}
3−{-# LANGUAGE DeriveDataTypeable #-}
4−{-# LANGUAGE FlexibleContexts #-}
5−{-# LANGUAGE FlexibleInstances #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE ConstraintKinds #-}
3+{-# LANGUAGE DeriveDataTypeable #-}
4+{-# LANGUAGE FlexibleContexts #-}
5+{-# LANGUAGE FlexibleInstances #-}
66{-# LANGUAGE GeneralizedNewtypeDeriving #-}
7−{-# LANGUAGE MultiParamTypeClasses #-}
8−{-# LANGUAGE OverloadedStrings #-}
9−{-# LANGUAGE PolyKinds #-}
10−{-# LANGUAGE ScopedTypeVariables #-}
11−{-# LANGUAGE TemplateHaskell #-}
12−{-# LANGUAGE TypeFamilies #-}
13−{-# LANGUAGE TypeOperators #-}
14−{-# LANGUAGE UndecidableInstances #-}
7+{-# LANGUAGE MultiParamTypeClasses #-}
8+{-# LANGUAGE OverloadedStrings #-}
9+{-# LANGUAGE PolyKinds #-}
10+{-# LANGUAGE ScopedTypeVariables #-}
11+{-# LANGUAGE TemplateHaskell #-}
12+{-# LANGUAGE TypeFamilies #-}
13+{-# LANGUAGE TypeOperators #-}
14+{-# LANGUAGE UndecidableInstances #-}
1515#if !MIN_VERSION_base(4,8,0)
16−{-# LANGUAGE NullaryTypeClasses #-}
16+{-# LANGUAGE NullaryTypeClasses #-}
1717#endif
1818
1919-- | Generalizes all the data needed to make code generation work with
2020-- arbitrary programming languages.
2121module Servant.Foreign.Internal where
2222
23−import Prelude ()
24−import Prelude.Compat
23+import Prelude ()
24+import Prelude.Compat
2525
26−import Control.Lens (makePrisms, makeLenses, Getter, (&), (<>~), (%~),
27− (.~))
28−import Data.Data (Data)
26+import Control.Lens
27+ (Getter, makeLenses, makePrisms, (%~), (&), (.~), (<>~))
28+import Data.Data
29+ (Data)
2930import Data.Proxy
30−import Data.Semigroup (Semigroup)
31+import Data.Semigroup
32+ (Semigroup)
3133import Data.String
3234import Data.Text
33−import Data.Typeable (Typeable)
34−import Data.Text.Encoding (decodeUtf8)
35+import Data.Text.Encoding
36+ (decodeUtf8)
37+import Data.Typeable
38+ (Typeable)
3539import GHC.TypeLits
36−import qualified Network.HTTP.Types as HTTP
40+import qualified Network.HTTP.Types as HTTP
3741import Servant.API
42+import Servant.API.Modifiers
43+ (RequiredArgument)
3844import Servant.API.TypeLevel
39−import Servant.API.Modifiers (RequiredArgument)
4045
4146newtype FunctionName = FunctionName { unFunctionName :: [Text] }
4247 deriving (Data, Show, Eq, Semigroup, Monoid, Typeable)
servant-foreign/test/Servant/ForeignSpec.hs+17−16
@@ -1,14 +1,14 @@
1−{-# LANGUAGE CPP #-}
2−{-# LANGUAGE ConstraintKinds #-}
3−{-# LANGUAGE DataKinds #-}
4−{-# LANGUAGE FlexibleContexts #-}
5−{-# LANGUAGE FlexibleInstances #-}
6−{-# LANGUAGE MultiParamTypeClasses #-}
7−{-# LANGUAGE OverloadedStrings #-}
8−{-# LANGUAGE PolyKinds #-}
9−{-# LANGUAGE ScopedTypeVariables #-}
10−{-# LANGUAGE TypeFamilies #-}
11−{-# LANGUAGE TypeOperators #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE ConstraintKinds #-}
3+{-# LANGUAGE DataKinds #-}
4+{-# LANGUAGE FlexibleContexts #-}
5+{-# LANGUAGE FlexibleInstances #-}
6+{-# LANGUAGE MultiParamTypeClasses #-}
7+{-# LANGUAGE OverloadedStrings #-}
8+{-# LANGUAGE PolyKinds #-}
9+{-# LANGUAGE ScopedTypeVariables #-}
10+{-# LANGUAGE TypeFamilies #-}
11+{-# LANGUAGE TypeOperators #-}
1212#if __GLASGOW_HASKELL__ < 709
1313{-# OPTIONS_GHC -fcontext-stack=41 #-}
1414#endif
@@ -16,12 +16,13 @@
1616
1717module Servant.ForeignSpec where
1818
19−import Data.Monoid ((<>))
20−import Data.Proxy
21−import Servant.Foreign
22−import Servant.API.Internal.Test.ComprehensiveAPI
19+import Data.Monoid
20+ ((<>))
21+import Data.Proxy
22+import Servant.API.Internal.Test.ComprehensiveAPI
23+import Servant.Foreign
2324
24−import Test.Hspec
25+import Test.Hspec
2526
2627
2728spec :: Spec
servant-server/src/Servant.hs+3−2
@@ -13,9 +13,10 @@ module Servant (
1313 throwError
1414 ) where
1515
16−import Control.Monad.Error.Class (throwError)
16+import Control.Monad.Error.Class
17+ (throwError)
1718import Data.Proxy
1819import Servant.API
19−import Servant.Server
2020import Servant.Links
21+import Servant.Server
2122import Servant.Utils.StaticFiles
servant-server/src/Servant/Server.hs+13−9
@@ -1,8 +1,8 @@
1−{-# LANGUAGE ConstraintKinds #-}
2−{-# LANGUAGE DataKinds #-}
3−{-# LANGUAGE FlexibleContexts #-}
4−{-# LANGUAGE RankNTypes #-}
5−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE ConstraintKinds #-}
2+{-# LANGUAGE DataKinds #-}
3+{-# LANGUAGE FlexibleContexts #-}
4+{-# LANGUAGE RankNTypes #-}
5+{-# LANGUAGE TypeFamilies #-}
66
77-- | This module lets you implement 'Server's for defined APIs. You'll
88-- most likely just need 'serve'.
@@ -92,10 +92,14 @@ module Servant.Server
9292
9393 ) where
9494
95−import Data.Proxy (Proxy (..))
96−import Data.Tagged (Tagged (..))
97−import Data.Text (Text)
98−import Network.Wai (Application)
95+import Data.Proxy
96+ (Proxy (..))
97+import Data.Tagged
98+ (Tagged (..))
99+import Data.Text
100+ (Text)
101+import Network.Wai
102+ (Application)
99103import Servant.Server.Internal
100104
101105
servant-server/src/Servant/Server/Experimental/Auth.hs+28−24
@@ -1,33 +1,37 @@
11{-# OPTIONS_GHC -fno-warn-orphans #-}
2−{-# LANGUAGE DeriveGeneric #-}
3−{-# LANGUAGE DeriveDataTypeable #-}
4−{-# LANGUAGE FlexibleContexts #-}
5−{-# LANGUAGE FlexibleInstances #-}
6−{-# LANGUAGE MultiParamTypeClasses #-}
7−{-# LANGUAGE PolyKinds #-}
8−{-# LANGUAGE ScopedTypeVariables #-}
9−{-# LANGUAGE TypeFamilies #-}
10−{-# LANGUAGE TypeOperators #-}
11−{-# LANGUAGE UndecidableInstances #-}
2+{-# LANGUAGE DeriveDataTypeable #-}
3+{-# LANGUAGE DeriveGeneric #-}
4+{-# LANGUAGE FlexibleContexts #-}
5+{-# LANGUAGE FlexibleInstances #-}
6+{-# LANGUAGE MultiParamTypeClasses #-}
7+{-# LANGUAGE PolyKinds #-}
8+{-# LANGUAGE ScopedTypeVariables #-}
9+{-# LANGUAGE TypeFamilies #-}
10+{-# LANGUAGE TypeOperators #-}
11+{-# LANGUAGE UndecidableInstances #-}
1212
1313module Servant.Server.Experimental.Auth where
1414
15−import Control.Monad.Trans (liftIO)
16−import Data.Proxy (Proxy (Proxy))
17−import Data.Typeable (Typeable)
18−import GHC.Generics (Generic)
19−import Network.Wai (Request)
15+import Control.Monad.Trans
16+ (liftIO)
17+import Data.Proxy
18+ (Proxy (Proxy))
19+import Data.Typeable
20+ (Typeable)
21+import GHC.Generics
22+ (Generic)
23+import Network.Wai
24+ (Request)
2025
21−import Servant ((:>))
26+import Servant
27+ ((:>))
2228import Servant.API.Experimental.Auth
23−import Servant.Server.Internal (HasContextEntry,
24− HasServer (..),
25− getContextEntry)
26−import Servant.Server.Internal.RoutingApplication (addAuthCheck,
27− delayedFailFatal,
28− DelayedIO,
29− withRequest)
30−import Servant.Server.Internal.Handler (Handler, runHandler)
29+import Servant.Server.Internal
30+ (HasContextEntry, HasServer (..), getContextEntry)
31+import Servant.Server.Internal.Handler
32+ (Handler, runHandler)
33+import Servant.Server.Internal.RoutingApplication
34+ (DelayedIO, addAuthCheck, delayedFailFatal, withRequest)
3135
3236-- * General Auth
3337
servant-server/src/Servant/Server/Internal.hs+74−76
@@ -1,27 +1,23 @@
1−{-# LANGUAGE CPP #-}
2−{-# LANGUAGE ConstraintKinds #-}
3−{-# LANGUAGE DataKinds #-}
4−{-# LANGUAGE DeriveDataTypeable #-}
5−{-# LANGUAGE FlexibleContexts #-}
6−{-# LANGUAGE FlexibleInstances #-}
7−{-# LANGUAGE MultiParamTypeClasses #-}
8−{-# LANGUAGE OverloadedStrings #-}
9−{-# LANGUAGE PolyKinds #-}
10−{-# LANGUAGE RankNTypes #-}
11−{-# LANGUAGE ScopedTypeVariables #-}
12−{-# LANGUAGE TupleSections #-}
13−{-# LANGUAGE TypeFamilies #-}
14−{-# LANGUAGE TypeOperators #-}
15−{-# LANGUAGE UndecidableInstances #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE ConstraintKinds #-}
3+{-# LANGUAGE DataKinds #-}
4+{-# LANGUAGE DeriveDataTypeable #-}
5+{-# LANGUAGE FlexibleContexts #-}
6+{-# LANGUAGE FlexibleInstances #-}
7+{-# LANGUAGE MultiParamTypeClasses #-}
8+{-# LANGUAGE OverloadedStrings #-}
9+{-# LANGUAGE PolyKinds #-}
10+{-# LANGUAGE RankNTypes #-}
11+{-# LANGUAGE ScopedTypeVariables #-}
12+{-# LANGUAGE TupleSections #-}
13+{-# LANGUAGE TypeFamilies #-}
14+{-# LANGUAGE TypeOperators #-}
15+{-# LANGUAGE UndecidableInstances #-}
1616
1717#if MIN_VERSION_base(4,9,0) && __GLASGOW_HASKELL__ >= 802
1818#define HAS_TYPE_ERROR
1919#endif
2020
21−#ifdef HAS_TYPE_ERROR
22−{-# LANGUAGE UndecidableInstances #-}
23−#endif
24−
2521#include "overlapping-compat.h"
2622
2723module Servant.Server.Internal
@@ -34,72 +30,74 @@ module Servant.Server.Internal
3430 , module Servant.Server.Internal.ServantErr
3531 ) where
3632
37−import Control.Monad (join, when)
38−import Control.Monad.Trans (liftIO)
39−import Control.Monad.Trans.Resource (runResourceT)
40−import qualified Data.ByteString as B
41−import qualified Data.ByteString.Builder as BB
42−import qualified Data.ByteString.Char8 as BC8
43−import qualified Data.ByteString.Lazy as BL
44−import Data.Maybe (fromMaybe, mapMaybe,
45− isNothing, maybeToList)
46−import Data.Either (partitionEithers)
47−import Data.Semigroup ((<>))
48−import Data.String (IsString (..))
49−import Data.String.Conversions (cs)
50−import Data.Tagged (Tagged(..), retag, untag)
51−import qualified Data.Text as T
33+import Control.Monad
34+ (join, when)
35+import Control.Monad.Trans
36+ (liftIO)
37+import Control.Monad.Trans.Resource
38+ (runResourceT)
39+import qualified Data.ByteString as B
40+import qualified Data.ByteString.Builder as BB
41+import qualified Data.ByteString.Char8 as BC8
42+import qualified Data.ByteString.Lazy as BL
43+import Data.Either
44+ (partitionEithers)
45+import Data.Maybe
46+ (fromMaybe, isNothing, mapMaybe, maybeToList)
47+import Data.Semigroup
48+ ((<>))
49+import Data.String
50+ (IsString (..))
51+import Data.String.Conversions
52+ (cs)
53+import Data.Tagged
54+ (Tagged (..), retag, untag)
55+import qualified Data.Text as T
5256import Data.Typeable
53−import GHC.TypeLits (KnownNat, KnownSymbol, natVal,
54− symbolVal)
55−import Network.HTTP.Types hiding (Header, ResponseHeaders)
56−import qualified Network.HTTP.Media as NHM
57−import Network.Socket (SockAddr)
58−import Network.Wai (Application, Request,
59− httpVersion, isSecure,
60− lazyRequestBody,
61− rawQueryString, remoteHost,
62− requestHeaders, requestMethod,
63− responseLBS, responseStream,
64− vault)
65−import Prelude ()
57+import GHC.TypeLits
58+ (KnownNat, KnownSymbol, natVal, symbolVal)
59+import qualified Network.HTTP.Media as NHM
60+import Network.HTTP.Types hiding
61+ (Header, ResponseHeaders)
62+import Network.Socket
63+ (SockAddr)
64+import Network.Wai
65+ (Application, Request, httpVersion, isSecure, lazyRequestBody,
66+ rawQueryString, remoteHost, requestHeaders, requestMethod,
67+ responseLBS, responseStream, vault)
68+import Prelude ()
6669import Prelude.Compat
67−import Web.HttpApiData (FromHttpApiData, parseHeader,
68− parseQueryParam,
69− parseUrlPieceMaybe,
70− parseUrlPieces)
71−import Servant.API ((:<|>) (..), (:>), BasicAuth, Capture',
72− CaptureAll, Verb, EmptyAPI,
73− ReflectMethod(reflectMethod),
74− IsSecure(..), Header', QueryFlag,
75− QueryParam', QueryParams, Raw,
76− RemoteHost, ReqBody', Vault,
77− WithNamedContext,
78− Description, Summary,
79− Accept(..),
80− FramingRender(..), Stream,
81− StreamGenerator(..), ToStreamGenerator(..),
82− BoundaryStrategy(..),
83− If, SBool (..), SBoolI (..))
84−import Servant.API.Modifiers (unfoldRequestArgument, RequestArgument, FoldRequired, FoldLenient)
85−import Servant.API.ContentTypes (AcceptHeader (..),
86− AllCTRender (..),
87− AllCTUnrender (..),
88− AllMime,
89− MimeRender(..),
90− canHandleAcceptH)
91−import Servant.API.ResponseHeaders (GetHeaders, Headers, getHeaders,
92− getResponse)
70+import Servant.API
71+ ((:<|>) (..), (:>), Accept (..), BasicAuth,
72+ BoundaryStrategy (..), Capture', CaptureAll, Description,
73+ EmptyAPI, FramingRender (..), Header', If, IsSecure (..),
74+ QueryFlag, QueryParam', QueryParams, Raw,
75+ ReflectMethod (reflectMethod), RemoteHost, ReqBody',
76+ SBool (..), SBoolI (..), Stream, StreamGenerator (..),
77+ Summary, ToStreamGenerator (..), Vault, Verb,
78+ WithNamedContext)
79+import Servant.API.ContentTypes
80+ (AcceptHeader (..), AllCTRender (..), AllCTUnrender (..),
81+ AllMime, MimeRender (..), canHandleAcceptH)
82+import Servant.API.Modifiers
83+ (FoldLenient, FoldRequired, RequestArgument,
84+ unfoldRequestArgument)
85+import Servant.API.ResponseHeaders
86+ (GetHeaders, Headers, getHeaders, getResponse)
87+import Web.HttpApiData
88+ (FromHttpApiData, parseHeader, parseQueryParam,
89+ parseUrlPieceMaybe, parseUrlPieces)
9390
94−import Servant.Server.Internal.Context
9591import Servant.Server.Internal.BasicAuth
92+import Servant.Server.Internal.Context
9693import Servant.Server.Internal.Handler
9794import Servant.Server.Internal.Router
9895import Servant.Server.Internal.RoutingApplication
9996import Servant.Server.Internal.ServantErr
10097
10198#ifdef HAS_TYPE_ERROR
102−import GHC.TypeLits (TypeError, ErrorMessage (..))
99+import GHC.TypeLits
100+ (ErrorMessage (..), TypeError)
103101#endif
104102
105103class HasServer api context where
@@ -762,7 +760,7 @@ instance (HasContextEntry context (NamedContext name subContext), HasServer subA
762760-- ...Maybe you haven't applied enough arguments to
763761-- ...Capture' '[] "foo"
764762-- ...
765−--
763+--
766764instance TypeError (HasServerArrowKindError arr) => HasServer ((arr :: k -> l) :> api) context
767765 where
768766 type ServerT (arr :> api) m = TypeError (HasServerArrowKindError arr)
servant-server/src/Servant/Server/Internal/BasicAuth.hs+22−13
@@ -1,22 +1,31 @@
11{-# LANGUAGE DeriveDataTypeable #-}
2−{-# LANGUAGE DeriveFunctor #-}
3−{-# LANGUAGE DeriveGeneric #-}
4−{-# LANGUAGE OverloadedStrings #-}
2+{-# LANGUAGE DeriveFunctor #-}
3+{-# LANGUAGE DeriveGeneric #-}
4+{-# LANGUAGE OverloadedStrings #-}
55
66module Servant.Server.Internal.BasicAuth where
77
8−import Control.Monad (guard)
9−import Control.Monad.Trans (liftIO)
10−import qualified Data.ByteString as BS
11−import Data.ByteString.Base64 (decodeLenient)
12−import Data.Monoid ((<>))
13−import Data.Typeable (Typeable)
14−import Data.Word8 (isSpace, toLower, _colon)
8+import Control.Monad
9+ (guard)
10+import Control.Monad.Trans
11+ (liftIO)
12+import qualified Data.ByteString as BS
13+import Data.ByteString.Base64
14+ (decodeLenient)
15+import Data.Monoid
16+ ((<>))
17+import Data.Typeable
18+ (Typeable)
19+import Data.Word8
20+ (isSpace, toLower, _colon)
1521import GHC.Generics
16−import Network.HTTP.Types (Header)
17−import Network.Wai (Request, requestHeaders)
22+import Network.HTTP.Types
23+ (Header)
24+import Network.Wai
25+ (Request, requestHeaders)
1826
19−import Servant.API.BasicAuth (BasicAuthData(BasicAuthData))
27+import Servant.API.BasicAuth
28+ (BasicAuthData (BasicAuthData))
2029import Servant.Server.Internal.RoutingApplication
2130import Servant.Server.Internal.ServantErr
2231
servant-server/src/Servant/Server/Internal/Handler.hs+19−11
@@ -5,17 +5,25 @@
55{-# LANGUAGE TypeFamilies #-}
66module Servant.Server.Internal.Handler where
77
8−import Prelude ()
9−import Prelude.Compat
10−
11−import Control.Monad.Base (MonadBase (..))
12−import Control.Monad.Catch (MonadCatch, MonadThrow)
13−import Control.Monad.Error.Class (MonadError)
14−import Control.Monad.IO.Class (MonadIO)
15−import Control.Monad.Trans.Control (MonadBaseControl (..))
16−import Control.Monad.Trans.Except (ExceptT, runExceptT)
17−import GHC.Generics (Generic)
18−import Servant.Server.Internal.ServantErr (ServantErr)
8+import Prelude ()
9+import Prelude.Compat
10+
11+import Control.Monad.Base
12+ (MonadBase (..))
13+import Control.Monad.Catch
14+ (MonadCatch, MonadThrow)
15+import Control.Monad.Error.Class
16+ (MonadError)
17+import Control.Monad.IO.Class
18+ (MonadIO)
19+import Control.Monad.Trans.Control
20+ (MonadBaseControl (..))
21+import Control.Monad.Trans.Except
22+ (ExceptT, runExceptT)
23+import GHC.Generics
24+ (Generic)
25+import Servant.Server.Internal.ServantErr
26+ (ServantErr)
1927
2028newtype Handler a = Handler { runHandler' :: ExceptT ServantErr IO a }
2129 deriving
servant-server/src/Servant/Server/Internal/Router.hs+9−6
@@ -1,15 +1,18 @@
1−{-# LANGUAGE DeriveFunctor #-}
2−{-# LANGUAGE CPP #-}
3−{-# LANGUAGE GADTs #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DeriveFunctor #-}
3+{-# LANGUAGE GADTs #-}
44{-# LANGUAGE OverloadedStrings #-}
55module Servant.Server.Internal.Router where
66
7−import Data.Map (Map)
7+import Data.Map
8+ (Map)
89import qualified Data.Map as M
910import Data.Monoid
10−import Data.Text (Text)
11+import Data.Text
12+ (Text)
1113import qualified Data.Text as T
12−import Network.Wai (Response, pathInfo)
14+import Network.Wai
15+ (Response, pathInfo)
1316import Servant.Server.Internal.RoutingApplication
1417import Servant.Server.Internal.ServantErr
1518
servant-server/src/Servant/Server/Internal/RoutingApplication.hs+19−10
@@ -10,16 +10,25 @@
1010{-# LANGUAGE UndecidableInstances #-}
1111module Servant.Server.Internal.RoutingApplication where
1212
13−import Control.Monad (ap, liftM)
14−import Control.Monad.Base (MonadBase (..))
15−import Control.Monad.Catch (MonadThrow (..))
16−import Control.Monad.Reader (MonadReader (..), ReaderT (..), runReaderT)
17−import Control.Monad.Trans (MonadIO (..), MonadTrans (..))
18−import Control.Monad.Trans.Control (ComposeSt, MonadBaseControl (..), MonadTransControl (..),
19− defaultLiftBaseWith, defaultRestoreM)
20−import Control.Monad.Trans.Resource (MonadResource (..), ResourceT, runResourceT, transResourceT, withInternalState, runInternalState)
21−import Network.Wai (Application, Request, Response, ResponseReceived)
22−import Prelude ()
13+import Control.Monad
14+ (ap, liftM)
15+import Control.Monad.Base
16+ (MonadBase (..))
17+import Control.Monad.Catch
18+ (MonadThrow (..))
19+import Control.Monad.Reader
20+ (MonadReader (..), ReaderT (..), runReaderT)
21+import Control.Monad.Trans
22+ (MonadIO (..), MonadTrans (..))
23+import Control.Monad.Trans.Control
24+ (ComposeSt, MonadBaseControl (..), MonadTransControl (..),
25+ defaultLiftBaseWith, defaultRestoreM)
26+import Control.Monad.Trans.Resource
27+ (MonadResource (..), ResourceT, runInternalState,
28+ runResourceT, transResourceT, withInternalState)
29+import Network.Wai
30+ (Application, Request, Response, ResponseReceived)
31+import Prelude ()
2332import Prelude.Compat
2433import Servant.Server.Internal.Handler
2534import Servant.Server.Internal.ServantErr
servant-server/src/Servant/Server/Internal/ServantErr.hs+8−5
@@ -1,14 +1,17 @@
1−{-# LANGUAGE OverloadedStrings #-}
2−{-# LANGUAGE RecordWildCards #-}
31{-# LANGUAGE DeriveDataTypeable #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+{-# LANGUAGE RecordWildCards #-}
44module Servant.Server.Internal.ServantErr where
55
6−import Control.Exception (Exception)
6+import Control.Exception
7+ (Exception)
78import qualified Data.ByteString.Char8 as BS
89import qualified Data.ByteString.Lazy as LBS
9−import Data.Typeable (Typeable)
10+import Data.Typeable
11+ (Typeable)
1012import qualified Network.HTTP.Types as HTTP
11−import Network.Wai (Response, responseLBS)
13+import Network.Wai
14+ (Response, responseLBS)
1215
1316data ServantErr = ServantErr { errHTTPCode :: Int
1417 , errReasonPhrase :: String
servant-server/src/Servant/Utils/StaticFiles.hs+12−6
@@ -15,15 +15,21 @@ module Servant.Utils.StaticFiles
1515 serveDirectory
1616 ) where
1717
18−import Data.ByteString (ByteString)
18+import Data.ByteString
19+ (ByteString)
1920import Network.Wai.Application.Static
20−import Servant.API.Raw (Raw)
21−import Servant.Server (ServerT, Tagged (..))
22−import System.FilePath (addTrailingPathSeparator)
21+import Servant.API.Raw
22+ (Raw)
23+import Servant.Server
24+ (ServerT, Tagged (..))
25+import System.FilePath
26+ (addTrailingPathSeparator)
2327#if !MIN_VERSION_wai_app_static(3,1,0)
24−import Filesystem.Path.CurrentOS (decodeString)
28+import Filesystem.Path.CurrentOS
29+ (decodeString)
2530#endif
26−import WaiAppStatic.Storage.Filesystem (ETagLookup)
31+import WaiAppStatic.Storage.Filesystem
32+ (ETagLookup)
2733
2834-- | Serve anything under the specified directory as a 'Raw' endpoint.
2935--
servant-server/test/Servant/ArbitraryMonadServerSpec.hs+4−3
@@ -9,9 +9,10 @@ import Data.Proxy
99import Servant.API
1010import Servant.Server
1111
12−import Test.Hspec (Spec, describe, it)
13−import Test.Hspec.Wai (get, matchStatus, post,
14− shouldRespondWith, with)
12+import Test.Hspec
13+ (Spec, describe, it)
14+import Test.Hspec.Wai
15+ (get, matchStatus, post, shouldRespondWith, with)
1516
1617spec :: Spec
1718spec = describe "Arbitrary monad server" $ do
servant-server/test/Servant/HoistSpec.hs+4−3
@@ -1,10 +1,11 @@
1−{-# LANGUAGE DataKinds #-}
1+{-# LANGUAGE DataKinds #-}
22{-# LANGUAGE TypeOperators #-}
33module Servant.HoistSpec where
44
5−import Test.Hspec (Spec)
5+import Test.Hspec
6+ (Spec)
67
7−import Servant
8+import Servant
89
910-------------------------------------------------------------------------------
1011-- https://github.com/haskell-servant/servant/issues/734
servant-server/test/Servant/Server/ErrorSpec.hs+11−7
@@ -6,16 +6,20 @@
66{-# OPTIONS_GHC -fno-warn-orphans #-}
77module Servant.Server.ErrorSpec (spec) where
88
9−import Control.Monad (when)
10−import Data.Aeson (encode)
9+import Control.Monad
10+ (when)
11+import Data.Aeson
12+ (encode)
1113import qualified Data.ByteString.Char8 as BC
1214import qualified Data.ByteString.Lazy.Char8 as BCL
13−import Data.Monoid ((<>))
15+import Data.Monoid
16+ ((<>))
1417import Data.Proxy
15−import Network.HTTP.Types (hAccept, hAuthorization,
16− hContentType, methodGet,
17− methodPost, methodPut)
18−import Safe (readMay)
18+import Network.HTTP.Types
19+ (hAccept, hAuthorization, hContentType, methodGet, methodPost,
20+ methodPut)
21+import Safe
22+ (readMay)
1923import Test.Hspec
2024import Test.Hspec.Wai
2125
servant-server/test/Servant/Server/Internal/ContextSpec.hs+6−3
@@ -2,9 +2,12 @@
22{-# OPTIONS_GHC -fdefer-type-errors -Wwarn #-}
33module Servant.Server.Internal.ContextSpec (spec) where
44
5−import Data.Proxy (Proxy (..))
6−import Test.Hspec (Spec, describe, it, shouldBe, context)
7−import Test.ShouldNotTypecheck (shouldNotTypecheck)
5+import Data.Proxy
6+ (Proxy (..))
7+import Test.Hspec
8+ (Spec, context, describe, it, shouldBe)
9+import Test.ShouldNotTypecheck
10+ (shouldNotTypecheck)
811
912import Servant.API
1013import Servant.Server.Internal.Context
servant-server/test/Servant/Server/Internal/RoutingApplicationSpec.hs+31−25
@@ -1,31 +1,37 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE FlexibleInstances #-}
3−{-# LANGUAGE KindSignatures #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE FlexibleInstances #-}
3+{-# LANGUAGE KindSignatures #-}
44{-# LANGUAGE MultiParamTypeClasses #-}
5−{-# LANGUAGE OverloadedStrings #-}
6−{-# LANGUAGE ScopedTypeVariables #-}
7−{-# LANGUAGE TypeFamilies #-}
8−{-# LANGUAGE TypeOperators #-}
5+{-# LANGUAGE OverloadedStrings #-}
6+{-# LANGUAGE ScopedTypeVariables #-}
7+{-# LANGUAGE TypeFamilies #-}
8+{-# LANGUAGE TypeOperators #-}
99module Servant.Server.Internal.RoutingApplicationSpec (spec) where
1010
11−import Prelude ()
12−import Prelude.Compat
13−
14−import Control.Exception hiding (Handler)
15−import Control.Monad.Trans.Resource (register)
16−import Control.Monad.IO.Class
17−import Data.IORef
18−import Data.Proxy
19−import GHC.TypeLits (Symbol, KnownSymbol, symbolVal)
20−import Servant
21−import Servant.Server.Internal.RoutingApplication
22−import Network.Wai (defaultRequest)
23−import Test.Hspec
24−import Test.Hspec.Wai (request, shouldRespondWith, with)
25−
26−import qualified Data.Text as T
27−
28−import System.IO.Unsafe (unsafePerformIO)
11+import Prelude ()
12+import Prelude.Compat
13+
14+import Control.Exception hiding
15+ (Handler)
16+import Control.Monad.IO.Class
17+import Control.Monad.Trans.Resource
18+ (register)
19+import Data.IORef
20+import Data.Proxy
21+import GHC.TypeLits
22+ (KnownSymbol, Symbol, symbolVal)
23+import Network.Wai
24+ (defaultRequest)
25+import Servant
26+import Servant.Server.Internal.RoutingApplication
27+import Test.Hspec
28+import Test.Hspec.Wai
29+ (request, shouldRespondWith, with)
30+
31+import qualified Data.Text as T
32+
33+import System.IO.Unsafe
34+ (unsafePerformIO)
2935
3036data TestResource x
3137 = TestResourceNone
servant-server/test/Servant/Server/RouterSpec.hs+18−11
@@ -1,20 +1,27 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE FlexibleContexts #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE FlexibleContexts #-}
33{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TypeOperators #-}
4+{-# LANGUAGE TypeOperators #-}
55module Servant.Server.RouterSpec (spec) where
66
7−import Control.Monad (unless)
8−import Data.Proxy (Proxy(..))
9−import Data.Text (unpack)
10−import Network.HTTP.Types (Status (..))
11−import Network.Wai (responseBuilder)
12−import Network.Wai.Internal (Response (ResponseBuilder))
13−import Test.Hspec
14−import Test.Hspec.Wai (get, shouldRespondWith, with)
7+import Control.Monad
8+ (unless)
9+import Data.Proxy
10+ (Proxy (..))
11+import Data.Text
12+ (unpack)
13+import Network.HTTP.Types
14+ (Status (..))
15+import Network.Wai
16+ (responseBuilder)
17+import Network.Wai.Internal
18+ (Response (ResponseBuilder))
1519import Servant.API
1620import Servant.Server
1721import Servant.Server.Internal
22+import Test.Hspec
23+import Test.Hspec.Wai
24+ (get, shouldRespondWith, with)
1825
1926spec :: Spec
2027spec = describe "Servant.Server.Internal.Router" $ do
servant-server/test/Servant/Server/StreamingSpec.hs+8−7
@@ -1,18 +1,19 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE OverloadedStrings #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE OverloadedStrings #-}
33{-# LANGUAGE ScopedTypeVariables #-}
4−{-# LANGUAGE TupleSections #-}
5−{-# LANGUAGE TypeOperators #-}
4+{-# LANGUAGE TupleSections #-}
5+{-# LANGUAGE TypeOperators #-}
66
77-- | This module tests whether streaming works from client to server
88-- with a server implemented with servant-server.
99module Servant.Server.StreamingSpec where
1010
1111import Control.Concurrent
12−import Control.Exception hiding (Handler)
12+import Control.Exception hiding
13+ (Handler)
1314import Control.Monad.IO.Class
14−import qualified Data.ByteString as Strict
15−import qualified Data.ByteString.Lazy as Lazy
15+import qualified Data.ByteString as Strict
16+import qualified Data.ByteString.Lazy as Lazy
1617import Network.HTTP.Types
1718import Network.Wai
1819import Network.Wai.Internal
servant-server/test/Servant/Server/UsingContextSpec.hs+4−3
@@ -1,12 +1,13 @@
1−{-# LANGUAGE DataKinds #-}
1+{-# LANGUAGE DataKinds #-}
22{-# LANGUAGE FlexibleInstances #-}
33{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TypeOperators #-}
4+{-# LANGUAGE TypeOperators #-}
55
66module Servant.Server.UsingContextSpec where
77
88import Network.Wai
9−import Test.Hspec (Spec, describe, it)
9+import Test.Hspec
10+ (Spec, describe, it)
1011import Test.Hspec.Wai
1112
1213import Servant
servant-server/test/Servant/Server/UsingContextSpec/TestCombinators.hs+9−9
@@ -1,13 +1,13 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−{-# LANGUAGE FlexibleInstances #-}
4−{-# LANGUAGE KindSignatures #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE FlexibleContexts #-}
3+{-# LANGUAGE FlexibleInstances #-}
4+{-# LANGUAGE KindSignatures #-}
55{-# LANGUAGE MultiParamTypeClasses #-}
6−{-# LANGUAGE PolyKinds #-}
7−{-# LANGUAGE ScopedTypeVariables #-}
8−{-# LANGUAGE TypeFamilies #-}
9−{-# LANGUAGE TypeOperators #-}
10−{-# LANGUAGE UndecidableInstances #-}
6+{-# LANGUAGE PolyKinds #-}
7+{-# LANGUAGE ScopedTypeVariables #-}
8+{-# LANGUAGE TypeFamilies #-}
9+{-# LANGUAGE TypeOperators #-}
10+{-# LANGUAGE UndecidableInstances #-}
1111
1212-- | These are custom combinators for Servant.Server.UsingContextSpec.
1313--
servant-server/test/Servant/Utils/StaticFilesSpec.hs+23−14
@@ -5,20 +5,29 @@
55{-# OPTIONS_GHC -fno-warn-orphans #-}
66module Servant.Utils.StaticFilesSpec where
77
8−import Control.Exception (bracket)
9−import Data.Proxy (Proxy (Proxy))
10−import Network.Wai (Application)
11−import System.Directory (createDirectory,
12− getCurrentDirectory,
13− setCurrentDirectory)
14−import System.IO.Temp (withSystemTempDirectory)
15−import Test.Hspec (Spec, around_, describe, it)
16−import Test.Hspec.Wai (get, shouldRespondWith, with)
17−
18−import Servant.API ((:<|>) ((:<|>)), Capture, Get, Raw, (:>), JSON)
19−import Servant.Server (Server, serve)
20−import Servant.ServerSpec (Person (Person))
21−import Servant.Utils.StaticFiles (serveDirectoryFileServer)
8+import Control.Exception
9+ (bracket)
10+import Data.Proxy
11+ (Proxy (Proxy))
12+import Network.Wai
13+ (Application)
14+import System.Directory
15+ (createDirectory, getCurrentDirectory, setCurrentDirectory)
16+import System.IO.Temp
17+ (withSystemTempDirectory)
18+import Test.Hspec
19+ (Spec, around_, describe, it)
20+import Test.Hspec.Wai
21+ (get, shouldRespondWith, with)
22+
23+import Servant.API
24+ ((:<|>) ((:<|>)), (:>), Capture, Get, JSON, Raw)
25+import Servant.Server
26+ (Server, serve)
27+import Servant.ServerSpec
28+ (Person (Person))
29+import Servant.Utils.StaticFiles
30+ (serveDirectoryFileServer)
2231
2332type Api =
2433 "dummy_api" :> Capture "person_name" String :> Get '[JSON] Person
servant-server/test/doctests.hs+5−3
@@ -13,9 +13,11 @@
1313-----------------------------------------------------------------------------
1414module Main where
1515
16−import Build_doctests (flags, pkgs, module_sources)
17−import Data.Foldable (traverse_)
18−import Test.DocTest
16+import Build_doctests
17+ (flags, module_sources, pkgs)
18+import Data.Foldable
19+ (traverse_)
20+import Test.DocTest
1921
2022main :: IO ()
2123main = do
servant/src/Servant/API.hs+3−3
@@ -114,9 +114,9 @@ import Servant.API.ResponseHeaders
114114 ResponseHeader (..), addHeader, getHeadersHList, getResponse,
115115 noHeader)
116116import Servant.API.Stream
117− (BoundaryStrategy (..), FromResultStream (..),
118− ByteStringParser (..), FramingRender (..),
119− FramingUnrender (..), NetstringFraming, NewlineFraming,
117+ (BoundaryStrategy (..), ByteStringParser (..),
118+ FramingRender (..), FramingUnrender (..),
119+ FromResultStream (..), NetstringFraming, NewlineFraming,
120120 NoFraming, ResultStream (..), Stream, StreamGenerator (..),
121121 StreamGet, StreamPost, ToStreamGenerator (..))
122122import Servant.API.Sub
servant/src/Servant/API/Stream.hs+2−2
@@ -22,12 +22,12 @@ module Servant.API.Stream (
2222 StreamGenerator (..),
2323 ToStreamGenerator (..),
2424 ResultStream (..),
25− FromResultStream (..),
25+ FromResultStream (..),
2626 -- * Framing
2727 FramingRender (..),
2828 FramingUnrender (..),
2929 BoundaryStrategy (..),
30− ByteStringParser (..),
30+ ByteStringParser (..),
3131 -- ** Strategies
3232 NoFraming,
3333 NewlineFraming,
servant/src/Servant/Utils/Links.hs+1−1
@@ -3,4 +3,4 @@ module Servant.Utils.Links
33 ( module Servant.Links )
44 where
55
6−import Servant.Links
6+import Servant.Links
servant/test/Servant/API/ContentTypesSpec.hs+21−14
@@ -12,25 +12,32 @@ import Prelude ()
1212import Prelude.Compat
1313
1414import Data.Aeson.Compat
15−import Data.ByteString.Char8 (ByteString, append, pack)
16−import qualified Data.ByteString.Lazy as BSL
17−import qualified Data.ByteString.Lazy.Char8 as BSL8
15+import Data.ByteString.Char8
16+ (ByteString, append, pack)
17+import qualified Data.ByteString.Lazy as BSL
18+import qualified Data.ByteString.Lazy.Char8 as BSL8
1819import Data.Either
19−import Data.Function (on)
20−import Data.List (maximumBy)
21−import qualified Data.List.NonEmpty as NE
22−import Data.Maybe (fromJust, isJust, isNothing)
20+import Data.Function
21+ (on)
22+import Data.List
23+ (maximumBy)
24+import qualified Data.List.NonEmpty as NE
25+import Data.Maybe
26+ (fromJust, isJust, isNothing)
2327import Data.Proxy
24−import Data.String (IsString (..))
25−import Data.String.Conversions (cs)
26−import qualified Data.Text as TextS
27−import qualified Data.Text.Encoding as TextSE
28−import qualified Data.Text.Lazy as TextL
28+import Data.String
29+ (IsString (..))
30+import Data.String.Conversions
31+ (cs)
32+import qualified Data.Text as TextS
33+import qualified Data.Text.Encoding as TextSE
34+import qualified Data.Text.Lazy as TextL
2935import GHC.Generics
3036import Test.Hspec
3137import Test.QuickCheck
32−import Text.Read (readMaybe)
33−import "quickcheck-instances" Test.QuickCheck.Instances ()
38+import "quickcheck-instances" Test.QuickCheck.Instances ()
39+import Text.Read
40+ (readMaybe)
3441
3542import Servant.API.ContentTypes
3643
servant/test/Servant/API/ResponseHeadersSpec.hs+4−4
@@ -1,11 +1,11 @@
1−{-# LANGUAGE DataKinds #-}
1+{-# LANGUAGE DataKinds #-}
22{-# LANGUAGE OverloadedStrings #-}
33module Servant.API.ResponseHeadersSpec where
44
5−import Test.Hspec
5+import Test.Hspec
66
7−import Servant.API.Header
8−import Servant.API.ResponseHeaders
7+import Servant.API.Header
8+import Servant.API.ResponseHeaders
99
1010spec :: Spec
1111spec = describe "Servant.API.ResponseHeaders" $ do
servant/test/Servant/LinksSpec.hs+13−10
@@ -1,22 +1,25 @@
1−{-# LANGUAGE CPP #-}
2−{-# LANGUAGE ConstraintKinds #-}
3−{-# LANGUAGE DataKinds #-}
4−{-# LANGUAGE PolyKinds #-}
5−{-# LANGUAGE TypeOperators #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE ConstraintKinds #-}
3+{-# LANGUAGE DataKinds #-}
4+{-# LANGUAGE PolyKinds #-}
65{-# LANGUAGE ScopedTypeVariables #-}
6+{-# LANGUAGE TypeOperators #-}
77#if __GLASGOW_HASKELL__ < 709
88{-# OPTIONS_GHC -fcontext-stack=41 #-}
99#endif
1010module Servant.LinksSpec where
1111
12−import Data.Proxy (Proxy (..))
13−import Test.Hspec (Expectation, Spec, describe, it,
14− shouldBe)
15−import Data.String (fromString)
12+import Data.Proxy
13+ (Proxy (..))
14+import Data.String
15+ (fromString)
16+import Test.Hspec
17+ (Expectation, Spec, describe, it, shouldBe)
1618
1719import Servant.API
20+import Servant.API.Internal.Test.ComprehensiveAPI
21+ (comprehensiveAPIWithoutRaw)
1822import Servant.Links
19−import Servant.API.Internal.Test.ComprehensiveAPI (comprehensiveAPIWithoutRaw)
2023
2124type TestApi =
2225 -- Capture and query params
servant/test/doctests.hs+5−3
@@ -13,9 +13,11 @@
1313-----------------------------------------------------------------------------
1414module Main where
1515
16−import Build_doctests (flags, pkgs, module_sources)
17−import Data.Foldable (traverse_)
18−import Test.DocTest
16+import Build_doctests
17+ (flags, module_sources, pkgs)
18+import Data.Foldable
19+ (traverse_)
20+import Test.DocTest
1921
2022main :: IO ()
2123main = do