package Ġcom . example . sun ny weather . logic . network Ċ Ċ import Ġcom . example . sun ny weather . logic . model . Place Response Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . await Ċ import Ġjava . lang . RuntimeException Ċ import Ġkotlin . coroutines . resume Ċ import Ġkotlin . coroutines . resume With Exception Ċ import Ġkotlin . coroutines . suspend Coroutine Ċ Ċ /** Ċ Ġ*@ Date Ġ 2 0 2 0 / 4 / 3 0 Ċ Ġ*@ author ĠChen Ċ Ġ*@ Description Ċ Ġ*/ Ċ object ĠSun ny Weather Network Ġ{ ĊĊĠĠĠ Ġ// åĪĽå»ºä¸Ģä¸ª ret rofit çļĦ åĬ¨æĢģ ä»£çĲĨ å¯¹è±¡ ĊĠĠĠ Ġprivate Ġval Ġplace Service Ġ= ĠService Creator . create < Place Service >() ĊĊĠĠĠ Ġsuspend Ġfun Ġsearch Places ( query : ĠString ) Ġ= Ġplace Service . search Places ( query ). await () Ċ Ċ // ĠĠĠ Ġprivate Ġsuspend Ġfun Ġ< T > ĠCall < T >. await (): ĠT { Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġsuspend Coroutine Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġenqueue ( object Ġ: ĠCallback < T >{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < T >, Ġt : ĠThrowable ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . resume With Exception ( t ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < T >, Ġresponse : ĠResponse < T >) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġresponse . body () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġit . resume ( response ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġit . resume With Exception ( RuntimeException (" response Ġbody Ġis Ġnull ")) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ }