package Ġio . ke i ji . sample . mast od on client . service Ċ Ċ import Ġandroid . app . Intent Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġio . ke i ji . sample . mast od on client . db . entity . Post Media Queue Ċ import Ġio . ke i ji . sample . mast od on client . db . entity . Post To ot Queue Ċ import Ġio . ke i ji . sample . mast od on client . repository . Post To ot Queue Repository Ċ import Ġio . ke i ji . sample . mast od on client . repository . To ot Repository Ċ import Ġio . ke i ji . sample . mast od on client . repository . User Credential Repository Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . net . Http URLConnection Ċ Ċ class ĠPost To ot Service Ġ: ĠIntent Service ( Post To ot Service :: class . java . simple Name ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠPost To ot Service :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Handle Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost To ot Queue Repository Ġ= ĠPost To ot Queue Repository ( application ) ĊĠĠĠĠĠĠĠ Ġval Ġuser Credential Repository Ġ= ĠUser Credential Repository ( application ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost To ot Queue Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. all To ot Queues () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġqueue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost To ot ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost To ot Queue Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Credential Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġpost To ot ( ĊĠĠĠĠĠĠĠ Ġqueue : ĠPost To ot Queue , ĊĠĠĠĠĠĠĠ Ġpost To ot Queue Repository : ĠPost To ot Queue Repository , ĊĠĠĠĠĠĠĠ Ġuser Credential Repository : ĠUser Credential Repository ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Credential Ġ= Ġuser Credential Repository . find ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . instance Url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . username ĊĠĠĠĠĠĠĠ Ġ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġto ot Repository Ġ= ĠT oot Repository ( user Credential ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmedi as Ġ= Ġpost To ot Queue Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Med ias By To ot Id ( queue . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmedia Ids Ġ= Ġupload Med ias ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedi as , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto ot Repository , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost To ot Queue Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġto ot Repository . post To ot ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . status , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Ids ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġpost To ot Queue Repository . delete ( queue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġupload Med ias ( ĊĠĠĠĠĠĠĠ Ġmedi as : ĠList < Post Media Queue >, ĊĠĠĠĠĠĠĠ Ġto ot Repository : ĠT oot Repository , ĊĠĠĠĠĠĠĠ Ġpost To ot Queue Repository : ĠPost To ot Queue Repository ĊĠĠĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmedi as . map NotNull Ġ{ Ġmedia Queue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( media Queue . media Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map NotNull Ġmedia Queue . media Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( media Queue . file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Ġ= Ġto ot Repository . post Media ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Queue . media Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Queue . media Id Ġ= Ġmedia . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost To ot Queue Repository . upsert ( media Queue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete On Exit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map NotNull Ġmedia Queue . media Id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Exception ( e : ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ( e . code ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp URLConnection . HTTP _ FOR BID DEN Ġ-> Ġ" æ¨ © éĻĲ ãģĮãģĤ ãĤĬ ãģ¾ãģĽãĤĵ : Ġ${ e . message }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" ä¸į æĺİ ãģª ãĤ¨ãĥ© ãĥ¼ ãģ§ãģĻ Ġ${ e . message }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Exception ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" IOException ", Ġe ) ĊĠĠĠ Ġ} Ċ }