package Ġcom . c ree pers an . bing image . lib . network Ċ Ċ import Ġcom . c ree pers an . bing image . comm . Two Values Ċ import Ġcom . c ree pers an . bing image . const . B ing Resolution Ċ import Ġcom . c ree pers an . bing image . lib . file . FileUtils Ċ import Ġcom . c ree pers an . bing image . lib . json . Json Utils Ċ import Ġcom . c ree pers an . bing image . lib . network . bean . B ing Response Bean Ċ import Ġcom . c ree pers an . bing image . lib . network . exception . B ing Image ParseException Ċ import Ġcom . c ree pers an . bing image . lib . network . exception . Fetch B ing Image ErrorException Ċ import Ġcom . google . gson . Gson Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġio . reactivex . rx java 3 . core . Scheduler Ċ import Ġio . reactivex . rx java 3 . schedul ers . Schedulers Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ Ċ object ĠNetwork Manager Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Client : ĠOk HttpClient ĊĊĠĠĠ Ġfun Ġinit (){ ĊĠĠĠĠĠĠĠ Ġm Client Ġ= ĠOk HttpClient () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å¿ħ åºĶ æĲľç´¢ æľįåĬ¡åĻ¨ ä¸ĬçļĦ èĥĮæĻ¯ åĽ¾çīĩ ĊĠĠĠĠ Ġ* Ġ@ param Ġurl Ġ è¦ģ è¯·æ±Ĥ çļĦ éĵ¾æİ¥ ï¼Į ä»İ [ Url Builder ] èİ·åıĸ åľ°åĿĢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfetch B ing ImageData ( url : ĠString ): ĠObservable < Two Values < B ing Response Bean , ĠString >> { ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġurl Request Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Builder (). get (). url ( url Request ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Client . new Call ( request ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. string () Ġ?: Ġthrow ĠFetch B ing Image ErrorException (" ä»İ å¿ħ åºĶ æľįåĬ¡åĻ¨ ä¸Ĭ èİ·åıĸ å¿ħ åºĶ åĽ¾çīĩ éĵ¾æİ¥ å¤±è´¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse String Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbean Ġ= ĠJson Utils . parse Json ( response String , ĠB ing Response Bean :: class . java ) Ġ?: Ġthrow ĠB ing Image ParseException (" è§£æŀĲ å¿ħ åºĶ æľįåĬ¡åĻ¨ è¿ĶåĽŀ æķ°æį® å¤±è´¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTwo Values ( bean Ġ, Ġresponse String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch B ing Image File ( url : ĠString ): ĠObservable < ByteArray >{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . single ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġpic Url Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Builder (). get (). url ( pic Url ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Client . new Call ( request ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. byte Stream ()?. read Bytes () Ġ?: Ġthrow ĠFetch B ing Image ErrorException (" ä»İ å¿ħ åºĶ æľįåĬ¡åĻ¨ ä¸Ĭ èİ·åıĸ å¿ħ åºĶ åĽ¾çīĩ æĸĩä»¶ å¤±è´¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }