packages feed

ihp-1.4.0: IHP/Controller/RequestContext.hs

module IHP.Controller.RequestContext
( RequestContext (..)
, Respond
, RequestBody (..)
) where

import           ClassyPrelude
import qualified Data.ByteString.Lazy as LBS
import           Network.Wai                   (Request, Response, ResponseReceived)
import           Network.Wai.Parse (File, Param)
import           IHP.FrameworkConfig
import qualified Data.Aeson as Aeson


type Respond = Response -> IO ResponseReceived

data RequestBody
    = FormBody { params :: [Param], files :: [File LBS.ByteString] }
    | JSONBody { jsonPayload :: Maybe Aeson.Value, rawPayload :: LByteString } -- ^ The jsonPayload is the decoded json request. We keep a copy of the original json request in rawPayload, so that you can e.g. get a HMAC signature from the request

data RequestContext = RequestContext
    { request :: Request
    , respond :: Respond
    , requestBody :: RequestBody
    , frameworkConfig :: FrameworkConfig
    }