package Ġio . github . g 0 dk ar . spring Api Comparator . internal Ċ Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġio . github . g 0 dk ar . spring Api Comparator . headers Map Ċ import Ġorg . apache . hc . client 5 . http . impl . classic . Closeable HttpResponse Ċ import Ġorg . apache . hc . core 5 . http . io . entity . Entity Utils Ċ import Ġorg . springframework . web . util . Content Caching Response Wrapper Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . nio . charset . Charset Ċ Ċ data Ġclass ĠApiResponse ( ĊĠĠĠ Ġval Ġcode : ĠInt , ĊĠĠĠ Ġval Ġheaders : ĠMap < String , ĠList < String >> Ġ= Ġempty Map (), ĊĠĠĠ Ġval Ġbody : ĠByteArrayInputStream , Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTYPE _ REF Ġ= Ġobject Ġ: ĠType Reference < Map < String , ĠAny >>() Ġ{} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( response : ĠContent Caching Response Wrapper ): ĠApiResponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApiResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġresponse . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġresponse . headers Map (). map Values Ġ{ ĠlistOf ( it . value ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= ĠByteArrayInputStream ( response . content As ByteArray ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( response : ĠClose able HttpResponse ): ĠApiResponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApiResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġresponse . code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġresponse . headers . groupBy ({ Ġit . name Ġ}, Ġ{ Ġit . value Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= ĠByteArrayInputStream ( Entity Utils . toByteArray ( response . entity ) Ġ?: Ġbyte ArrayOf ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġjson Body ( object Mapper : ĠObjectMapper ): ĠMap < String , ĠAny > Ġ= ĊĠĠĠĠĠĠĠ Ġbody . reset (). let Ġ{ ĠobjectMapper . readValue ( body , ĠTYPE _ REF ) Ġ} ĊĊĠĠĠ Ġfun Ġstring Body ( charset : ĠCharset Ġ= ĠCharset . default Charset ()): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġbody . buffered Reader ( charset ). use Ġ{ Ġit . read Text () Ġ} Ċ } Ċ