module AWS.Lambda.Events.ApiGateway.ProxyRequest
( ProxyRequest(..)
, RequestContext(..)
, Identity(..)
, NoAuthorizer
, StrictlyNoAuthorizer
) where
import Data.Aeson (FromJSON(..), ToJSON(..),
Value(..), object, withObject,
(.=), (.:), (.:?))
import Data.ByteString.Base64.Lazy (decodeLenient, encode)
import Data.ByteString.Lazy (ByteString)
import Data.CaseInsensitive (CI, FoldCase, mk, original)
import Data.Foldable (fold)
import Data.Hashable (Hashable)
import Data.HashMap.Strict (HashMap, foldrWithKey, insert)
import Data.Maybe (catMaybes)
import Data.Text (Text)
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TLE
import Data.Void (Void)
import GHC.Generics (Generic (..))
(<&>) :: Functor f => f a -> (a -> b) -> f b
<&> :: forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
(<&>) f a
x a -> b
f = a -> b
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f a
x
infixl 1 <&>
data Identity = Identity
{ Identity -> Maybe Text
cognitoIdentityPoolId :: Maybe Text
, Identity -> Maybe Text
accountId :: Maybe Text
, Identity -> Maybe Text
cognitoIdentityId :: Maybe Text
, Identity -> Maybe Text
caller :: Maybe Text
, Identity -> Maybe Text
apiKey :: Maybe Text
, Identity -> Text
sourceIp :: Text
, Identity -> Maybe Text
accessKey :: Maybe Text
, Identity -> Maybe Text
cognitoAuthenticationType :: Maybe Text
, Identity -> Maybe Text
cognitoAuthenticationProvider :: Maybe Text
, Identity -> Maybe Text
userArn :: Maybe Text
, Identity -> Maybe Text
apiKeyId :: Maybe Text
, Identity -> Maybe Text
userAgent :: Maybe Text
, Identity -> Maybe Text
user :: Maybe Text
} deriving (Identity -> Identity -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Identity -> Identity -> Bool
$c/= :: Identity -> Identity -> Bool
== :: Identity -> Identity -> Bool
$c== :: Identity -> Identity -> Bool
Eq, forall x. Rep Identity x -> Identity
forall x. Identity -> Rep Identity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Identity x -> Identity
$cfrom :: forall x. Identity -> Rep Identity x
Generic, Int -> Identity -> ShowS
[Identity] -> ShowS
Identity -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Identity] -> ShowS
$cshowList :: [Identity] -> ShowS
show :: Identity -> String
$cshow :: Identity -> String
showsPrec :: Int -> Identity -> ShowS
$cshowsPrec :: Int -> Identity -> ShowS
Show)
instance FromJSON Identity
instance ToJSON Identity
data RequestContext a = RequestContext
{ forall a. RequestContext a -> Text
path :: Text
, forall a. RequestContext a -> Text
accountId :: Text
, forall a. RequestContext a -> Maybe a
authorizer :: Maybe a
, forall a. RequestContext a -> Text
resourceId :: Text
, forall a. RequestContext a -> Text
stage :: Text
, forall a. RequestContext a -> Maybe Text
domainPrefix :: Maybe Text
, forall a. RequestContext a -> Text
requestId :: Text
, forall a. RequestContext a -> Identity
identity :: Identity
, forall a. RequestContext a -> Maybe Text
domainName :: Maybe Text
, forall a. RequestContext a -> Text
resourcePath :: Text
, forall a. RequestContext a -> Text
httpMethod :: Text
, forall a. RequestContext a -> Maybe Text
extendedRequestId :: Maybe Text
, forall a. RequestContext a -> Text
apiId :: Text
} deriving (RequestContext a -> RequestContext a -> Bool
forall a. Eq a => RequestContext a -> RequestContext a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RequestContext a -> RequestContext a -> Bool
$c/= :: forall a. Eq a => RequestContext a -> RequestContext a -> Bool
== :: RequestContext a -> RequestContext a -> Bool
$c== :: forall a. Eq a => RequestContext a -> RequestContext a -> Bool
Eq, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (RequestContext a) x -> RequestContext a
forall a x. RequestContext a -> Rep (RequestContext a) x
$cto :: forall a x. Rep (RequestContext a) x -> RequestContext a
$cfrom :: forall a x. RequestContext a -> Rep (RequestContext a) x
Generic, Int -> RequestContext a -> ShowS
forall a. Show a => Int -> RequestContext a -> ShowS
forall a. Show a => [RequestContext a] -> ShowS
forall a. Show a => RequestContext a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RequestContext a] -> ShowS
$cshowList :: forall a. Show a => [RequestContext a] -> ShowS
show :: RequestContext a -> String
$cshow :: forall a. Show a => RequestContext a -> String
showsPrec :: Int -> RequestContext a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> RequestContext a -> ShowS
Show)
instance FromJSON a => FromJSON (RequestContext a) where
parseJSON :: Value -> Parser (RequestContext a)
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ProxyRequest" forall a b. (a -> b) -> a -> b
$ \Object
v ->
forall a.
Text
-> Text
-> Maybe a
-> Text
-> Text
-> Maybe Text
-> Text
-> Identity
-> Maybe Text
-> Text
-> Text
-> Maybe Text
-> Text
-> RequestContext a
RequestContext forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"path" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"accountId" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"authorizer" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"resourceId" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"stage" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"domainPrefix" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"requestId" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"identity" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"domainName" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"resourcePath" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"httpMethod" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"extendedRequestId" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"apiId"
instance ToJSON a => ToJSON (RequestContext a) where
toJSON :: RequestContext a -> Value
toJSON RequestContext a
r = [Pair] -> Value
object forall a b. (a -> b) -> a -> b
$ forall a. [Maybe a] -> [a]
catMaybes forall a b. (a -> b) -> a -> b
$
let
RequestContext { $sel:path:RequestContext :: forall a. RequestContext a -> Text
path = Text
p, $sel:accountId:RequestContext :: forall a. RequestContext a -> Text
accountId = Text
a, $sel:httpMethod:RequestContext :: forall a. RequestContext a -> Text
httpMethod = Text
h } = RequestContext a
r
in
[ forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"path" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
p
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"accountId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
a
, (Key
"authorizer" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. RequestContext a -> Maybe a
authorizer RequestContext a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"resourceId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. RequestContext a -> Text
resourceId RequestContext a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"stage" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. RequestContext a -> Text
stage RequestContext a
r
, (Key
"domainPrefix" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. RequestContext a -> Maybe Text
domainPrefix RequestContext a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"requestId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. RequestContext a -> Text
requestId RequestContext a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"identity" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. RequestContext a -> Identity
identity RequestContext a
r
, (Key
"domainName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. RequestContext a -> Maybe Text
domainName RequestContext a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"resourcePath" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. RequestContext a -> Text
resourcePath RequestContext a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"httpMethod" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
h
, (Key
"extendedRequestId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. RequestContext a -> Maybe Text
extendedRequestId RequestContext a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"apiId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. RequestContext a -> Text
apiId RequestContext a
r
]
data ProxyRequest a = ProxyRequest
{ forall a. ProxyRequest a -> Text
path :: Text
, :: HashMap (CI Text) Text
, :: HashMap (CI Text) [Text]
, forall a. ProxyRequest a -> HashMap Text Text
pathParameters :: HashMap Text Text
, forall a. ProxyRequest a -> HashMap Text Text
stageVariables :: HashMap Text Text
, forall a. ProxyRequest a -> RequestContext a
requestContext :: RequestContext a
, forall a. ProxyRequest a -> Text
resource :: Text
, forall a. ProxyRequest a -> Text
httpMethod :: Text
, forall a. ProxyRequest a -> HashMap Text Text
queryStringParameters :: HashMap Text Text
, forall a. ProxyRequest a -> HashMap Text [Text]
multiValueQueryStringParameters :: HashMap Text [Text]
, forall a. ProxyRequest a -> ByteString
body :: ByteString
} deriving (ProxyRequest a -> ProxyRequest a -> Bool
forall a. Eq a => ProxyRequest a -> ProxyRequest a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ProxyRequest a -> ProxyRequest a -> Bool
$c/= :: forall a. Eq a => ProxyRequest a -> ProxyRequest a -> Bool
== :: ProxyRequest a -> ProxyRequest a -> Bool
$c== :: forall a. Eq a => ProxyRequest a -> ProxyRequest a -> Bool
Eq, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (ProxyRequest a) x -> ProxyRequest a
forall a x. ProxyRequest a -> Rep (ProxyRequest a) x
$cto :: forall a x. Rep (ProxyRequest a) x -> ProxyRequest a
$cfrom :: forall a x. ProxyRequest a -> Rep (ProxyRequest a) x
Generic, Int -> ProxyRequest a -> ShowS
forall a. Show a => Int -> ProxyRequest a -> ShowS
forall a. Show a => [ProxyRequest a] -> ShowS
forall a. Show a => ProxyRequest a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ProxyRequest a] -> ShowS
$cshowList :: forall a. Show a => [ProxyRequest a] -> ShowS
show :: ProxyRequest a -> String
$cshow :: forall a. Show a => ProxyRequest a -> String
showsPrec :: Int -> ProxyRequest a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> ProxyRequest a -> ShowS
Show)
toCIHashMap :: (Eq k, FoldCase k, Hashable k) => HashMap k a -> HashMap (CI k) a
toCIHashMap :: forall k a.
(Eq k, FoldCase k, Hashable k) =>
HashMap k a -> HashMap (CI k) a
toCIHashMap = forall k v a. (k -> v -> a -> a) -> a -> HashMap k v -> a
foldrWithKey (forall k v.
(Eq k, Hashable k) =>
k -> v -> HashMap k v -> HashMap k v
insert forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s. FoldCase s => s -> CI s
mk) forall a. Monoid a => a
mempty
fromCIHashMap :: (Eq k, Hashable k) => HashMap (CI k) a -> HashMap k a
fromCIHashMap :: forall k a. (Eq k, Hashable k) => HashMap (CI k) a -> HashMap k a
fromCIHashMap = forall k v a. (k -> v -> a -> a) -> a -> HashMap k v -> a
foldrWithKey (forall k v.
(Eq k, Hashable k) =>
k -> v -> HashMap k v -> HashMap k v
insert forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s. CI s -> s
original) forall a. Monoid a => a
mempty
toByteString :: Bool -> TL.Text -> ByteString
toByteString :: Bool -> Text -> ByteString
toByteString Bool
isBase64Encoded =
if Bool
isBase64Encoded
then ByteString -> ByteString
decodeLenient forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
TLE.encodeUtf8
else Text -> ByteString
TLE.encodeUtf8
toMaybe :: Bool -> a -> Maybe a
toMaybe :: forall a. Bool -> a -> Maybe a
toMaybe Bool
b a
a = if Bool
b then forall a. a -> Maybe a
Just a
a else forall a. Maybe a
Nothing
type NoAuthorizer = Value
type StrictlyNoAuthorizer = Void
instance FromJSON a => FromJSON (ProxyRequest a) where
parseJSON :: Value -> Parser (ProxyRequest a)
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ProxyRequest" forall a b. (a -> b) -> a -> b
$ \Object
v ->
forall a.
Text
-> HashMap (CI Text) Text
-> HashMap (CI Text) [Text]
-> HashMap Text Text
-> HashMap Text Text
-> RequestContext a
-> Text
-> Text
-> HashMap Text Text
-> HashMap Text [Text]
-> ByteString
-> ProxyRequest a
ProxyRequest forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"path" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"headers" forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> forall k a.
(Eq k, FoldCase k, Hashable k) =>
HashMap k a -> HashMap (CI k) a
toCIHashMap forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"multiValueHeaders" forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> forall k a.
(Eq k, FoldCase k, Hashable k) =>
HashMap k a -> HashMap (CI k) a
toCIHashMap forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"pathParameters" forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"stageVariables" forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"requestContext" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"resource" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"httpMethod" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"queryStringParameters" forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"multiValueQueryStringParameters" forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Bool -> Text -> ByteString
toByteString forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"isBase64Encoded" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"body" forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold))
instance ToJSON a => ToJSON (ProxyRequest a) where
toJSON :: ProxyRequest a -> Value
toJSON ProxyRequest a
r = [Pair] -> Value
object forall a b. (a -> b) -> a -> b
$ forall a. [Maybe a] -> [a]
catMaybes forall a b. (a -> b) -> a -> b
$
let
ProxyRequest { $sel:path:ProxyRequest :: forall a. ProxyRequest a -> Text
path = Text
p, $sel:httpMethod:ProxyRequest :: forall a. ProxyRequest a -> Text
httpMethod = Text
h } = ProxyRequest a
r
in
[ forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"path" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
p
, forall a. Bool -> a -> Maybe a
toMaybe (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> Bool
null forall a b. (a -> b) -> a -> b
$ forall a. ProxyRequest a -> HashMap (CI Text) Text
headers ProxyRequest a
r) forall a b. (a -> b) -> a -> b
$
Key
"headers" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall k a. (Eq k, Hashable k) => HashMap (CI k) a -> HashMap k a
fromCIHashMap (forall a. ProxyRequest a -> HashMap (CI Text) Text
headers ProxyRequest a
r)
, forall a. Bool -> a -> Maybe a
toMaybe (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> Bool
null forall a b. (a -> b) -> a -> b
$ forall a. ProxyRequest a -> HashMap (CI Text) [Text]
multiValueHeaders ProxyRequest a
r) forall a b. (a -> b) -> a -> b
$
Key
"multiValueHeaders" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall k a. (Eq k, Hashable k) => HashMap (CI k) a -> HashMap k a
fromCIHashMap (forall a. ProxyRequest a -> HashMap (CI Text) [Text]
multiValueHeaders ProxyRequest a
r)
, forall a. Bool -> a -> Maybe a
toMaybe (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> Bool
null forall a b. (a -> b) -> a -> b
$ forall a. ProxyRequest a -> HashMap Text Text
pathParameters ProxyRequest a
r) forall a b. (a -> b) -> a -> b
$
Key
"pathParameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. ProxyRequest a -> HashMap Text Text
pathParameters ProxyRequest a
r
, forall a. Bool -> a -> Maybe a
toMaybe (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> Bool
null forall a b. (a -> b) -> a -> b
$ forall a. ProxyRequest a -> HashMap Text Text
stageVariables ProxyRequest a
r) forall a b. (a -> b) -> a -> b
$
Key
"stageVariables" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. ProxyRequest a -> HashMap Text Text
stageVariables ProxyRequest a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"requestContext" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. ProxyRequest a -> RequestContext a
requestContext ProxyRequest a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"resource" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. ProxyRequest a -> Text
resource ProxyRequest a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"httpMethod" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Text
h
, forall a. Bool -> a -> Maybe a
toMaybe (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> Bool
null forall a b. (a -> b) -> a -> b
$ forall a. ProxyRequest a -> HashMap Text Text
queryStringParameters ProxyRequest a
r) forall a b. (a -> b) -> a -> b
$
Key
"queryStringParameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. ProxyRequest a -> HashMap Text Text
queryStringParameters ProxyRequest a
r
, forall a. Bool -> a -> Maybe a
toMaybe (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> Bool
null forall a b. (a -> b) -> a -> b
$ forall a. ProxyRequest a -> HashMap Text [Text]
multiValueQueryStringParameters ProxyRequest a
r) forall a b. (a -> b) -> a -> b
$
Key
"multiValueQueryStringParameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.=
forall a. ProxyRequest a -> HashMap Text [Text]
multiValueQueryStringParameters ProxyRequest a
r
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"isBase64Encoded" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Bool
True
, forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Key
"body" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= ByteString -> Text
TLE.decodeUtf8 (ByteString -> ByteString
encode (forall a. ProxyRequest a -> ByteString
body ProxyRequest a
r))
]