package Ġim . d acer . k ata . util . helper Ċ Ċ import Ġcom . rx 2 android networking . Rx 2 Android Networking Ċ import Ġim . d acer . k ata . data . model . big bang . Music SearchResult Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . json . JSONObject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠD acer Ġon Ġ 2 6 / 0 2 / 2 0 1 8 . Ċ Ġ*/ Ċ object ĠL yr ics Helper Ġ{ ĊĠĠĠ Ġprivate Ġval ĠBASE _ URL Ġ= Ġ" https :// music . d acer . im " ĊĠĠĠ Ġprivate Ġval ĠSEARCH _ URL Ġ= Ġ"$ BASE _ URL / search " ĊĠĠĠ Ġprivate Ġval ĠL Y RIC _ URL Ġ= Ġ"$ BASE _ URL / ly ric " ĊĠĠĠ Ġprivate Ġval ĠM US IC _ URL Ġ= Ġ"$ BASE _ URL / music / url " ĊĠĠĠ Ġprivate Ġconst Ġval ĠSEARCH _ LIMIT Ġ= Ġ 3 0 ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġpage Ġfrom Ġ 1 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsearch ( keywords : ĠString , Ġpage : ĠInt Ġ= Ġ 1 ): ĠObservable < Music SearchResult . Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRx 2 Android Networking . get ( SEARCH _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" type ", Ġ" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" keywords ", Ġkeywords ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" limit ", ĠSEARCH _ LIMIT . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" offset ", Ġ( SEARCH _ LIMIT Ġ* Ġ( page Ġ- Ġ 1 )). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getObject Observable ( Music SearchResult :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġreturn @ map Ġit . result Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Ly ric ( id : ĠLong ): ĠObservable < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRx 2 Android Networking . get ( LY RIC _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" id ", Ġid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. jsonObject Observable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġreturn @ map Ġit . getJSONObject (" l rc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString (" ly ric ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( Regex ("^ \\ [ \\ d \\ d :\\ d \\ d .*? ]", ĠRegex Option . MULT IL INE ), Ġ"") } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . split ("\ n "). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!( it . matches ( Regex ("^ \\ [( by | ti | ar | al ). + ] ")) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . matches ( Regex ("^ .* ä½ľ æĽ² .* [: ï¼ļ ]. + ")) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . matches ( Regex ("^ .* ( ä½ľ è¯į | ä½ľ è© ŀ ). * [: ï¼ļ ]. + "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . replace ( Regex (" ^\ n + "), Ġ"") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Music Url ( id : ĠLong ): ĠObservable < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRx 2 Android Networking . get ( M US IC _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" id ", Ġid . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. jsonObject Observable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġ( it . get JSONArray (" data "). get ( 0 ) Ġas ĠJSONObject ). getString (" url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Return Ġ{ Ġ"" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠ Ġ} Ċ }