package Ġeu . kan ade . t ach iy omi . extension . en . ar cre light Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build . VERSION Ċ import Ġeu . kan ade . t ach iy omi . extension . Build Config Ċ import Ġeu . kan ade . t ach iy omi . network . GET Ċ import Ġeu . kan ade . t ach iy omi . source . model .* Ċ import Ġeu . kan ade . t ach iy omi . source . online . Http Source Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġokhttp 3 . Headers Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ Ċ /** ĠArc - Rel ight Ġsource Ġ*/ Ċ class ĠArc Rel ight Ġ: ĠHttp Source () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġversion Id Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" Arc - Rel ight " ĊĊĠĠĠ Ġoverride Ġval ĠbaseUrl Ġ= Ġ" https :// arc - re light . site / api / v $ version Id " ĊĊĠĠĠ Ġoverride Ġval Ġlang Ġ= Ġ" en " ĊĊĠĠĠ Ġoverride Ġval Ġsupports Latest Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġuser Ġagent Ġrepresenting ĠT ach iy omi . ĊĠĠĠĠ Ġ* ĠIncludes Ġthe Ġuser 's ĠAndroid Ġversion ĊĠĠĠĠ Ġ* Ġand Ġthe Ġcurrent Ġextension Ġversion . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġuser Agent Ġ= Ġ" Mozilla / 5 . 0 Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Android Ġ${ VERSION . RELEASE }; ĠMobile ) Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" T ach iy omi /${ Build Config . VERSION _ NAME }" ĊĊĠĠĠ Ġoverride Ġfun Ġheaders Builder () Ġ= ĠHeaders . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd (" User - Agent ", Ġuser Agent ) ĊĠĠĠĠĠĠĠ Ġadd (" Refer er ", ĠbaseUrl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGET ("$ baseUrl / releases /", Ġheaders ) ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Request ( chapter : ĠS Chapter ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGET ( Uri . parse ( chapter . url ). path . replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ reader /", Ġ"$ baseUrl / series / "), Ġheaders ) ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Request ( manga : ĠSM anga ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGET ("$ baseUrl / series /${ manga . url . split ("/") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last Ġ{ Ġit Ġ!= Ġ"" Ġ}} /", Ġheaders ) ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Request ( manga : ĠSM anga ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm anga Details Request ( manga ) ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Request ( page : ĠInt , Ġquery : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters : ĠFilter List ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ("$ baseUrl / series / "). build Up on () ĊĠĠĠĠĠĠĠ Ġuri . append QueryParameter (" q ", Ġquery ) ĊĠĠĠĠĠĠĠ Ġval Ġcat Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġfilters . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPerson Ġ-> Ġuri . append QueryParameter (" author ", Ġit . state ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStatus Ġ-> Ġuri . append QueryParameter (" status ", Ġit . string ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCategory List Ġ-> Ġcat . addAll ( it . state . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ-> ĠUri . encode ( c . string Opt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ("$ uri & categories =${ cat . join ToString (",") }", Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Parse ( response : ĠResponse ): ĠM ang as Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= ĠJSONArray ( response . body () !!. string ()) ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠArrayList < SM anga >( arr . length ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarr . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġarr . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . add ( SM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġobj . getString (" url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġobj . getString (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail _ url Ġ= Ġobj . getString (" cover ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠM ang as Page ( ret , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Parse ( response : ĠResponse ): ĠList < S Chapter > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠJSONObject ( response . body () !!. string ()) ĊĠĠĠĠĠĠĠ Ġval Ġvolumes Ġ= Ġres . getJSONObject (" volumes ") ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġmutable ListOf < S Chapter >() ĊĠĠĠĠĠĠĠ Ġvolumes . keys (). forEach Ġ{ Ġvol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchapter s Ġ= Ġvolumes . getJSONObject ( vol ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s . keys (). forEach Ġ{ Ġch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġchapter s . getJSONObject ( ch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . put (" chapter ", Ġch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . put (" volume ", Ġvol ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret . add ( S Chapter . create (). apply Ġ{ Ġfrom JSON ( obj ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġret . sorted By Descending Ġ{ Ġit . name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( response : ĠResponse ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom JSON ( JSONObject ( response . body () !!. string ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( response : ĠResponse ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠJSONObject ( response . body () !!. string ()) ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġobj . getString (" url ") ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġobj . getString (" pages _ root ") ĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= Ġobj . get JSONArray (" pages _ list ") ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġmutable ListOf < Page >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarr . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . add ( Page ( i , Ġ"$ url ${ i Ġ+ Ġ 1 }", Ġroot Ġ+ Ġarr . getString ( i ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Parse ( response : ĠResponse ): ĠM ang as Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= ĠJSONArray ( response . body () !!. string ()) ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġmutable ListOf < SM anga >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarr . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . add ( SM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom JSON ( arr . getJSONObject ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠM ang as Page ( ret . sorted By Ġ{ Ġit . title Ġ}, Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter List () Ġ= ĠFilter List ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPerson (), ĠStatus (), ĠCategory List () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Pop ular M anga ( page : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Search M anga ( page , Ġ"", ĠFilter List ()) ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġmethod Ġshould Ġnot Ġbe Ġcalled !") ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Parse ( response : ĠResponse ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġmethod Ġshould Ġnot Ġbe Ġcalled !") ĊĊĠĠĠ Ġoverride Ġfun ĠimageUrl Parse ( response : ĠResponse ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġmethod Ġshould Ġnot Ġbe Ġcalled !") Ċ } ĊĊ