package Ġcom . far an jit . clean . domain Ċ Ċ import Ġcom . far an jit . clean . core . exception . Unauthorized Exception Ċ import Ġcom . far an jit . clean . core . network . Base Response Ċ import Ġcom . far an jit . clean . core . network . Response Wrapper Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠB ul ent ĠTur k men Ġon Ġ 1 1 . 0 4 . 2 0 2 0 . Ċ Ġ*/ Ċ abstract Ġclass ĠBase UseCase < Response Ġ: ĠBase Response , Ġin ĠParams > Ġ{ ĊĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġbuild UseCase ( params : ĠParams ? Ġ= Ġnull ): ĠResponse Wrapper < Response > ĊĊĠĠĠ Ġopen Ġsuspend Ġfun Ġexecute ( params : ĠParams ? Ġ= Ġnull ): ĠResponse Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġwrapped Ġ= Ġbuild UseCase ( params )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResponse Wrapper . Success Ġ-> Ġwrapped . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResponse Wrapper . Unauthorized Ġ-> Ġthrow ĠUnauthorized Exception () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException ( wrapped . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }