package Ġstream . re config . kir in mar u . plugins . w ux i aw orld Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Single Ċ import Ġokhttp 3 . Cookie Jar Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Document Ċ import Ġretrofit 2 . Response Ċ import Ġstream . re config . kir in mar u . core .* Ċ import Ġstream . re config . kir in mar u . core . domain . Core No vel Detail Ċ import Ġstream . re config . kir in mar u . remote . Providers Ċ import Ġjavax . inject . Inject Ċ Ċ internal Ġconst Ġval ĠW UX I AW ORLD _ HOME Ġ= Ġ" http :// www . w ux i aw orld . com /" Ċ Ċ internal Ġconst Ġval ĠW UX I AW ORLD _ ORIGIN Ġ= Ġ" W ux ia World " Ċ Ċ /** Ċ Ġ* ĠW ux ia World Ġplugin Ċ Ġ*/ Ċ class ĠW ux i aw orld Plugin Ġ@ Inject Ġconstructor ( override Ġval Ġclient : ĠOk HttpClient , Ġoverride Ġval Ġcookie Jar : ĠCookie Jar ) Ġ: ĠPlugin Ġ{ ĊĊĠ Ġoverride Ġval Ġfeature : ĠSet < Plugin Feature > Ġ= Ġempty Set () ĊĊĠ Ġoverride Ġval Ġorigin Ġ= ĠW UX I AW ORLD _ ORIGIN ĊĊĠ Ġprivate Ġval Ġlanguage Ġ= ĠlistOf (" Chinese ", Ġ" K orean ", Ġ" English ") ĊĠ Ġprivate Ġval Ġtags Ġ= ĠlistOf (" Completed ") ĊĊĠ Ġinternal Ġval Ġapi Ġby Ġlazy Ġ{ ĊĠĠĠ ĠPro viders . ret rofit Builder () ĊĠĠĠĠĠ Ġ. baseUrl ( W UX I AW ORLD _ HOME ) ĊĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġ. create ( W ux ia World Api :: class . java ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġobtain Pre limin ary No vel s ( search Options : ĠSearch Options ): ĠSingle < List < No vel Detail >> Ġ{ ĊĠĠĠ Ġval Ġobs Completed Ġ= ĠObservable . from Iterable ( tags ) ĊĠĠĠĠĠ Ġ. flatMap Single (:: obtain No vel sBy Tag ) ĊĠĠĠ Ġval Ġobs Language Ġ= ĠObservable . from Iterable ( language ) ĊĠĠĠĠĠ Ġ. flatMap Single (:: obtain No vel sBy Language ) ĊĊĠĠĠ Ġreturn ĠObservable . concat ( obs Completed , Ġobs Language ) ĊĠĠĠĠĠ Ġ. collect Into ( mutable Set Of < No vel Detail >()) Ġ{ Ġset , Ġinput Ġ-> ĊĠĠĠĠĠĠĠ Ġfor Ġ( no vel Ġin Ġinput ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġset . find Ġ{ Ġcached Ġ-> Ġcached . url Ġ== Ġnovel . url Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . remove ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Ġ= Ġmutable Set Of < String >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( no vel . tags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( it . tags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( Core No vel Detail ( W UX I AW ORLD _ ORIGIN , Ġit . no vel Title , Ġit . url , Ġit . id , Ġtags )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġset . add ( no vel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}. map Ġ{ Ġit . toList () Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġobtain No vel s ( search Options : ĠSearch Options ): ĠSingle < List < No vel Detail >> Ġ{ ĊĊĠĠĠ Ġval Ġobs Completed Ġ= ĠObservable . from Iterable ( tags ) ĊĠĠĠĠĠ Ġ. flatMap Single (:: obtain No vel sBy Tag ) ĊĠĠĠ Ġval Ġobs Language Ġ= ĠObservable . from Iterable ( language ) ĊĠĠĠĠĠ Ġ. flatMap Single (:: obtain No vel sBy Language ) ĊĊĠĠĠ Ġreturn ĠObservable . concat ( obs Completed , Ġobs Language ) ĊĠĠĠĠĠ Ġ. collect Into ( mutable Set Of < No vel Detail >()) Ġ{ Ġset , Ġinput Ġ-> ĊĠĠĠĠĠĠĠ Ġfor Ġ( no vel Ġin Ġinput ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġset . find Ġ{ Ġcached Ġ-> Ġcached . url Ġ== Ġnovel . url Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . remove ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Ġ= Ġmutable Set Of < String >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( no vel . tags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( it . tags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( Core No vel Detail ( W UX I AW ORLD _ ORIGIN , Ġit . no vel Title , Ġit . url , Ġit . id , Ġtags )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġset . add ( no vel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}. map Ġ{ Ġit . toList () Ġ} ĊĠ Ġ} ĊĊĊĠ Ġoverride Ġfun Ġobtain Chapter s ( no vel Detail : ĠNo vel Detail , Ġsearch Options : ĠSearch Options ): ĠSingle < List < Chapter Id >> Ġ{ ĊĠĠĠ Ġreturn Ġapi . chapter s ( no vel Detail . url ) ĊĠĠĠĠĠ Ġ. map (:: stream To Document ) ĊĠĠĠĠĠ Ġ. map ( W ux ia World Chapter Id Parser :: parse ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġobtain Detail ( no vel Detail : ĠNo vel Detail , Ġchapter Id : ĠChapter Id ): ĠSingle < Chapter Detail > Ġ{ ĊĠĠĠ Ġreturn Ġapi . chapter ( chapter Id . url ) ĊĠĠĠĠĠ Ġ. map (:: stream To Document ) ĊĠĠĠĠĠ Ġ. map ( W ux ia World Chapter Detail Parser :: parse ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġto Absolute Url ( no vel Detail : ĠNo vel Detail , Ġchapter Id : ĠChapter Id ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠW ux ia World Link Transformer . to Sanit ized Absolute ( chapter Id . url ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġobtain No vel sBy Language ( key : ĠString ): ĠSingle < List < No vel Detail >> Ġ{ ĊĠĠĠ Ġreturn Ġapi . no vel sBy Language ( key ) ĊĠĠĠĠĠ Ġ. map (:: stream To Document ) ĊĠĠĠĠĠ Ġ. map ( W ux ia World Index Parser V 2 ( key ):: parse ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġobtain No vel sBy Tag ( tag : ĠString ): ĠSingle < List < No vel Detail >> Ġ{ ĊĠĠĠ Ġreturn Ġapi . no vel sBy Tag ( tag ) ĊĠĠĠĠĠ Ġ. map (:: stream To Document ) ĊĠĠĠĠĠ Ġ. map ( W ux ia World Index Parser V 2 ( tag ):: parse ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġstream To Document ( response : ĠResponse < ResponseBody >): ĠDocument Ġ{ ĊĠĠĠ Ġreturn Ġflatten Response ( response ). byte Stream () ĊĠĠĠĠĠ Ġ. use Ġ{ ĠJ soup . parse ( it , Ġ" UTF - 8 ", ĠW UX I AW ORLD _ HOME ) Ġ} ĊĠ Ġ} Ċ } ĊĊ