package Ġcom . android pi . app . c weather . view model Ċ Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . arch . lifecycle . ViewModel Ċ import Ġcom . android pi . app . base . vm . vo . Resource Ċ Ċ import Ġcom . android pi . app . c weather . data . remote . Open Weather Map Api Ċ import Ġcom . android pi . app . c weather . data . remote . dto . Res Current Weather Ċ import Ġcom . android pi . common . networks . http . Ret rofit Client Factory Ċ import Ġio . reactivex . Single Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġj ast relax Ġon Ġ 2 0 1 8 / 8 / 1 8 . Ċ Ġ*/ Ċ class ĠWeather ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġapi : ĠOpen Weather Map Api ĊĠĠĠ Ġval Ġweather Result Ġ= ĠMutable LiveData < Resource < Res Current Weather >>() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Ġ= ĠRet rofit Client Factory . new Ret rofit ( Open Weather Map Api . BASE _ URL ). create ( Open Weather Map Api :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Weather ( lat : ĠFloat , Ġlon : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapi . getCurrent Weather ( lat , Ġlon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠSingle Observer < Res Current Weather > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( t : ĠRes Current Weather ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Result . value Ġ= ĠResource . success ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Result . value Ġ= ĠResource . error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ } Ċ