@@ -1,27 +1,23 @@
1−{-# LANGUAGE CPP #-}
1+{-# LANGUAGE CPP #-}
2−{-# LANGUAGE ConstraintKinds #-}
2+{-# LANGUAGE ConstraintKinds #-}
3−{-# LANGUAGE DataKinds #-}
3+{-# LANGUAGE DataKinds #-}
4−{-# LANGUAGE DeriveDataTypeable #-}
4+{-# LANGUAGE DeriveDataTypeable #-}
5−{-# LANGUAGE FlexibleContexts #-}
5+{-# LANGUAGE FlexibleContexts #-}
6−{-# LANGUAGE FlexibleInstances #-}
6+{-# LANGUAGE FlexibleInstances #-}
7−{-# LANGUAGE MultiParamTypeClasses #-}
7+{-# LANGUAGE MultiParamTypeClasses #-}
8−{-# LANGUAGE OverloadedStrings #-}
8+{-# LANGUAGE OverloadedStrings #-}
9−{-# LANGUAGE PolyKinds #-}
9+{-# LANGUAGE PolyKinds #-}
10−{-# LANGUAGE RankNTypes #-}
10+{-# LANGUAGE RankNTypes #-}
11−{-# LANGUAGE ScopedTypeVariables #-}
11+{-# LANGUAGE ScopedTypeVariables #-}
12−{-# LANGUAGE TupleSections #-}
12+{-# LANGUAGE TupleSections #-}
13−{-# LANGUAGE TypeFamilies #-}
13+{-# LANGUAGE TypeFamilies #-}
14−{-# LANGUAGE TypeOperators #-}
14+{-# LANGUAGE TypeOperators #-}
15−{-# LANGUAGE UndecidableInstances #-}
15+{-# LANGUAGE UndecidableInstances #-}
17#if MIN_VERSION_base(4,9,0) && __GLASGOW_HASKELL__ >= 802
17#if MIN_VERSION_base(4,9,0) && __GLASGOW_HASKELL__ >= 802
18#define HAS_TYPE_ERROR
18#define HAS_TYPE_ERROR
22−{-# LANGUAGE UndecidableInstances #-}
25#include "overlapping-compat.h"
21#include "overlapping-compat.h"
27module Servant.Server.Internal
23module Servant.Server.Internal
@@ -34,72 +30,74 @@ module Servant.Server.Internal
34 , module Servant.Server.Internal.ServantErr
30 , module Servant.Server.Internal.ServantErr
37−import Control.Monad (join, when)
33+import Control.Monad
38−import Control.Monad.Trans (liftIO)
35+import Control.Monad.Trans
39−import Control.Monad.Trans.Resource (runResourceT)
37+import Control.Monad.Trans.Resource
40−import qualified Data.ByteString as B
39+import qualified Data.ByteString as B
41−import qualified Data.ByteString.Builder as BB
40+import qualified Data.ByteString.Builder as BB
42−import qualified Data.ByteString.Char8 as BC8
41+import qualified Data.ByteString.Char8 as BC8
43−import qualified Data.ByteString.Lazy as BL
42+import qualified Data.ByteString.Lazy as BL
44−import Data.Maybe (fromMaybe, mapMaybe,
43+import Data.Either
45− isNothing, maybeToList)
46+ (fromMaybe, isNothing, mapMaybe, maybeToList)
46−import Data.Either (partitionEithers)
47−import Data.Semigroup ((<>))
47+import Data.Semigroup
48−import Data.String (IsString (..))
49+import Data.String
49−import Data.String.Conversions (cs)
51+import Data.String.Conversions
50−import Data.Tagged (Tagged(..), retag, untag)
53+import Data.Tagged
54+ (Tagged (..), retag, untag)
51−import qualified Data.Text as T
55+import qualified Data.Text as T
52import Data.Typeable
56import Data.Typeable
53−import GHC.TypeLits (KnownNat, KnownSymbol, natVal,
58+ (KnownNat, KnownSymbol, natVal, symbolVal)
54− symbolVal)
59+import qualified Network.HTTP.Media as NHM
60+import Network.HTTP.Types hiding
55−import Network.HTTP.Types hiding (Header, ResponseHeaders)
61+ (Header, ResponseHeaders)
56−import qualified Network.HTTP.Media as NHM
57−import Network.Socket (SockAddr)
62+import Network.Socket
58−import Network.Wai (Application, Request,
64+import Network.Wai
59− httpVersion, isSecure,
65+ (Application, Request, httpVersion, isSecure, lazyRequestBody,
61− rawQueryString, remoteHost,
62− requestHeaders, requestMethod,
66+ rawQueryString, remoteHost, requestHeaders, requestMethod,
63− responseLBS, responseStream,
67+ responseLBS, responseStream, vault)
65−import Prelude ()
68+import Prelude ()
66import Prelude.Compat
69import Prelude.Compat
67−import Web.HttpApiData (FromHttpApiData, parseHeader,
71−import Servant.API ((:<|>) (..), (:>), BasicAuth, Capture',
70+import Servant.API
72− CaptureAll, Verb, EmptyAPI,
71+ ((:<|>) (..), (:>), Accept (..), BasicAuth,
73− ReflectMethod(reflectMethod),
72+ BoundaryStrategy (..), Capture', CaptureAll, Description,
74− IsSecure(..), Header', QueryFlag,
73+ EmptyAPI, FramingRender (..), Header', If, IsSecure (..),
75− QueryParam', QueryParams, Raw,
74+ QueryFlag, QueryParam', QueryParams, Raw,
76− RemoteHost, ReqBody', Vault,
75+ ReflectMethod (reflectMethod), RemoteHost, ReqBody',
77− WithNamedContext,
76+ SBool (..), SBoolI (..), Stream, StreamGenerator (..),
78− Description, Summary,
80− FramingRender(..), Stream,
81− StreamGenerator(..), ToStreamGenerator(..),
77+ Summary, ToStreamGenerator (..), Vault, Verb,
82− BoundaryStrategy(..),
78+ WithNamedContext)
83− If, SBool (..), SBoolI (..))
84−import Servant.API.Modifiers (unfoldRequestArgument, RequestArgument, FoldRequired, FoldLenient)
85−import Servant.API.ContentTypes (AcceptHeader (..),
79+import Servant.API.ContentTypes
87− AllCTUnrender (..),
80+ (AcceptHeader (..), AllCTRender (..), AllCTUnrender (..),
90− canHandleAcceptH)
81+ AllMime, MimeRender (..), canHandleAcceptH)
82+import Servant.API.Modifiers
83+ (FoldLenient, FoldRequired, RequestArgument,
84+ unfoldRequestArgument)
85+import Servant.API.ResponseHeaders
91−import Servant.API.ResponseHeaders (GetHeaders, Headers, getHeaders,
86+ (GetHeaders, Headers, getHeaders, getResponse)
92− getResponse)
87+import Web.HttpApiData
88+ (FromHttpApiData, parseHeader, parseQueryParam,
89+ parseUrlPieceMaybe, parseUrlPieces)
94−import Servant.Server.Internal.Context
95import Servant.Server.Internal.BasicAuth
91import Servant.Server.Internal.BasicAuth
92+import Servant.Server.Internal.Context
96import Servant.Server.Internal.Handler
93import Servant.Server.Internal.Handler
97import Servant.Server.Internal.Router
94import Servant.Server.Internal.Router
98import Servant.Server.Internal.RoutingApplication
95import Servant.Server.Internal.RoutingApplication
99import Servant.Server.Internal.ServantErr
96import Servant.Server.Internal.ServantErr
101#ifdef HAS_TYPE_ERROR
98#ifdef HAS_TYPE_ERROR
102−import GHC.TypeLits (TypeError, ErrorMessage (..))
99+import GHC.TypeLits
100+ (ErrorMessage (..), TypeError)
105class HasServer api context where
103class HasServer api context where
@@ -762,7 +760,7 @@ instance (HasContextEntry context (NamedContext name subContext), HasServer subA
762-- ...Maybe you haven't applied enough arguments to
760-- ...Maybe you haven't applied enough arguments to
763-- ...Capture' '[] "foo"
761-- ...Capture' '[] "foo"
766instance TypeError (HasServerArrowKindError arr) => HasServer ((arr :: k -> l) :> api) context
764instance TypeError (HasServerArrowKindError arr) => HasServer ((arr :: k -> l) :> api) context
768 type ServerT (arr :> api) m = TypeError (HasServerArrowKindError arr)
766 type ServerT (arr :> api) m = TypeError (HasServerArrowKindError arr)