patrol-0.1.0.1: source/library/Patrol/Type/Request.hs
module Patrol.Type.Request where
import qualified Data.Aeson as Aeson
import qualified Data.Map as Map
import qualified Data.Text as Text
import qualified Patrol.Extra.Aeson as Aeson
-- | <https://develop.sentry.dev/sdk/event-payloads/types/#request>
data Request = Request
{ cookies :: Map.Map Text.Text Text.Text,
data_ :: Aeson.Value,
env :: Map.Map Text.Text Aeson.Value,
fragment :: Text.Text,
headers :: Map.Map Text.Text Text.Text,
inferredContentType :: Text.Text,
method :: Text.Text,
queryString :: Map.Map Text.Text Text.Text,
url :: Text.Text
}
deriving (Eq, Show)
instance Aeson.ToJSON Request where
toJSON request =
Aeson.intoObject
[ Aeson.pair "cookies" $ cookies request,
Aeson.pair "data" $ data_ request,
Aeson.pair "env" $ env request,
Aeson.pair "fragment" $ fragment request,
Aeson.pair "headers" $ headers request,
Aeson.pair "inferred_content_type" $ inferredContentType request,
Aeson.pair "method" $ method request,
Aeson.pair "query_string" $ queryString request,
Aeson.pair "url" $ url request
]
empty :: Request
empty =
Request
{ cookies = Map.empty,
data_ = Aeson.Null,
env = Map.empty,
fragment = Text.empty,
headers = Map.empty,
inferredContentType = Text.empty,
method = Text.empty,
queryString = Map.empty,
url = Text.empty
}