1
- {-# LANGUAGE CPP #-}
2
- {-# LANGUAGE ConstraintKinds #-}
3
- {-# LANGUAGE DataKinds #-}
4
- {-# LANGUAGE DeriveGeneric #-}
5
- {-# LANGUAGE FlexibleContexts #-}
6
- {-# LANGUAGE FlexibleInstances #-}
7
- {-# LANGUAGE GADTs #-}
8
- {-# LANGUAGE MultiParamTypeClasses #-}
9
- {-# LANGUAGE OverloadedStrings #-}
10
- {-# LANGUAGE PolyKinds #-}
11
- {-# LANGUAGE ScopedTypeVariables #-}
12
- {-# LANGUAGE TypeApplications #-}
13
- {-# LANGUAGE TypeFamilies #-}
14
- {-# LANGUAGE TypeOperators #-}
15
- {-# LANGUAGE UndecidableInstances #-}
1
+ {-# LANGUAGE CPP #-}
2
+ {-# LANGUAGE ConstraintKinds #-}
3
+ {-# LANGUAGE DataKinds #-}
4
+ {-# LANGUAGE DeriveGeneric #-}
5
+ {-# LANGUAGE FlexibleContexts #-}
6
+ {-# LANGUAGE FlexibleInstances #-}
7
+ {-# LANGUAGE GADTs #-}
8
+ {-# LANGUAGE MultiParamTypeClasses #-}
9
+ {-# LANGUAGE OverloadedStrings #-}
10
+ {-# LANGUAGE PolyKinds #-}
11
+ {-# LANGUAGE ScopedTypeVariables #-}
12
+ {-# LANGUAGE TypeApplications #-}
13
+ {-# LANGUAGE TypeFamilies #-}
14
+ {-# LANGUAGE TypeOperators #-}
15
+ {-# LANGUAGE UndecidableInstances #-}
16
16
{-# OPTIONS_GHC -freduction-depth=100 #-}
17
17
{-# OPTIONS_GHC -fno-warn-orphans #-}
18
18
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
@@ -27,20 +27,22 @@ import Control.Concurrent
27
27
import Control.Monad.Error.Class
28
28
(throwError )
29
29
import Data.Aeson
30
- import qualified Data.ByteString.Lazy as LazyByteString
30
+ import qualified Data.ByteString.Lazy as LazyByteString
31
31
import Data.Char
32
32
(chr , isPrint )
33
33
import Data.Monoid ()
34
34
import Data.Proxy
35
- import Data.Text (Text )
36
- import qualified Data.Text as Text
37
- import Data.Text.Encoding (encodeUtf8 , decodeUtf8 )
35
+ import Data.Text
36
+ (Text )
37
+ import qualified Data.Text as Text
38
+ import Data.Text.Encoding
39
+ (decodeUtf8 , encodeUtf8 )
38
40
import GHC.Generics
39
41
(Generic )
40
- import qualified Network.HTTP.Client as C
41
- import qualified Network.HTTP.Types as HTTP
42
+ import qualified Network.HTTP.Client as C
43
+ import qualified Network.HTTP.Types as HTTP
42
44
import Network.Socket
43
- import qualified Network.Wai as Wai
45
+ import qualified Network.Wai as Wai
44
46
import Network.Wai.Handler.Warp
45
47
import System.IO.Unsafe
46
48
(unsafePerformIO )
@@ -50,15 +52,14 @@ import Web.FormUrlEncoded
50
52
51
53
import Servant.API
52
54
((:<|>) ((:<|>) ), (:>) , AuthProtect , BasicAuth ,
53
- BasicAuthData (.. ), Capture , CaptureAll ,
54
- DeleteNoContent , EmptyAPI , FormUrlEncoded , Get , Header ,
55
- Headers , JSON , MimeRender (mimeRender ),
56
- MimeUnrender (mimeUnrender ), NoContent (NoContent ), PlainText ,
57
- Post , QueryFlag , QueryParam , QueryParams , Raw , ReqBody ,
58
- StdMethod (GET ), Union , UVerb , WithStatus (WithStatus ),
59
- addHeader )
55
+ BasicAuthData (.. ), Capture , CaptureAll , DeleteNoContent ,
56
+ EmptyAPI , FormUrlEncoded , Fragment , Get , Header , Headers ,
57
+ JSON , MimeRender (mimeRender ), MimeUnrender (mimeUnrender ),
58
+ NoContent (NoContent ), PlainText , Post , QueryFlag , QueryParam ,
59
+ QueryParams , Raw , ReqBody , StdMethod (GET ), UVerb , Union ,
60
+ WithStatus (WithStatus ), addHeader )
60
61
import Servant.Client
61
- import qualified Servant.Client.Core.Auth as Auth
62
+ import qualified Servant.Client.Core.Auth as Auth
62
63
import Servant.Server
63
64
import Servant.Server.Experimental.Auth
64
65
import Servant.Test.ComprehensiveAPI
@@ -109,6 +110,7 @@ type Api =
109
110
:<|> " param" :> QueryParam " name" String :> Get '[FormUrlEncoded ,JSON ] Person
110
111
:<|> " params" :> QueryParams " names" String :> Get '[JSON ] [Person ]
111
112
:<|> " flag" :> QueryFlag " flag" :> Get '[JSON ] Bool
113
+ :<|> " fragment" :> Fragment String :> Get '[JSON ] Person
112
114
:<|> " rawSuccess" :> Raw
113
115
:<|> " rawSuccessPassHeaders" :> Raw
114
116
:<|> " rawFailure" :> Raw
@@ -141,6 +143,7 @@ getBody :: Person -> ClientM Person
141
143
getQueryParam :: Maybe String -> ClientM Person
142
144
getQueryParams :: [String ] -> ClientM [Person ]
143
145
getQueryFlag :: Bool -> ClientM Bool
146
+ getFragment :: ClientM Person
144
147
getRawSuccess :: HTTP. Method -> ClientM Response
145
148
getRawSuccessPassHeaders :: HTTP. Method -> ClientM Response
146
149
getRawFailure :: HTTP. Method -> ClientM Response
@@ -163,6 +166,7 @@ getRoot
163
166
:<|> getQueryParam
164
167
:<|> getQueryParams
165
168
:<|> getQueryFlag
169
+ :<|> getFragment
166
170
:<|> getRawSuccess
167
171
:<|> getRawSuccessPassHeaders
168
172
:<|> getRawFailure
@@ -188,6 +192,7 @@ server = serve api (
188
192
Nothing -> throwError $ ServerError 400 " missing parameter" " " [] )
189
193
:<|> (\ names -> return (zipWith Person names [0 .. ]))
190
194
:<|> return
195
+ :<|> return alice
191
196
:<|> (Tagged $ \ _request respond -> respond $ Wai. responseLBS HTTP. ok200 [] " rawSuccess" )
192
197
:<|> (Tagged $ \ request respond -> (respond $ Wai. responseLBS HTTP. ok200 (Wai. requestHeaders $ request) " rawSuccess" ))
193
198
:<|> (Tagged $ \ _request respond -> respond $ Wai. responseLBS HTTP. badRequest400 [] " rawFailure" )
0 commit comments