//////////////////////////////////////////////////////////////////////////// / Ċ // Ċ // ĠProject ĠProject Forge ĠCommunity ĠEdition Ċ // ĠĠĠĠĠĠĠĠ Ġwww . project forge . org Ċ // Ċ // ĠCopyright Ġ( C ) Ġ 2 0 0 1 - 2 0 2 1 ĠM ic rom ata ĠGmbH , ĠGermany Ġ( www . mic rom ata . com ) Ċ // Ċ // ĠProject Forge Ġis Ġdual - license d . Ċ // Ċ // ĠThis Ġcommunity Ġedition Ġis Ġfree Ġsoftware ; Ġyou Ġcan Ġredistribute Ġit Ġand / or Ċ // Ġmodify Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ċ // Ġby Ġthe ĠFree ĠSoftware ĠFoundation ; Ġversion Ġ 3 Ġof Ġthe ĠLicense . Ċ // Ċ // ĠThis Ġcommunity Ġedition Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ // Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ // ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . ĠSee Ġthe ĠGNU ĠGeneral Ċ // ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ // Ċ // ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġalong Ċ // Ġwith Ġthis Ġprogram ; Ġif Ġnot , Ġsee Ġhttp :// www . gnu . org / licenses /. Ċ // Ċ //////////////////////////////////////////////////////////////////////////// / Ċ Ċ package Ġde . mic rom ata . b org but ler . server . rest Ċ Ċ import Ġde . mic rom ata . b org but ler . json . Json Utils Ċ import Ġjava . security . Principal Ċ import Ġjava . util .* Ċ import Ġjavax . servlet . http . Cookie Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . Part Ċ Ċ /** Ċ Ġ* ĠHelper Ġclass Ġfor Ġdebugging Ġrequests . ĠConverts Ġa Ġgiven Ġrequest Ġto Ġjson . Ċ Ġ*/ Ċ object ĠRequest Log Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġas Json ( request : ĠHttpServletRequest , Ġlong Form : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠRequest Data ( request , Ġlong Form ) ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Utils . toJson ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġas String ( request : ĠHttpServletRequest ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequest . request URI ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRequest Data ( request : ĠHttpServletRequest , Ġlong Form : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġval Ġattributes Ġ= Ġmutable Map Of < String , ĠAny ?> () ĊĠĠĠ Ġval Ġparameters Ġ= Ġmutable Map Of < String , ĠString ?> () ĊĠĠĠ Ġval Ġheaders Ġ= Ġmutable Map Of < String , ĠString ?> () ĊĠĠĠ Ġvar Ġlocales : ĠMutable List < Locale >? Ġ= Ġnull ĊĠĠĠ Ġ// val Ġparts Ġ= Ġmutable ListOf < Part Info >() ĊĊĠĠĠ Ġval Ġauth Type : ĠString ? Ġ= Ġrequest . auth Type ĊĠĠĠ Ġval Ġcharacter Encoding : ĠString ? Ġ= Ġrequest . character Encoding ĊĠĠĠ Ġval Ġcontent Length : ĠInt ? Ġ= Ġif Ġ( long Form ) Ġrequest . content Length Ġelse Ġnull ĊĠĠĠ Ġval ĠcontentType : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . contentType Ġelse Ġnull ĊĠĠĠ Ġval Ġcontext Path : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . context Path Ġelse Ġnull ĊĠĠĠ Ġval Ġcookies : ĠArray < Cookie >? Ġ= Ġif Ġ( long Form ) Ġrequest . cookies Ġelse Ġnull ĊĠĠĠ Ġval Ġis Async Started : ĠBoolean ? Ġ= Ġif Ġ( long Form ) Ġrequest . is Async Started Ġelse Ġnull ĊĠĠĠ Ġval Ġis Requested SessionId From Cookie : ĠBoolean ? Ġ= Ġif Ġ( long Form ) Ġrequest . is Requested SessionId From Cookie Ġelse Ġnull ĊĠĠĠ Ġval Ġis Requested SessionId From URL : ĠBoolean ? Ġ= Ġif Ġ( long Form ) Ġrequest . is Requested SessionId From URL Ġelse Ġnull ĊĠĠĠ Ġval Ġis Requested SessionId Valid : ĠBoolean ? Ġ= Ġif Ġ( long Form ) Ġrequest . is Requested SessionId Valid Ġelse Ġnull ĊĠĠĠ Ġval Ġis Secure : ĠBoolean ? Ġ= Ġif Ġ( long Form ) Ġrequest . is Secure Ġelse Ġnull ĊĠĠĠ Ġval Ġis Tr ailer Fields Ready : ĠBoolean ? Ġ= Ġif Ġ( long Form ) Ġrequest . is Tr ailer Fields Ready Ġelse Ġnull ĊĠĠĠ Ġval Ġlocal Addr : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . local Addr Ġelse Ġnull ĊĠĠĠ Ġval Ġlocal Name : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . local Name Ġelse Ġnull ĊĠĠĠ Ġval Ġlocal Port : ĠInt ? Ġ= Ġif Ġ( long Form ) Ġrequest . local Port Ġelse Ġnull ĊĠĠĠ Ġval Ġlocale : ĠLocale ? Ġ= Ġif Ġ( long Form ) Ġrequest . locale Ġelse Ġnull ĊĠĠĠ Ġval Ġmethod : ĠString ? Ġ= Ġrequest . method ĊĠĠĠ Ġval Ġpath Info : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . path Info Ġelse Ġnull ĊĠĠĠ Ġval Ġpath Translated : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . path Translated Ġelse Ġnull ĊĠĠĠ Ġval Ġprotocol : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . protocol Ġelse Ġnull ĊĠĠĠ Ġval ĠqueryString : ĠString ? Ġ= Ġrequest . queryString ĊĠĠĠ Ġval Ġremote Addr : ĠString ? Ġ= Ġrequest . remote Addr ĊĠĠĠ Ġval Ġremote Host : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . remote Host Ġelse Ġnull ĊĠĠĠ Ġval Ġremote Port : ĠInt ? Ġ= Ġif Ġ( long Form ) Ġrequest . remote Port Ġelse Ġnull ĊĠĠĠ Ġval Ġremote User : ĠString ? Ġ= Ġrequest . remote User ĊĠĠĠ Ġval Ġrequested SessionId : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . requested SessionId Ġelse Ġnull ĊĠĠĠ Ġval Ġrequest Uri : ĠString ? Ġ= Ġrequest . request URI ĊĠĠĠ Ġval Ġscheme : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . scheme Ġelse Ġnull ĊĠĠĠ Ġval Ġserver Name Ġ= Ġif Ġ( long Form ) Ġrequest . server Name Ġelse Ġnull ĊĠĠĠ Ġval Ġserver Port : ĠInt ? Ġ= Ġif Ġ( long Form ) Ġrequest . server Port Ġelse Ġnull ĊĠĠĠ Ġval Ġservlet Path : ĠString ? Ġ= Ġif Ġ( long Form ) Ġrequest . servlet Path Ġelse Ġnull ĊĠĠĠ Ġval ĠsessionId : ĠString ? Ġ= Ġrequest . session ?. id ĊĠĠĠ Ġval Ġuser Principal : ĠPrincipal ? Ġ= Ġrequest . user Principal ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( attribute Ġin Ġrequest . attribute Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes [ attribute ] Ġ= Ġhandle Secret ( request , Ġattribute , Ġrequest . getAttribute ( attribute )?. toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( header Ġin Ġrequest . header Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders [ header ] Ġ= Ġhandle Secret ( request , Ġheader , Ġrequest . getHeader ( header )) Ġas ĠString ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( long Form ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocales Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocales ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( locale Ġin Ġrequest . locales ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( parameter Ġin Ġrequest . parameter Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters [ parameter ] Ġ= Ġhandle Secret ( request , Ġparameter , Ġrequest . getParameter ( parameter )) Ġas ĠString ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġfor Ġ( part Ġin Ġrequest . parts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparts . add ( Part Info ( part )) ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġhandle Secret ( request : ĠHttpServletRequest , Ġname : ĠString ?, Ġvalue : ĠT ?): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġvalue Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( name . toLowerCase () Ġ== Ġ" authorization ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" authorization = ****** " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPart Info ( part : ĠPart ) Ġ{ ĊĠĠĠ Ġval Ġheaders Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠ Ġ// ĠCan 't Ġget Ġinput stream ĊĊĠĠĠ Ġval ĠcontentType : ĠString ? Ġ= Ġpart . contentType ĊĠĠĠ Ġval Ġname : ĠString ? Ġ= Ġpart . name ĊĠĠĠ Ġval Ġsize Ġ= Ġpart . size ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( header Ġin Ġpart . header Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders [ header ] Ġ= Ġpart . getHeader ( header ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ