package Ġcom . example . my application . data . network Ċ Ċ import Ġcom . example . my application . utils . Network Response Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Call Adapter Ċ import Ġretrofit 2 . Response Ċ import Ġjava . lang . reflect . Type Ċ Ċ internal Ġclass ĠNetwork Response Adapter ( ĊĠĠĠ Ġprivate Ġval Ġtype : ĠType , Ċ ) Ġ: ĠCall Adapter < Any ?, ĠCall < Network Response < Any ? >>> Ġ{ ĊĠĠĠ Ġprivate Ġval Ġvoid Mapper Ġ= Ġ{ Ġresponse : ĠResponse < Any ?> Ġ-> ĊĠĠĠĠĠĠĠ ĠNetwork Response . Success ( response . code (), Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġunit Mapper Ġ= Ġ{ Ġresponse : ĠResponse < Any ?> Ġ-> ĊĠĠĠĠĠĠĠ ĠNetwork Response . Success ( response . code (), ĠUnit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtype Mapper Ġ= Ġ{ Ġresponse : ĠResponse < Any ?> Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠ Ġif Ġ( body Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġun fortun ate Ġbehaviour Ġis Ġresult Ġof Ġhttps :// github . com / square / ret rofit / issues / 3 0 7 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunexpected Null Body Exception Ġ= ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unexpected Ġnull Ġresponse . ĠPar ame tri ze ĠNetwork Response Ġwith ĠVoid Ġor ĠUnit Ġinstead ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Response . Failure . Unknown ( unexpected Null Body Exception ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Response . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . code (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsuccess Mapper : Ġ( Response < Any ?> ) Ġ-> ĠNetwork Response < Any ?> Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠVoid :: class . java Ġ-> Ġvoid Mapper ĊĠĠĠĠĠĠĠ ĠUnit :: class . java Ġ-> Ġunit Mapper ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtype Mapper ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresponse Type () Ġ= Ġtype ĊĊĠĠĠ Ġoverride Ġfun Ġadapt ( call : ĠCall < Any ?> ) Ġ= ĠNetwork Response Call ( call , Ġsuccess Mapper ) Ċ } Ċ