package Ġio . char le sc d . m oo ve . legacy . m oo ve . service Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġfe ign . Request Ċ import Ġfe ign . Response Ċ import Ġio . char le sc d . m oo ve . commons . exceptions . Integration Exception Legacy Ċ import Ġio . char le sc d . m oo ve . commons . exceptions . Third Party Integration Exception Legacy Ċ import Ġio . char le sc d . m oo ve . legacy . m oo ve . api . config . V ill ager Error Decoder Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . io . Object OutputStream Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util .* Ċ import Ġkotlin . test . assert Fails With Ċ import Ġorg . junit . Test Ċ Ċ class ĠV ill ager Error Decode Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠDEFAULT _ CODE Ġ= Ġ" error " ĊĊĠĠĠ Ġprivate Ġval Ġvill ager Error Decode Ġ= ĠV ill ager Error Decoder () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġhttp Status Ġ 4 0 0 , Ġmethod Ġshould Ġthrow ĠIllegalArgumentException `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġgenerate Response ( 4 0 0 , ĠDEFAULT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġhttp Status Ġ 5 0 0 Ġand Ġcode Ġcontains ĠThird , Ġmethod Ġshould Ġthrow ĠThird Party Integration Exception Legacy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Third Party Integration Exception Legacy > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġgenerate Response ( 5 0 0 , Ġ" Third ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġhttp Status Ġ 5 0 0 Ġand Ġcode Ġnot Ġcontains ĠThird , Ġmethod Ġshould Ġthrow ĠIntegration Exception Legacy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Integration Exception Legacy > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġgenerate Response ( 5 0 0 , ĠDEFAULT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġhttp Status Ġ 5 0 0 Ġand Ġcode Ġis Ġblank , Ġmethod Ġshould Ġthrow ĠIntegration Exception Legacy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Integration Exception Legacy > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġgenerate Response ( 5 0 0 , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġhttp Status Ġ 5 0 2 , Ġmethod Ġshould Ġthrow ĠIntegration Exception Legacy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Integration Exception Legacy > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġgenerate Response ( 5 0 2 , ĠDEFAULT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġhttp Status Ġ 5 0 3 , Ġmethod Ġshould Ġthrow ĠIntegration Exception Legacy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Integration Exception Legacy > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġgenerate Response ( 5 0 3 , ĠDEFAULT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġhttp Status Ġ 5 0 4 , Ġmethod Ġshould Ġthrow ĠIntegration Exception Legacy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Integration Exception Legacy > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġgenerate Response ( 5 0 4 , ĠDEFAULT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġresponse Ġis Ġnull , Ġmethod Ġshould Ġthrow ĠIntegration Exception Legacy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Integration Exception Legacy > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvill ager Error Decode . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v ill ager Test ", Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Response ( http Status : ĠInt , Ġcode : ĠString ): ĠResponse ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠResponse . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request ( generate Request ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( generate Headers ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. reason (" error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( generate ResponseBody ( code ), ĠCharset . default Charset ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( http Status ). build () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġgenerate ResponseBody ( code : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). create () ĊĠĠĠĠĠĠĠ Ġreturn Ġgson . toJson ( V ill ager Error Decoder . ResponseError ( code , Ġ" message "), ĠV ill ager Error Decoder . ResponseError :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun ĠconvertTo Bytes (` object `: ĠAny ): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠ ĠByteArrayOutputStream (). use Ġ{ Ġb os Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject OutputStream ( bos ). use Ġ{ Ġout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Object (` object `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġb os . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Headers (): ĠMutable Map < String , ĠCollection < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders : ĠMutable Map < String , ĠCollection < String >> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġheaders . put (" header ", ĠlistOf (" header ")) ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Request (): ĠRequest ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRequest . create ( Request . HttpMethod . GET , Ġ" url ", Ġgenerate Headers (), ĠconvertTo Bytes (" request "), ĠCharset . default Charset ()) ĊĠĠĠ Ġ} Ċ } Ċ