File tree Expand file tree Collapse file tree 2 files changed +16
-13
lines changed
servant-server/src/Servant Expand file tree Collapse file tree 2 files changed +16
-13
lines changed Original file line number Diff line number Diff line change @@ -122,16 +122,15 @@ import Servant.Server.Internal
122
122
-- > main :: IO ()
123
123
-- > main = Network.Wai.Handler.Warp.run 8080 app
124
124
--
125
- serve :: (HasServer api '[] ) => Proxy api -> Server api -> Application
126
- serve p = serveWithContext p EmptyContext
127
125
128
- type FullyEvaluateResponse = Bool
126
+ serve :: (HasServer api '[Bool ]) => Proxy api -> Server api -> Application
127
+ serve p = serveWithContext p (False :. EmptyContext )
129
128
130
129
serveWithContext :: (HasServer api context )
131
130
=> Proxy api -> Context context -> Server api -> Application
132
131
serveWithContext p context server =
133
132
toApplication
134
- False
133
+ False -- determins if we should fully evaluate response
135
134
(runRouter (route p context (emptyDelayed (Route server))))
136
135
137
136
-- | Hoist server implementation.
Original file line number Diff line number Diff line change @@ -86,15 +86,19 @@ instance MonadThrow m => MonadThrow (RouteResultT m) where
86
86
throwM = lift . throwM
87
87
88
88
toApplication :: Bool -> RoutingApplication -> Application
89
- toApplication fullyEvaluate ra request respond = ra request routingRespond
90
- where
91
- maybeEval :: (RouteResult Response -> IO ResponseReceived )
92
- -> RouteResult Response -> IO ResponseReceived
93
- maybeEval resp = if fullyEvaluate then force resp else resp
94
- routingRespond :: RouteResult Response -> IO ResponseReceived
95
- routingRespond (Fail err) = respond $ responseServantErr err
96
- routingRespond (FailFatal err) = respond $ responseServantErr err
97
- routingRespond (Route v) = respond v
89
+ toApplication fullyEvaluate ra request respond =
90
+ ra request (maybeEval routingRespond)
91
+ where
92
+ maybeEval :: (RouteResult Response -> IO ResponseReceived )
93
+ -> RouteResult Response -> IO ResponseReceived
94
+ maybeEval resp =
95
+ if fullyEvaluate
96
+ then force resp
97
+ else resp
98
+ routingRespond :: RouteResult Response -> IO ResponseReceived
99
+ routingRespond (Fail err) = respond $ responseServantErr err
100
+ routingRespond (FailFatal err) = respond $ responseServantErr err
101
+ routingRespond (Route v) = respond v
98
102
99
103
-- | A 'Delayed' is a representation of a handler with scheduled
100
104
-- delayed checks that can trigger errors.
You can’t perform that action at this time.
0 commit comments