package Ġir . ch ista . util Ċ Ċ sealed Ġclass ĠResult < T > Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġ< T > Ġsuccess ( result : ĠT ) Ġ= ĠSuccess Result ( result ) ĊĠĠĠ Ġfun Ġ< T > Ġerror ( error : ĠThrowable ) Ġ= ĠError Result < T >( error . message ĊĠĠĠĠĠ Ġ?: Ġ"", Ġerror ) ĊĊĠĠĠ Ġfun Ġ< T > Ġerror ( message : ĠString ) Ġ= ĠError Result < T >( message ) ĊĠĠĠ Ġfun Ġ< T > Ġempty () Ġ= ĠEmpty Result < T >() ĊĊĠĠĠ Ġfun Ġ< T > Ġcreate ( response : Ġretrofit 2 . Response < T >): ĠResult < T > Ġ{ ĊĠĠĠĠĠ Ġreturn Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠ Ġif Ġ( body Ġ== Ġnull Ġ|| Ġresponse . code () Ġ== Ġ 2 0 4 ) ĊĠĠĠĠĠĠĠĠĠ ĠEmpty Result () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠ ĠSuccess Result ( body ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġresponse . error Body ()?. string () ĊĠĠĠĠĠĠĠ Ġval Ġerror Msg Ġ= Ġif Ġ( msg . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠ Ġresponse . message () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠ Ġmsg ĊĠĠĠĠĠĠĠ ĠError Result ( error Msg Ġ?: Ġ" unknown Ġerror ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠEmpty Result < T > ĊĠ Ġinternal Ġconstructor () ĊĠĠĠ Ġ: ĠResult < T >() ĊĊĠ Ġdata Ġclass ĠSuccess Result < T > ĊĠ Ġinternal Ġconstructor ( val Ġdata : ĠT ) ĊĠĠĠ Ġ: ĠResult < T >() ĊĊĠ Ġdata Ġclass ĠError Result < T > ĊĠ Ġinternal Ġconstructor ( val Ġmessage : ĠString , Ġval Ġthrowable : ĠThrowable ? Ġ= Ġnull ) ĊĠĠĠ Ġ: ĠResult < T >() Ċ } ĊĊ