package Ġau . com . di us . p act . core . model Ċ Ċ import Ġau . com . di us . p act . core . model . generators . Category Ċ import Ġau . com . di us . p act . core . model . generators . Generator Ċ import Ġau . com . di us . p act . core . model . generators . Generators Ċ import Ġau . com . di us . p act . core . model . matching rules . Matching Rules Ċ import Ġau . com . di us . p act . core . support . isNotEmpty Ċ import Ġau . com . di us . p act . core . support . json . JsonValue Ċ import Ġmu . K Logging Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util . Base 6 4 Ċ Ċ /** Ċ Ġ* Ġobject Ġthat Ġrepresents Ġpart Ġof Ġan Ġhttp Ġmessage Ċ Ġ*/ Ċ interface ĠI Http Part Ġ{ ĊĠ Ġvar Ġbody : ĠOptional Body ĊĠ Ġval Ġheaders : ĠMutable Map < String , ĠList < String >> ĊĠ Ġval Ġmatching Rules : ĠMatch ing Rules ĊĠ Ġval Ġgenerators : ĠGener ators ĊĊĠ Ġfun Ġdetermine ContentType (): ĠContentType Ġ{ ĊĠĠĠ Ġval Ġheader Value Ġ= ĠcontentType Header ()?. split ( Regex ("\\ s *; \\ s * ")) ?. first () ĊĠĠĠ Ġreturn Ġif Ġ( header Value . isNull OrEmpty ()) ĊĠĠĠĠĠ Ġbody . contentType ĊĠĠĠ Ġelse ĊĠĠĠĠĠ ĠContentType ( header Value ) ĊĠ Ġ} ĊĊĠ Ġfun ĠcontentType Header (): ĠString ? Ġ{ ĊĠĠĠ Ġval ĠcontentType Key Ġ= Ġheaders . keys . find Ġ{ ĠHttp Part . CONTENT _ TYPE . equals ( it , Ġignore Case Ġ= Ġtrue ) Ġ} ĊĠĠĠ Ġreturn Ġheaders [ contentType Key ]?. first () ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠBase Ġtrait Ġfor Ġan Ġobject Ġthat Ġrepresents Ġpart Ġof Ġan Ġhttp Ġmessage Ċ Ġ*/ Ċ abstract Ġclass ĠHttp Part : ĠI Http Part Ġ{ ĊĠ Ġ@ Deprecated (" use Ġmethod Ġthat Ġreturns Ġa Ġcontent Ġtype Ġobject ", ĊĠĠĠ Ġreplace With Ġ= ĠReplace With (" determine ContentType ")) ĊĠ Ġfun ĠcontentType (): ĠString ? Ġ= ĠcontentType Header ()?. split ( Regex ("\\ s *; \\ s * ")) ?. first () ĊĠĠĠ Ġ?: Ġbody . contentType . asString () ĊĊĠ Ġfun Ġjson Body () Ġ= Ġdetermine ContentType (). is Json () ĊĊĠ Ġfun Ġxml Body () Ġ= Ġdetermine ContentType (). is Xml () ĊĊĠ Ġfun ĠsetDefault ContentType ( contentType : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( headers . keys . find Ġ{ Ġit . equals ( CONTENT _ TYPE , Ġignore Case Ġ= Ġtrue ) Ġ} Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġheaders [ CONTENT _ TYPE ] Ġ= ĠlistOf ( contentType ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġcharset (): ĠCharset ? Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠ Ġbody . isPresent () Ġ-> Ġbody . contentType . as Charset () ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= ĠcontentType Header () ĊĠĠĠĠĠĠĠ Ġif Ġ( contentType . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠContentType ( contentType !! ). as Charset () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġvalidate For Version ( p act Version : ĠP act Spec Version ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġerrors Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġerrors . addAll ( matching Rules . validate For Version ( p act Version )) ĊĠĠĠ Ġerrors . addAll ( generators . validate For Version ( p act Version )) ĊĠĠĠ Ġreturn Ġerrors ĊĠ Ġ} ĊĊĠ Ġfun Ġbuild Generators ( category : ĠCategory , Ġcontext : ĠMutable Map < String , ĠAny >): ĠMap < String , ĠGenerator > Ġ{ ĊĠĠĠ Ġval Ġgenerators Ġ= Ġgenerators . categories [ category ] Ġ?: Ġempty Map () ĊĠĠĠ Ġval Ġmatching Rule Generators Ġ= Ġmatching Rules . rules For Category ( category . name . toLowerCase ()). generators ( context ) ĊĠĠĠ Ġreturn Ġgenerators Ġ+ Ġmatching Rule Generators ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ: ĠK Logging () Ġ{ ĊĠĠĠ Ġconst Ġval ĠCONTENT _ TYPE Ġ= Ġ" Content - Type " ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġextract Body ( ĊĠĠĠĠĠ Ġjson : ĠJson Value . Object , ĊĠĠĠĠĠ ĠcontentType : ĠContentType , ĊĠĠĠĠĠ Ġdecoder : ĠBase 6 4 . Decoder Ġ= ĠBase 6 4 . get Decoder () ĊĠĠĠ Ġ): ĠOptional Body Ġ{ ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġb Ġ= Ġjson [" body "]) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠJson Value . Null Ġ-> ĠOptional Body . null Body () ĊĠĠĠĠĠĠĠ Ġis ĠJson Value . StringValue Ġ-> Ġdecode Body ( b . toString (), ĠcontentType , Ġdecoder ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdecode Body ( b . serial ise (), ĠcontentType , Ġdecoder ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdecode Body ( body : ĠString , ĠcontentType : ĠContentType , Ġdecoder : ĠBase 6 4 . Decoder ): ĠOptional Body Ġ{ ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠcontentType . is Binary Type () Ġ|| ĠcontentType . is Multipart () Ġ-> Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠOptional Body . body ( decoder . decode ( body ), ĠcontentType ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlogger . warn ( ex ) Ġ{ Ġ" Expected Ġbody Ġfor Ġcontent Ġtype Ġ$ contentType Ġto Ġbe Ġbase 6 4 Ġencoded " Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠOptional Body . body ( body . toByteArray ( contentType . as Charset ()), ĠcontentType ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠOptional Body . body ( body . toByteArray ( contentType . as Charset ()), ĠcontentType ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ