package Ġeu . kan ade . t ach iy omi . extension . en . b ore dom s ociety Ċ Ċ import Ġcom . github . sal om on br ys . kot son . get Ċ import Ġcom . github . sal om on br ys . kot son . long Ċ import Ġcom . github . sal om on br ys . kot son . string Ċ import Ġcom . google . gson . JsonArray Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . google . gson . Json Parser Ċ import Ġeu . kan ade . t ach iy omi . network . GET Ċ import Ġeu . kan ade . t ach iy omi . network . as Observable Success Ċ import Ġeu . kan ade . t ach iy omi . source . model .* Ċ import Ġeu . kan ade . t ach iy omi . source . online . Parsed Http Source Ċ import Ġokhttp 3 . Http Url Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . nodes . Element Ċ import Ġrx . Observable Ċ Ċ class ĠB ore dom S ociety Ġ: ĠParsed Http Source () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" B ore dom ĠSociety " ĊĊĠĠĠ Ġoverride Ġval ĠbaseUrl Ġ= Ġ" https :// b ore dom s ociety . xyz " ĊĊĠĠĠ Ġoverride Ġval Ġlang Ġ= Ġ" en " ĊĊĠĠĠ Ġoverride Ġval Ġsupports Latest Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġval Ġclient : ĠOk HttpClient Ġ= Ġnetwork . cloudflare Client ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( baseUrl Ġ+ ĠALL _ URL , Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ= Ġpopular M anga Request ( page ) ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Pop ular M anga ( page : ĠInt ): ĠObservable < M ang as Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . new Call ( popular M anga Request ( page )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Observable Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopular M anga Parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Parse ( response : ĠResponse ): ĠM ang as Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġget JsonArray ( response ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġparse Data ( json Array . toList ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠM ang as Page ( list , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Latest Updates ( page : ĠInt ): ĠObservable < M ang as Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . new Call ( latest Updates Request ( page )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Observable Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Updates Parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Parse ( response : ĠResponse ): ĠM ang as Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġget JsonArray ( response ) ĊĠĠĠĠĠĠĠ Ġval Ġsorted Json Ġ= Ġjson Array . sorted By Ġ{ Ġit [" last _ updated "]. long Ġ}. as Re versed () ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġparse Data ( sorted Json ) ĊĠĠĠĠĠĠĠ Ġreturn ĠM ang as Page ( list , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget JsonArray ( response : ĠResponse ): ĠJson Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Data Ġ= Ġresponse . body () !!. string () ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Parser (). parse ( json Data ). as JsonArray ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Data ( json Array : ĠList < Json Element >): ĠList < SM anga > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmutable List Ġ= Ġmutable ListOf < SM anga >() ĊĠĠĠĠĠĠĠ Ġjson Array . forEach Ġ{ Ġjson Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm anga Ġ= ĠSM anga . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . url Ġ= ĠM ANG A _ URL Ġ+ Ġjson [" id "]. string ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson [" title _ name "]. string ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . title Ġ= Ġjson [" title _ name "]. string ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . description Ġ= Ġclean String ( json [" title _ desc "]. string ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . status Ġ= ĠgetStatus ( json [" status "]. string ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga . thumbnail _ url Ġ= Ġ" https ://" Ġ+ Ġjson [" cover _ url "]. string ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable List . add ( manga ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Chapter ( json Element : ĠJson Element ): ĠS Chapter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs Chapter Ġ= ĠS Chapter . create () ĊĠĠĠĠĠĠĠ Ġs Chapter . url Ġ= ĠCH AP TER _ URL Ġ+ Ġjson Element [" id "]. string ĊĠĠĠĠĠĠĠ Ġval Ġchapter Name Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! json Element [" chapter _ name "]. string . startsWith (" Chapter ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Element [" chapter _ volume "]. string ?. isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter Name . add (" Vol : Ġ" Ġ+ Ġjson Element [" chapter _ volume "]. string ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Element [" chapter _ number "]. string ?. isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter Name . add (" Ch : Ġ" Ġ+ Ġjson Element [" chapter _ number "]. string Ġ+ Ġ" Ġ- Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchapter Name . add ( json Element [" chapter _ name "]. string ) ĊĠĠĠĠĠĠĠ Ġs Chapter . name Ġ= Ġclean String ( chapter Name . join ToString (" Ġ")) ĊĠĠĠĠĠĠĠ Ġs Chapter . date _ upload Ġ= Ġjson Element [" creation _ timestamp "]. long Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġs Chapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetStatus ( status : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" O ngo ing " Ġ-> ĠSM anga . ONGO ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Finished " Ġ-> ĠSM anga . COMPLETED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSM anga . UNKNOWN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠHttp Url . parse ("$ baseUrl $ ALL _ URL $ query ") !!. newBuilder () ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( url . toString (), Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Search M anga ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠObservable < M ang as Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . new Call ( search M anga Request ( page , Ġquery , Ġfilters )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Observable Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch M anga Parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Parse ( response : ĠResponse ): ĠM ang as Page Ġ= Ġpopular M anga Parse ( response ) ĊĊĠĠĠ Ġprivate Ġfun Ġget JsonObject ( response : ĠResponse ): ĠJsonObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Data Ġ= Ġresponse . body () !!. string () ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Parser (). parse ( json Data ). as JsonObject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( response : ĠResponse ): ĠSM anga Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġget JsonObject ( response ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġparse Data ( listOf ( jsonObject )) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Parse ( response : ĠResponse ): ĠList < S Chapter > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġget JsonObject ( response ) ĊĠĠĠĠĠĠĠ Ġvar Ġmutable Chapter s Ġ= Ġmutable ListOf < S Chapter >() ĊĠĠĠĠĠĠĠ Ġjson [" chapter s "]. as JsonArray . forEach Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Chapter s . add ( parse Chapter ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmutable Chapter s . reverse () ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable Chapter s ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( document : ĠDocument ) Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( response : ĠResponse ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġget JsonObject ( response ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpages Ġ= Ġmutable ListOf < Page >() ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġjson [" page _ url "]. as JsonArray ĊĊĠĠĠĠĠĠĠ Ġarray . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https ://${ it . asString }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpages . add ( Page ( pages . size , Ġ"", Ġurl )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpages ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean String ( description : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJ soup . parse Body Fragment ( description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("[ list ]", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("[ / list ]", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("[ * ]", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (""" \[ (\ w + )[ ^\ ]] * ]( .*? )\ [ /\ 1 ] """. to Regex (), Ġ"$ 2 ")). text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠimageUrl Parse ( document : ĠDocument ): ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġchapter From Element ( element : ĠElement ): ĠS Chapter Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Selector (): ĠString Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates From Element ( element : ĠElement ): ĠSM anga Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Next Page Selector (): ĠString ? Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Selector (): ĠString Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( document : ĠDocument ): ĠSM anga Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga From Element ( element : ĠElement ): ĠSM anga Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Next Page Selector (): ĠString ? Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Selector (): ĠString Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga From Element ( element : ĠElement ): ĠSM anga Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Next Page Selector (): ĠString ? Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Selector (): ĠString Ġ= Ġthrow ĠException (" Not Ġused ") ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠM ANG A _ URL Ġ= Ġ"/ api / title /" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠALL _ URL Ġ= Ġ"/ api / titles /" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCH AP TER _ URL Ġ= Ġ"/ api / chapter /" ĊĠĠĠ Ġ} Ċ Ċ } Ċ