package Ġeu . kan ade . t 4 chi y omi . data . glide Ċ Ċ import Ġandroid . util . L ru Cache Ċ import Ġcom . bump tech . glide . integration . okhttp 3 . Ok Http Stream Fetcher Ċ import Ġcom . bump tech . glide . load . Options Ċ import Ġcom . bump tech . glide . load . model .* Ċ import Ġeu . kan ade . t 4 chi y omi . data . cache . Cover Cache Ċ import Ġeu . kan ade . t 4 chi y omi . data . database . models . M anga Ċ import Ġeu . kan ade . t 4 chi y omi . network . Network Helper Ċ import Ġeu . kan ade . t 4 chi y omi . source . Source Manager Ċ import Ġeu . kan ade . t 4 chi y omi . source . online . Http Source Ċ import Ġu y . ko hes ive . in jekt . In jekt Ċ import Ġu y . ko hes ive . in jekt . api . get Ċ import Ġu y . ko hes ive . in jekt . inject Lazy Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream ĊĊ Ċ /** Ċ Ġ* ĠA Ġclass Ġfor Ġloading Ġa Ġcover Ġassociated Ġwith Ġa Ġ[ M anga ] Ġthat Ġcan Ġbe Ġpresent Ġin Ġour Ġown Ġcache . Ċ Ġ* ĠCo up led Ġwith Ġ[ Library M anga Url Fetcher ], Ġthis Ġclass Ġallows Ġto Ġimplement Ġthe Ġfollowing Ġflow : Ċ Ġ* Ċ Ġ* Ġ- ĠCheck Ġin ĠRAM ĠL RU . Ċ Ġ* Ġ- ĠCheck Ġin Ġdisk ĠL RU . Ċ Ġ* Ġ- ĠCheck Ġin Ġthis Ġmodule . Ċ Ġ* Ġ- ĠFetch Ġfrom Ġthe Ġnetwork Ġconnection . Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext Ġthe Ġapplication Ġcontext . Ċ Ġ*/ Ċ class ĠM anga Model Loader Ġ: ĠModel Loader < M anga , ĠInputStream > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCover Ġcache Ġwhere Ġpersistent Ġcovers Ġare Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġcover Cache : ĠCover Cache Ġby Ġinject Lazy () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSource Ġmanager . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġsource Manager : ĠSource Manager Ġby Ġinject Lazy () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefault Ġnetwork Ġclient . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġdefault Client Ġ= ĠIn jekt . get < Network Helper >(). client ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠL RU Ġcache Ġwhose Ġkey Ġis Ġthe Ġthumbnail Ġurl Ġof Ġthe Ġm anga , Ġand Ġthe Ġvalue Ġcontains Ġthe Ġrequest Ġurl ĊĠĠĠĠ Ġ* Ġand Ġthe Ġfile Ġwhere Ġit Ġshould Ġbe Ġstored Ġin Ġcase Ġthe Ġm anga Ġis Ġa Ġfavorite . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġl ru Cache Ġ= ĠL ru Cache < G lide Url , ĠFile >( 1 0 0 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMap Ġwhere Ġrequest Ġheaders Ġare Ġstored Ġfor Ġa Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġcached Headers Ġ= Ġhash Map Of < Long , ĠLazy Headers >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFactory Ġclass Ġfor Ġcreating Ġ[ M anga Model Loader ] Ġinstances . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠFactory Ġ: ĠModel Loader Factory < M anga , ĠInputStream > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild ( multi Factory : ĠMulti Model Loader Factory ): ĠModel Loader < M anga , ĠInputStream > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠM anga Model Loader () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġteardown () Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandles ( model : ĠM anga ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġfetch er Ġfor Ġthe Ġgiven Ġm anga Ġor Ġnull Ġif Ġthe Ġurl Ġis Ġempty . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġm anga Ġthe Ġmodel . ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth Ġthe Ġwidth Ġof Ġthe Ġview Ġwhere Ġthe Ġresource Ġwill Ġbe Ġloaded . ĊĠĠĠĠ Ġ* Ġ@ param Ġheight Ġthe Ġheight Ġof Ġthe Ġview Ġwhere Ġthe Ġresource Ġwill Ġbe Ġloaded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġbuild Load Data ( manga : ĠM anga , Ġwidth : ĠInt , Ġheight : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions : ĠOptions ): ĠModel Loader . Load Data < InputStream >? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthumbnail Ġis Ġnot Ġnull Ġor Ġempty ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġm anga . thumbnail _ url ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġnull Ġ|| Ġurl . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( url . startsWith (" http ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġsource Manager . get ( manga . source ) Ġas ? ĠHttp Source ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg lide Url Ġ= ĠG lide Url ( url , Ġget Headers ( manga , Ġsource )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġresource Ġfetch er Ġfor Ġthis Ġrequest Ġurl . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Fetcher Ġ= ĠOk Http Stream Fetcher ( source ?. client Ġ?: Ġdefault Client , Ġg lide Url ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! manga . favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠModel Loader . Load Data ( glide Url , Ġnetwork Fetcher ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠObtain Ġthe Ġfile Ġfor Ġthis Ġurl Ġfrom Ġthe ĠL RU Ġcache , Ġor Ġretrieve Ġand Ġadd Ġit Ġto Ġthe Ġcache . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġl ru Cache . get Or Put ( glide Url ) Ġ{ Ġcover Cache . get Cover File ( url ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlibrary Fetcher Ġ= ĠLibrary M anga Url Fetcher ( network Fetcher , Ġm anga , Ġfile ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġan Ġinstance Ġof Ġthe Ġfetch er Ġproviding Ġthe Ġneeded Ġelements . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠModel Loader . Load Data ( M anga Signature ( manga , Ġfile ), Ġlibrary Fetcher ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġfile Ġfrom Ġthe Ġurl , Ġremoving Ġthe Ġscheme Ġif Ġpresent . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( url . substring After (" file :// ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġan Ġinstance Ġof Ġthe Ġfetch er Ġproviding Ġthe Ġneeded Ġelements . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠModel Loader . Load Data ( M anga Signature ( manga , Ġfile ), ĠFile Fetcher ( file )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġrequest Ġheaders Ġfor Ġa Ġsource Ġcopying Ġits ĠOk Http Ġheaders Ġand Ġcaching Ġthem . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġm anga Ġthe Ġmodel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Headers ( manga : ĠM anga , Ġsource : ĠHttp Source ?): ĠHeaders Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( source Ġ== Ġnull ) Ġreturn ĠLazy Headers . DEFAULT ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcached Headers . get Or Put ( manga . source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Headers . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnull Str : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Header (" User - Agent ", Ġnull Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġsource . headers . to Multimap ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( key , Ġvalue [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< K , ĠV > ĠL ru Cache < K , ĠV >. get Or Put ( key : ĠK , ĠdefaultValue : Ġ() Ġ-> ĠV ): ĠV Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġget ( key ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanswer Ġ= ĠdefaultValue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( key , Ġanswer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanswer ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ