/* Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby Ġ 2 0 2 1 Ġsky do ves Ġ( Ja ew o ong ĠE um ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . sky do ves . movie compose . operator Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . widget . Toast Ċ import Ġcom . sky do ves . movie compose . mapper . ErrorResponse Mapper Ċ import Ġcom . sky do ves . movie compose . models . network . Movie ErrorResponse Ċ import Ġcom . sky do ves . sand wich . ApiResponse Ċ import Ġcom . sky do ves . sand wich . StatusCode Ċ import Ġcom . sky do ves . sand wich . map Ċ import Ġcom . sky do ves . sand wich . message Ċ import Ġcom . sky do ves . sand wich . operators . ApiResponse Suspend Operator Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠGlobal Response Operator < T > Ġconstructor ( ĊĠ Ġprivate Ġval Ġcontext : ĠContext Ċ ) Ġ: ĠApiResponse Suspend Operator < T >() Ġ{ ĊĊĠ Ġ// Ġhandle Ġthe Ġcase Ġwhen Ġthe ĠAPI Ġrequest Ġgets Ġa Ġsuccess Ġresponse . ĊĠ Ġoverride Ġsuspend Ġfun ĠonSuccess ( api Response : ĠApiResponse . Success < T >) Ġ= ĠUnit ĊĊĠ Ġ// Ġhandles Ġthe Ġcase Ġwhen Ġthe ĠAPI Ġrequest Ġgets Ġan Ġerror Ġresponse . ĊĠ Ġ// Ġe . g ., Ġinternal Ġserver Ġerror . ĊĠ Ġoverride Ġsuspend Ġfun ĠonError ( api Response : ĠApiResponse . Failure . Error < T >) Ġ= ĊĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠ Ġapi Response . run Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d ( message ()) ĊĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġhandling Ġerror Ġbased Ġon Ġstatus Ġcode . ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( statusCode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatusCode . InternalServerError Ġ-> Ġtoast (" InternalServerError ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatusCode . Bad Gateway Ġ-> Ġtoast (" Bad Gateway ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtoast ("$ statusCode (${ statusCode . code }): Ġ${ message () }") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** Ġmaps Ġthe Ġ[ ApiResponse . Failure . Error ] Ġto Ġthe Ġ[ Movie ErrorResponse ] Ġusing Ġthe Ġmapper . Ġ*/ ĊĠĠĠĠĠĠĠ Ġmap ( ErrorResponse Mapper ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( message ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġ// Ġhandle Ġthe Ġcase Ġwhen Ġthe ĠAPI Ġrequest Ġgets Ġa Ġexception Ġresponse . ĊĠ Ġ// Ġe . g ., Ġnetwork Ġconnection Ġerror . ĊĠ Ġoverride Ġsuspend Ġfun Ġon Exception ( api Response : ĠApiResponse . Failure . Exception < T >) Ġ= ĊĠĠĠ Ġapi Response . run Ġ{ ĊĠĠĠĠĠ ĠTim ber . d ( message ()) ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġtoast ( message : ĠString ) Ġ{ ĊĠĠĠ ĠToast . makeText ( context , Ġmessage , ĠToast . LENGTH _ SHORT ). show () ĊĠ Ġ} Ċ } Ċ