package Ġorg . http 4 k . serverless Ċ Ċ import Ġcom . amazonaws . services . lambda . runtime . Context Ċ import Ġorg . http 4 k . core . Http Handler Ċ import Ġorg . http 4 k . core . Method . POST Ċ import Ġorg . http 4 k . core . Request Ċ import Ġorg . http 4 k . core . Request Contexts Ċ import Ġorg . http 4 k . core . Response Ċ import Ġorg . http 4 k . core . then Ċ import Ġorg . http 4 k . filter . Server Filters . Catch All Ċ import Ġorg . http 4 k . filter . Server Filters . Initial ise RequestContext Ċ import Ġjava . io . InputStream Ċ Ċ /** Ċ Ġ* ĠFunction Ġloader Ġfor ĠInvocation ĠL amb das Ċ Ġ*/ Ċ class ĠInvocation Fn Loader ( private Ġval Ġapp Loader : ĠApp Loader WithContext s ) Ġ: ĠFn Loader < Context > Ġ{ ĊĠĠĠ Ġconstructor ( input : ĠApp Loader ) Ġ: Ġthis ( App Loader WithContext s Ġ{ Ġenv , Ġ_ Ġ-> Ġinput ( env ) Ġ}) ĊĠĠĠ Ġconstructor ( input : ĠHttp Handler ) Ġ: Ġthis ( App Loader Ġ{ Ġinput Ġ}) ĊĊĠĠĠ Ġprivate Ġval Ġcontexts Ġ= ĠRequest Contexts (" lambda ") ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġinvoke ( env : ĠMap < String , ĠString >): ĠFn Handler < InputStream , ĠContext , ĠInputStream > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġapp Loader ( env , Ġcontexts ) ĊĠĠĠĠĠĠĠ Ġreturn ĠFn Handler Ġ{ ĠinputStream , Ġctx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( POST , Ġ"/ 2 0 1 5 - 0 3 - 3 1 / functions /${ ctx . function Name }/ inv ocations ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" X - Amz - Invocation - Type ", Ġ" Request Response ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" X - Amz - Log - Type ", Ġ" Tail "). body ( inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCatch All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( Initial ise RequestContext ( contexts )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( Add Lambda Context And Request ( ctx , Ġrequest , Ġcontexts )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( app )( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body . stream ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġthe Ġmain Ġentry Ġpoint Ġfor Ġlambda Ġinv ocations Ġusing Ġthe Ġdirect Ġinv ocations . Ċ Ġ* ĠIt Ġuses Ġthe Ġlocal Ġenvironment Ġto Ġinstantiate Ġthe ĠHttp Handler Ġwhich Ġcan Ġbe Ġused Ċ Ġ* Ġfor Ġfurther Ġinv ocations . Ċ Ġ*/ Ċ abstract Ġclass ĠInvocation Lambda Function ( app Loader : ĠApp Loader WithContext s ) Ġ: ĊĠĠĠ ĠAws Lambda Event Function ( Invocation Fn Loader ( app Loader )) Ġ{ ĊĠĠĠ Ġconstructor ( input : ĠApp Loader ) Ġ: Ġthis ( App Loader WithContext s Ġ{ Ġenv , Ġ_ Ġ-> Ġinput ( env ) Ġ}) ĊĠĠĠ Ġconstructor ( input : ĠHttp Handler ) Ġ: Ġthis ( App Loader Ġ{ Ġinput Ġ}) Ċ } Ċ Ċ object ĠInvocation Lambda Aws Http Adapter Ġ: ĠAws Http Adapter < InputStream , ĠInputStream > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( req : ĠInputStream , Ġctx : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠ ĠRequest ( POST , Ġ"/ 2 0 1 5 - 0 3 - 3 1 / functions /${ ctx . function Name }/ inv ocations ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" X - Amz - Invocation - Type ", Ġ" Request Response ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" X - Amz - Log - Type ", Ġ" Tail "). body ( req ) ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( resp : ĠResponse ) Ġ= Ġresp . body . stream Ċ } Ċ