package Ġcom . k ha led . weather app . feature . search . module . data Ċ Ċ import Ġcom . k ha led . weather app . common . data . App Result Ċ import Ġcom . k ha led . weather app . common . data . Http Utils Ċ import Ġcom . k ha led . weather app . constant . Constant . API _ KEY Ċ import Ġcom . k ha led . weather app . data . remote . Ret rofit Client Ċ import Ġcom . k ha led . weather app . feature . search . module . domain . Weather Item Ċ Ċ class ĠWeather Repository Ġ: ĠI Weather Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsearch By City Name ( query : ĠString ): ĠApp Result < Weather Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror App Result : ĠApp Result . Error ? ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Utils . safe Api Call Ġ{ ĠRet rofit Client . weather Api . get Weather By City Name ( query , ĠapiKey Ġ= ĠAPI _ KEY ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApp Result . Success Ġ-> ĠApp Result . Success ( result . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror App Result Ġ= Ġresult Ġas ĠApp Result . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Error App Result ( error App Result . errorMessage , Ġerror App Result . errorMessage Res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget City Weather By Location ( lat : ĠDouble , Ġlng : ĠDouble ): ĠApp Result < Weather Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror App Result : ĠApp Result . Error ? ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Utils . safe Api Call Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit Client . weather Api . get City Weather By Location ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġlat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlng Ġ= Ġlng , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey Ġ= ĠAPI _ KEY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApp Result . Success Ġ-> ĠApp Result . Success ( result . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror App Result Ġ= Ġresult Ġas ĠApp Result . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Error App Result ( error App Result . errorMessage , Ġerror App Result . errorMessage Res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Error App Result ( errorMessage : ĠString ?, ĠerrorMessage Res : ĠInt ?) Ġ= ĠApp Result . Error ( ĊĠĠĠĠĠĠĠ ĠerrorMessage Ġ= ĠerrorMessage , ĊĠĠĠĠĠĠĠ ĠerrorMessage Res Ġ= ĠerrorMessage Res ĊĠĠĠ Ġ) Ċ }