package Ġcom . hyper track . backend Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . hyper track . backend . models . Ge ofence Ċ import Ġcom . hyper track . backend . models . Ge ofence Params Ċ import Ġcom . hyper track . backend . models . Ge ofence Properties Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . converter . scal ars . Scalars Converter Factory Ċ import Ġretrofit 2 . http .* Ċ Ċ interface ĠGe of ences Api Interface Ġ{ ĊĊĠĠĠ Ġ@ GET (" client / devices /{ device _ id }/ ge of ences ") ĊĠĠĠ Ġsuspend Ġfun Ġget Device Ge of ences (@ Path (" device _ id ") deviceId Ġ: ĠString ) Ġ: ĠSet < Ge ofence > ĊĊĠĠĠ Ġ@ POST (" client / devices /{ device _ id }/ ge of ences ") ĊĠĠĠ Ġsuspend Ġfun Ġcreate Ge of ences (@ Path (" device _ id ") deviceId Ġ: ĠString , Ġ@ Body Ġparams : ĠGe ofence Params ) Ġ: ĠSet < Ge ofence > ĊĊĠĠĠ Ġ@ DELETE (" client / ge of ences /{ ge ofence _ id }") ĊĠĠĠ Ġsuspend Ġfun Ġdelete Ge ofence (@ Path (" ge ofence _ id ") ge ofence _ id : ĠString ) Ġ: ĠResponse < Unit > ĊĊĊ Ċ } Ċ Ċ class ĠRet rofit Ge of ences ApiClient ( baseUrl : ĠString , Ġprivate Ġval ĠdeviceId : ĠString , Ġgson : ĠGson , Ġauthor izer : ĠAccess Token Repository ) ĊĠĠĠ Ġ: ĠGe of ences Api Provider Ġ{ ĊĊĠĠĠ Ġval Ġapi : ĠGe of ences Api Interface Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Scalars Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( Injector . ok HttpClient ( author izer )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). create ( Ge of ences Api Interface :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Device Ge of ences ( callback : ĠResult Handler < Set < Ge ofence >>) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġge of ences Ġ= Ġapi . getDevice Ge of ences ( deviceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( ge of ences ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . onError ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Ge of ences ( ge of ences Properties : ĠSet < Ge ofence Properties >, Ġcallback : ĠResult Handler < Set < Ge ofence >>) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠGe ofence Params ( ge of ences Properties , ĠdeviceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated Ge of enses Ġ= Ġapi . create Ge of ences ( deviceId , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( created Ge of enses ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . onError ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Ge ofence ( ge ofence _ id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Default ) Ġ{ Ġapi . delete Ge ofence ( ge ofence _ id ) Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ