package Ġorg . http 4 k . serverless Ċ Ċ import Ġcom . amazonaws . services . lambda . runtime . Context Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġok io . buffer Ċ import Ġok io . source Ċ import Ġorg . http 4 k . core . Request Contexts Ċ 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 Ċ Ċ abstract Ġclass ĠApi Gateway Fn Loader Ġprotected Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġadapter : ĠAws Http Adapter < Map < String , ĠAny >, ĠMap < String , ĠAny >>, ĊĠĠĠ Ġprivate Ġval Ġapp Loader : ĠApp Loader WithContext s , Ċ ) Ġ: ĠFn Loader < Context > Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm oshi Ġ= ĠM oshi . Builder (). build () ĊĠĠĠ Ġprivate Ġval Ġcontexts Ġ= ĠRequest Contexts (" lambda ") ĊĠĠĠ Ġprivate Ġval Ġcore Filter Ġ= ĠCatch All (). then ( Initial ise RequestContext ( contexts )) ĊĊĠĠĠ Ġ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 Ġnew Request Ġ= Ġadapter ( mos hi . as A ( inputStream ), Ġctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm oshi . as InputStream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcore Filter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( Add Lambda Context And Request ( ctx , Ġnew Request , Ġcontexts )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( app )( new Request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠM oshi . as A ( input : ĠInputStream ): ĠT Ġ= ĊĠĠĠ Ġadapter ( T :: class . java ). fromJson ( input . source (). buffer ()) !! Ċ Ċ private Ġinline Ġfun Ġ< re ified ĠT > ĠM oshi . as InputStream ( a : ĠT ) Ġ= ĊĠĠĠ Ġadapter ( T :: class . java ). toJson ( a ). byte InputStream () Ċ