| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Network.Wai.Handler.Lambda
Synopsis
- type RawResponse = (Status, ResponseHeaders, ByteString)
- data Settings = Settings {
- timeoutValue :: Int
- handleTimeout :: ByteString -> IO RawResponse
- handleException :: ByteString -> SomeException -> IO RawResponse
- run :: Application -> IO ()
- runSettings :: Settings -> Application -> IO ()
- setTimeoutSeconds :: Int -> Settings -> Settings
- setHandleException :: (ByteString -> SomeException -> IO RawResponse) -> Settings -> Settings
- setHandleTimeout :: (ByteString -> IO RawResponse) -> Settings -> Settings
- defaultSettings :: Settings
- defaultHandleException :: ByteString -> SomeException -> IO RawResponse
- defaultTimeoutValue :: Int
- defaultHandleTimeout :: ByteString -> IO RawResponse
- handleRequest :: Settings -> Application -> ByteString -> IO ()
- processRequest :: Application -> Request -> IO Response
- decodeInput :: ByteString -> Either (JSONPath, String) (FilePath, IO Request)
- parseRequest :: Value -> Parser (IO Request)
- originalRequestKey :: Key Object
- readResponse :: Response -> IO RawResponse
- toJSONResponse :: Status -> ResponseHeaders -> ByteString -> Object
- writeFileAtomic :: FilePath -> ByteString -> IO ()
- xif :: b -> ((b -> c) -> b -> c) -> c
- uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
Documentation
type RawResponse = (Status, ResponseHeaders, ByteString) Source #
Constructors
| Settings | |
Fields
| |
run :: Application -> IO () Source #
Run an Application.
Continuously reads requests from stdin. Each line should be a a JSON
document as described in decodeInput.
All requests will be timed out after 2 seconds. If any exception
is thrown while processing the request this will return an HTTP 500
Internal Server Error.
If you need more control use handleRequest directly.
runSettings :: Settings -> Application -> IO () Source #
setHandleException :: (ByteString -> SomeException -> IO RawResponse) -> Settings -> Settings Source #
setHandleTimeout :: (ByteString -> IO RawResponse) -> Settings -> Settings Source #
defaultTimeoutValue :: Int Source #
Default request timeout. 2 seconds.
Arguments
| :: Settings | |
| -> Application | |
| -> ByteString | The request (see |
| -> IO () |
Parse and handle the request.
- Returns 504 if no response is available after the specified timeout.
- Returns 500 if an exception occurs while processing the request.
- Throws an exception if the input cannot be parsed.
processRequest :: Application -> Request -> IO Response Source #
Run the Request through the Application.
This function is completely dependent on the 'Application. Any exception
thrown by the Application will be rethrown here. No timeout is
implemented: if the Application never provides a Response then
processRequest won't return.
decodeInput :: ByteString -> Either (JSONPath, String) (FilePath, IO Request) Source #
Decode a ByteString into (1) a Wai Request and (2) a filepath where
the response should be written.
The argument is JSON document with two fields:
* request: the API Gateway request (see parseRequest)
* reqsponseFile: Where to write the API Gateway response (see
toJSONResponse)
parseRequest :: Value -> Parser (IO Request) Source #
Parser for a Request.
The input is an AWS API Gateway request event: https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-api-gateway-request
readResponse :: Response -> IO RawResponse Source #
Read the status, headers and body of a Response.
toJSONResponse :: Status -> ResponseHeaders -> ByteString -> Object Source #
Make an API Gateway response from status, headers and body. https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-api-gateway-response
writeFileAtomic :: FilePath -> ByteString -> IO () Source #
Atomically write the ByteString to the file.
Uses rename(2).