package Ġcom . m ile sk re ll . basic bu str acker . net Ċ Ċ import Ġcom . jak ew h art on . ret rofit 2 . adapter . kotlin . coroutines . Coroutine Call Adapter Factory Ċ import Ġcom . m ile sk re ll . basic bu str acker . net . json models . Arrival Est im ates Response Ċ import Ġcom . m ile sk re ll . basic bu str acker . net . json models . Stops Response Ċ import Ġkotlinx . coroutines . Deferred Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http . GET Ċ import Ġretrofit 2 . http . Headers Ċ import Ġretrofit 2 . http . Query Ċ Ċ /** Ċ Ġ* ĠRet rofit Ġservice Ġfor Ġaccessing ĠTrans Loc ĠAPI Ċ Ġ*/ Ċ interface ĠTrans Loc Service Ġ{ Ċ Ċ /* ĊĠĠĠ Ġ@ Headers (" X - R apid API - Key : Ġ$ TRANS LOC _ KEY ") ĊĠĠĠ Ġ@ GET (" ag encies . json ") ĊĠĠĠ Ġfun Ġget Ag encies (@ Query (" geo _ area ") Ġgeo Area : ĠString ĊĠĠĠ Ġ): ĠDeferred < List < Ag encies Response >> ĊĊĠĠĠ Ġ@ Headers (" X - R apid API - Key : Ġ$ TRANS LOC _ KEY ") ĊĠĠĠ Ġ@ GET (" routes . json ") ĊĠĠĠ Ġfun Ġget Routes (@ Query (" ag encies ") Ġagency : ĠString ĊĠĠĠ Ġ): ĠDeferred < Routes Response > Ċ */ ĊĊĠĠĠ Ġ@ Headers (" X - R apid API - Key : Ġ$ TRANS LOC _ KEY ") ĊĠĠĠ Ġ@ GET (" arrival - estim ates . json ") ĊĠĠĠ Ġfun Ġget Arrival Est im ates ( ĊĠĠĠĠĠĠĠ Ġ@ Query (" ag encies ") Ġagency : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Query (" routes ") Ġroute : ĠInt ĊĠĠĠ Ġ): ĠDeferred < Arrival Est im ates Response > ĊĊĠĠĠ Ġ@ Headers (" X - R apid API - Key : Ġ$ TRANS LOC _ KEY ") ĊĠĠĠ Ġ@ GET (" stops . json ") ĊĠĠĠ Ġfun Ġget Stops ( ĊĠĠĠĠĠĠĠ Ġ@ Query (" ag encies ") Ġagency : ĠInt ĊĠĠĠ Ġ): ĠDeferred < Stops Response > ĊĊĠĠĠ Ġcompanion Ġobject ĠTrans Loc Ret rofit Client Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġconst Ġval ĠTRANS LOC _ KEY Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBASE _ URL Ġ= Ġ" https :// trans loc - api - 1 - 2 . p . rapid api . com /" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠR UT GER S _ AG ENCY _ ID Ġ= Ġ 1 3 2 3 ĊĊĠĠĠĠĠĠĠ Ġ// ĠIn Ġa Ġreal Ġbus Ġtracking Ġapp Ġ( with Ġsupport Ġfor Ġall Ġroutes ), Ġthe Ġroute ĠIDs Ġwouldn 't Ġbe Ġconstants . ĊĠĠĠĠĠĠĠ Ġ// ĠInstead , ĠI Ġwould Ġuse Ġthe Ġget Routes Ġcall Ġto Ġactually Ġfigure Ġwhat Ġthe Ġroutes Ġwere . ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTEMP _ WEEK END _ 1 _ ROUTE _ ID Ġ= Ġ 4 0 1 2 6 6 8 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTEMP _ WEEK END _ 2 _ ROUTE _ ID Ġ= Ġ 4 0 1 2 6 7 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġ_ ret rofit : ĠRet rofit ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġretrofit : ĠRet rofit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ ret rofit Ġ?: ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Coroutine Call Adapter Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġ_ ret rofit Ġ= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Service () Ġ= Ġretrofit . create ( Trans Loc Service :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ