package Ġcom . gg xiao zhi . sun ny weather . logic . network Ċ Ċ import Ġandroidx . lifecycle . live Data Ċ import Ġcom . gg xiao zhi . sun ny weather . logic . model . Daily Response Ċ import Ġcom . gg xiao zhi . sun ny weather . logic . model . Place Ċ import Ġcom . gg xiao zhi . sun ny weather . logic . model . Real Time Response Ċ import Ġcom . gg xiao zhi . sun ny weather . logic . model . Weather Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ import Ġjava . lang . Exception Ċ import Ġjava . lang . RuntimeException Ċ Ċ /** Ċ Ġ* ĠCreate Ġby Ġgg xz Ċ Ġ* Ġ 2 0 2 0 / 6 / 5 Ċ Ġ* Ġdescription : ç¬¬ä¸Ģ çīĪ Ġ Ġ ç¼º çĤ¹ æĺ¯ Ġæ¯ı ä¸ª è°ĥçĶ¨ æĸ¹æ³ķ éĥ½ éľĢè¦ģ Ġtry {} catch {} Ċ Ġ* Ġ ä¼ĺåĮĸ åĲİ åı¯ä»¥ ç»Łä¸Ģ å¤ĦçĲĨ Ċ Ġ*/ Ċ @ Deprecated ("@ see ĠRepository ") Ċ object ĠRepository Old Ġ{ ĊĊĊĠĠĠ Ġ// è¿ĻéĩĮ æĺ¯ å°Ĩ åįı ç¨ĭ åĴĮ éĿŀ åįı ç¨ĭ è½¬æį¢ Ġ åĲĮæĹ¶ è¿ĶåĽŀ Ġlive Data ĠĠ Ġlive Data ( Dispatch ers . IO ) k tx Ġä¸ŃçļĦ Ġ ç½ĳç»ľ è¯·æ±Ĥ è¦ģ åľ¨ IO ä¸Ń ĊĠĠĠ Ġfun Ġsearch Place ( query : ĠString ) Ġ= Ġlive Data ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{// è¿ĻéĩĮ çĶ¨ Ġtry () catch Ġæĺ¯ åĽłä¸º Ġ ĠSun ny Weather Net Work . search Places ( query ) Ġ éĩĮéĿ¢ çĶ¨ äºĨ await ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨æĦı è¿Ļä¸ª æĸ¹æ³ķ æĺ¯ suspend Ġ ä¿® é¥ ° çļĦ æĮ Ĥ èµ· åĩ½æķ° Ġ åıªæľī åįı æĪĲ æīįèĥ½ è°ĥçĶ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace Response Ġ= ĠSun ny Weather Net Work . search Places ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( place Response . status Ġ== Ġ" ok ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= Ġplace Response . places ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( places ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġstatus Ġis Ġ${ place Response . status } ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure < List < Place >>( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġrefresh Weather ( lng : ĠString , Ġlat : ĠString ) Ġ= Ġlive Data ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// coroutine Scope Ġ è¿Ļä¸ª æĸ¹æ³ķ å¼ĢåĲ¯ åįı ç¨ĭ ( æĽ´å¤ļ çļĦ åĲ« ä¹ī æĺ¯ å¼ĢåĲ¯ åįı ç¨ĭ ä½ľçĶ¨ åŁŁ ) æľī 2 çī¹ çĤ¹ ï¼ļ 1 ç»§æī¿ å¤ĸéĥ¨ ( è°ĥçĶ¨ å¤Ħ çļĦ åįı ç¨ĭ ) Ġåľ¨ å¤ĸéĥ¨ åįı ç¨ĭ ä¸ĭ åĪĽå»º åįı ç¨ĭ åŃĲ ä½ľçĶ¨ åŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeferred Real Time Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSun ny Weather Net Work . get Real Time Weather ( lng , Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeferred Daily Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSun ny Weather Net Work . get Daily Weather ( lng , Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĶåĽŀ Deferred Ġ åĲİ è°ĥçĶ¨ await åı¯ ä¸² è¡Į æī§è¡Į Ġ çĽ´æİ¥ åľ¨ æĸ¹æ³ķ åĲİ è°ĥ ä¸º å¹¶ è¡Į æī§è¡Į ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreal Time Response Ġ= Ġdeferred Real Time . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdaily Response Ġ= Ġdeferred Daily . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( real Time Response . status Ġ== Ġ" ok " Ġ&& Ġdaily Response . status Ġ== Ġ" ok ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather ( real Time Response . result . realtime , Ġdaily Response . result . daily ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( weather ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntimeException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" realtime Ġresponse Ġstatus Ġis Ġ${ real Time Response . status }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" daily Ġresponse Ġstatus Ġis Ġ${ daily Response . status }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure < Weather >( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Real Time Weather ( lng : ĠString , Ġlat : ĠString ) Ġ= Ġlive Data ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreal Time Response Ġ= ĠSun ny Weather Net Work . get Real Time Weather ( lng , Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( real Time Response . status Ġ== Ġ" ok ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( real Time Response . result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġstatus Ġis Ġ${ real Time Response . status } ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure < Real Time Response . Result >( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Daily Weather ( lng : ĠString , Ġlat : ĠString ) Ġ= Ġlive Data ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdaily Response Ġ= ĠSun ny Weather Net Work . get Daily Weather ( lng , Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( daily Response . status Ġ== Ġ" ok ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( daily Response . result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġstatus Ġis Ġ${ daily Response . status } ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure < Daily Response . Result >( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} Ċ Ċ }