package Ġio . github . mult ic atch . cucumber . audit . context Ċ Ċ import Ġio . netty . handler . codec . http . HttpMethod Ċ import Ġio . netty . handler . codec . http . HttpRequest Ċ import Ġio . netty . handler . codec . http . HttpResponse Ċ import Ġnet . light body . bmp . Browser Mob Proxy Ċ import Ġnet . light body . bmp . Browser Mob Proxy Server Ċ import Ġnet . light body . bmp . client . Client Util Ċ import Ġnet . light body . bmp . filters . Request Filter Ċ import Ġnet . light body . bmp . util . Http Message Contents Ċ import Ġnet . light body . bmp . util . Http MessageInfo Ċ import Ġorg . openqa . selenium . chrome . Chrome Driver Ċ import Ġorg . openqa . selenium . firefox . Firefox Driver Ċ import Ġorg . openqa . selenium . remote . Remote WebDriver Ċ Ċ class ĠDefault Audit Context Ċ @ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġtype : ĠDriver Type , ĊĠĠĠĠĠĠĠ Ġdriver Location : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġhead less : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠAudit Context Ġ{ ĊĠĠĠ Ġoverride Ġval Ġrequest Settings : ĠRequest Settings Ġ= ĠDefault Request Settings () ĊĠĠĠ Ġoverride Ġval Ġproxy : ĠBrowser Mob Proxy Ġ= ĠBrowser Mob Proxy Server () ĊĠĠĠ Ġoverride Ġval Ġdriver : ĠRemote WebDriver Ġ= Ġcreate Driver ( type , Ġdriver Location , Ġhead less ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Driver ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠDriver Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver Location : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead less : ĠBoolean ĊĠĠĠ Ġ): ĠRemote WebDriver Ġ{ ĊĠĠĠĠĠĠĠ Ġproxy . set Trust All Servers ( true ) ĊĠĠĠĠĠĠĠ Ġproxy . start ( 0 ) ĊĠĠĠĠĠĠĠ Ġproxy . set Har Capture Types ( set Of ()) ĊĠĠĠĠĠĠĠ Ġproxy . add Request Filter ( C ucumber Audit Request Filter ( request Settings )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( driver Location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . setProperty ( type . driver Location Property , Ġdriver Location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġselenium Proxy Ġ= ĠClient Util . create Sel enium Proxy ( proxy ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDriver Type . GE CK O Ġ-> ĠFirefox Driver ( create Firefox Options ( selenium Proxy , Ġhead less )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDriver Type . CH ROME Ġ-> ĠChrome Driver ( create Chrome Options ( selenium Proxy , Ġhead less )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠDefault Request Settings Ġ: ĠRequest Settings Ġ{ ĊĠĠĠ Ġoverride Ġvar Ġmethod : ĠHttpMethod ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġrequest : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġheaders : ĠMutable Map < String , ĠString > Ġ= Ġmutable Map Of () Ċ } Ċ Ċ class ĠC ucumber Audit Request Filter ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrequest Settings : ĠRequest Settings Ċ ) Ġ: ĠRequest Filter Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfilter Request ( httpRequest : ĠHttpRequest , Ġcontent : ĠHttp Message Contents , Ġinfo : ĠHttp MessageInfo ): ĠHttpResponse ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġrequest Settings . method ĊĠĠĠĠĠĠĠ Ġif Ġ( method Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpRequest . method Ġ= Ġmethod ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrequest Settings . headers . forEach Ġ{ Ġ( name , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpRequest . headers ()[ name ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrequest Settings . request ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontents Ġ= Ġit . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . binary Contents Ġ= Ġcontents ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpRequest . headers (). remove (" Content - Length ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpRequest . headers (). remove (" content - length ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpRequest . headers (). add (" Content - Length ", Ġcontents . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }