package Ġcom . j done ill . api Ċ Ċ import Ġcom . j done ill . common . Build Config Ċ import Ġcom . j done ill . common . Application Dispatcher Ċ import Ġcom . j done ill . model . Weather Response Ċ import Ġcom . j done ill . util . Random Location Ċ Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . client . request . get Ċ import Ġio . ktor . client . request . parameter Ċ import Ġio . ktor . client . request . url Ċ import Ġio . ktor . client . statement . Http Statement Ċ import Ġio . ktor . client . statement . read Text Ċ Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . serialization . json . Json Ċ Ċ class ĠRest Api Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAPI _ KEY Ġ= ĠBuild Config . OPEN WE ATHER _ API _ KEY ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAPI _ V 2 Ġ= Ġ"/ data / 2 . 5 /" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAPI _ V 2 _ WE ATHER Ġ= Ġ"$ API _ V 2 / weather " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL Ġ= Ġ" https :// api . open weather map . org " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġclient Ġ= ĠHttpClient () ĊĊĠĠĠ Ġfun Ġget Weather ( success : Ġ( Weather Response ) Ġ-> ĠUnit , Ġfailure : Ġ( Throwable ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠRandom Location . w ashington State Coords () ĊĠĠĠĠĠĠĠ Ġval Ġlat Ġ= Ġlocation . first . toString () ĊĠĠĠĠĠĠĠ Ġval Ġlng Ġ= Ġlocation . second . toString () ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Application Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . get < Http Statement > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl ("$ BASE _ URL $ API _ V 2 _ WE ATHER ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter (" units ", Ġ" imp erial ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter (" lat ", Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter (" lon ", Ġlng ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter (" appid ", ĠAPI _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. execute () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . decode FromString ( Weather Response . serializer (), Ġresponse . read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also ( success ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }