/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠAl gor and , ĠInc . Ċ Ġ* Ġ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 . al gor and . android . repository Ċ Ċ import Ġcom . al gor and . android . models . Next Block Response Ċ import Ġcom . al gor and . android . models . Result Ċ import Ġcom . al gor and . android . models . Send Transaction Response Ċ import Ġcom . al gor and . android . models . Track Transaction Request Ċ import Ġcom . al gor and . android . models . Transaction Ċ import Ġcom . al gor and . android . models . Transaction Params Ċ import Ġcom . al gor and . android . network . Al god Api Ċ import Ġcom . al gor and . android . network . Indexer Api Ċ import Ġcom . al gor and . android . network . Mobile Al gor and Api Ċ import Ġcom . al gor and . android . network . getMessage As Result Error Ċ import Ġcom . al gor and . android . network . request Ċ import Ġcom . al gor and . android . network . safe Api Call Ċ import Ġcom . hip o . hip o exceptions android . Ret rofit ErrorHandler Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ Ċ @ Singleton Ċ class ĠTransactions Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmobile Al gor and Api : ĠMobile Al gor and Api , ĊĠĠĠ Ġprivate Ġval Ġal god Api : ĠAl god Api , ĊĠĠĠ Ġprivate Ġval Ġindexer Api : ĠIndex er Api , ĊĠĠĠ Ġprivate Ġval Ġh ipo Api ErrorHandler : ĠRet rofit ErrorHandler Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġget Transaction Params (): ĠResult < Transaction Params > Ġ= ĊĠĠĠĠĠĠĠ Ġsafe Api Call Ġ{ Ġrequest Get Transaction Params () Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġrequest Get Transaction Params (): ĠResult < Transaction Params > Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( al god Api . getTransaction Params ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Successful Ġ&& Ġbody () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( body () Ġas ĠTransaction Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget WaitFor Block ( wait ed Block Number : ĠLong ): ĠResult < Next Block Response > Ġ= ĊĠĠĠĠĠĠĠ Ġsafe Api Call Ġ{ Ġrequest Get WaitFor Block ( wait ed Block Number ) Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġrequest Get WaitFor Block ( wait ed Block Number : ĠLong ): ĠResult < Next Block Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( al god Api . get WaitFor Block ( wait ed Block Number )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Successful Ġ&& Ġbody () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( body () Ġas ĠNext Block Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsend Signed Transaction ( transaction Data : ĠByteArray ): ĠResult < Send Transaction Response > Ġ= ĊĠĠĠĠĠĠĠ Ġsafe Api Call Ġ{ Ġpost Signed Transaction ( transaction Data ) Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġpost Signed Transaction ( transaction Data : ĠByteArray ): ĠResult < Send Transaction Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Transaction Data Ġ= Ġtransaction Data . to RequestBody (" application / x - binary ". to MediaType OrNull ()) ĊĠĠĠĠĠĠĠ Ġwith ( al god Api . send Signed Transaction ( raw Transaction Data )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Successful Ġ&& Ġbody () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( body () Ġas ĠSend Transaction Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( Exception ( error Body ()?. char Stream ()?. read Text ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġpost Track Transaction ( track Transaction Request : ĠTrack Transaction Request ): ĠResult < Unit > Ġ= ĊĠĠĠĠĠĠĠ Ġsafe Api Call Ġ{ Ġrequest Post Track Transaction ( track Transaction Request ) Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġrequest Post Track Transaction ( track Transaction Request : ĠTrack Transaction Request ) Ġ= Ġrequest ( ĊĠĠĠĠĠĠĠ Ġdo Request Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmobile Al gor and Api . track Transaction ( track Transaction Request ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Failed Ġ= Ġ{ Ġerror Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh ipo Api ErrorHandler . getMessage As Result Error ( error Response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġsuspend Ġfun Ġget Transaction Detail ( transaction Id : ĠString ): ĠResult < Transaction > Ġ= ĊĠĠĠĠĠĠĠ Ġsafe Api Call Ġ{ Ġrequest Get Transaction Detail ( transaction Id ) Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġrequest Get Transaction Detail ( transaction Id : ĠString ): ĠResult < Transaction > Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( indexer Api . getTransaction Detail ( transaction Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqueried Transaction Ġ= Ġbody ()?. transaction List ?. first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Successful Ġ&& Ġqueried Transaction Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( quer ied Transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( Exception ( error Body ()?. char Stream ()?. read Text ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ