/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . ator res ve iga . blue cloud . data Ċ Ċ import Ġcom . ator res ve iga . blue cloud . model . EMPTY _ TIME Ċ import Ġcom . ator res ve iga . blue cloud . model . Location Ċ import Ġjavax . inject . Inject Ċ Ċ interface ĠSearch Location DataSource Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġsearch Location ( query : ĠString ): ĠList < Location > ĊĠĠĠ Ġsuspend Ġfun Ġfind Near by ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠLocation ĊĠĠĠ Ġsuspend Ġfun Ġtimezone ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ċ } Ċ Ċ class ĠGeo Names DataSource Ġ@ Inject Ġconstructor ( private Ġval Ġapi : ĠGeo Names API ) Ġ: ĊĠĠĠ ĠSearch Location DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsearch Location ( query : ĠString ): ĠList < Location > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠComp leting Ġlocation Ġtimezone Id Ġwill Ġincrease Ġthe Ġnumber Ġof Ġrequest Ġto Ġthe Ġapi . ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġnow Ġtimezone Id Ġis Ġleft Ġempty Ġand Ġcompleted Ġonce Ġthe Ġuser Ġselects Ġthe Ġlocation Ġhe Ġis ĊĠĠĠĠĠĠĠ Ġ// Ġsearching Ġfor ĊĠĠĠĠĠĠĠ Ġreturn Ġapi . search ( query Ġ= Ġquery ). result . map Ġ{ Ġit . to Location () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfind Near by ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠLocation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Zone Id Ġ= Ġtimezone ( latitude Ġ= Ġlatitude , Ġlongitude Ġ= Ġlongitude ) ĊĠĠĠĠĠĠĠ Ġval Ġgeo Location Ġ= Ġapi . find Near By ( latitude Ġ= Ġlatitude , Ġlongitude Ġ= Ġlongitude ). result . first () ĊĠĠĠĠĠĠĠ Ġreturn Ġgeo Location . to Location ( time Zone Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġtimezone ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapi . timezone ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġlatitude , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġlongitude ĊĠĠĠĠĠĠĠ Ġ). timezone Id ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠGeo Names Location . to Location ( time Zone Id : ĠString Ġ= Ġ"") : ĠLocation Ġ{ ĊĠĠĠ Ġreturn ĠLocation ( ĊĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġlatitude , ĊĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġlongitude , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġif Ġ( state . isNotEmpty ()) Ġ"$ name , Ġ$ state , Ġ$ country " Ġelse Ġ"$ name , Ġ$ country ", ĊĠĠĠĠĠĠĠ Ġtimezone Id Ġ= Ġtime Zone Id , ĊĠĠĠĠĠĠĠ Ġlast Updated Ġ= ĠEMPTY _ TIME ĊĠĠĠ Ġ) Ċ } Ċ