patrol-0.0.1: src/lib/Patrol/Type/Request.hs
module Patrol.Type.Request
( Request(..)
) where
import qualified Data.Aeson as Aeson
import qualified Data.Map as Map
import qualified Data.Maybe as Maybe
import qualified Data.Text as Text
import qualified Patrol.Utility.Json as Json
data Request = Request
{ cookies :: Maybe (Map.Map Text.Text Text.Text)
, data_ :: Maybe Aeson.Value
, env :: Maybe (Map.Map Text.Text Text.Text)
, headers :: Maybe (Map.Map Text.Text Text.Text)
, method :: Maybe Text.Text
, queryString :: Maybe (Map.Map Text.Text Text.Text)
, url :: Maybe Text.Text
} deriving (Eq, Show)
instance Aeson.ToJSON Request where
toJSON request = Aeson.object $ Maybe.catMaybes
[ Json.pair "cookies" <$> cookies request
, Json.pair "env" <$> env request
, Json.pair "headers" <$> headers request
, Json.pair "data" <$> data_ request
, Json.pair "method" <$> method request
, Json.pair "query_string" <$> queryString request
, Json.pair "url" <$> url request
]