/* Ċ Ġ* ĠModule : Ġr 2 - shared - kotlin Ċ Ġ* ĠDevelopers : ĠQu ent in ĠG li os ca Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠRead ium ĠFoundation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġa ĠBSD - style Ġlicense Ġwhich Ġis Ġdetailed Ġin Ġthe Ċ Ġ* ĠLICENSE Ġfile Ġpresent Ġin Ġthe Ġproject Ġrepository Ġwhere Ġthis Ġsource Ġcode Ġis Ġmaintained . Ċ Ġ*/ Ċ Ċ package Ġorg . read ium . r 2 . shared . fetcher Ċ Ċ import Ġorg . read ium . r 2 . shared . publication . Link Ċ Ċ /** ĠProvides Ġaccess Ġto Ġa Ġ[ Resource ] Ġfrom Ġa Ġ[ Link ]. Ġ*/ Ċ interface ĠFetch er Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKnown Ġresources Ġavailable Ġin Ġthe Ġmedium , Ġsuch Ġas Ġfile Ġpaths Ġon Ġthe Ġfile Ġsystem ĊĠĠĠĠ Ġ* Ġor Ġentries Ġin Ġa ĠZIP Ġarchive . ĠThis Ġlist Ġis Ġnot Ġex haustive , Ġand Ġadditional ĊĠĠĠĠ Ġ* Ġunknown Ġresources Ġmight Ġbe Ġreachable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġmedium Ġhas Ġan Ġin herent Ġresource Ġorder , Ġit Ġshould Ġbe Ġfollowed . ĊĠĠĠĠ Ġ* ĠOtherwise , ĠHREF s Ġare Ġsorted Ġalphabet ically . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġlinks (): ĠList < Link > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġ[ Resource ] Ġat Ġthe Ġgiven Ġ[ link ]' s ĠHREF . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġ[ Resource ] Ġis Ġalways Ġreturned , Ġsince Ġfor Ġsome Ġcases Ġwe Ġcan 't Ġknow Ġif Ġit Ġexists Ġbefore ĊĠĠĠĠ Ġ* Ġactually Ġfetching Ġit , Ġsuch Ġas ĠHTTP . ĠTherefore , Ġerrors Ġare Ġhandled Ġat Ġthe ĠResource Ġlevel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget ( link : ĠLink ): ĠResource ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġ[ Resource ] Ġat Ġthe Ġgiven Ġ[ href ]. Ġ*/ ĊĠĠĠ Ġfun Ġget ( href : ĠString ): ĠResource Ġ= ĊĠĠĠĠĠĠĠ Ġget ( Link ( href Ġ= Ġhref )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCloses Ġany Ġopened Ġfile Ġhandles , Ġremoves Ġtemporary Ġfiles , Ġetc . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe ĠFetch er Ġis Ġalready Ġclosed Ġthen Ġinvoking Ġthis Ġmethod Ġhas Ġno Ġeffect . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġclose () ĊĊĠĠĠ Ġ// ĠTo Ġbe Ġable Ġto Ġadd Ġextensions Ġon ĠFetch er . Companion Ġin Ġother Ġcomponents ... ĊĠĠĠ Ġcompanion Ġobject Ċ Ċ } Ċ Ċ /** ĠA Ġ[ Fetcher ] Ġproviding Ġno Ġresources Ġat Ġall . Ġ*/ Ċ class ĠEmpty Fetcher Ġ: ĠFetch er Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġlinks (): ĠList < Link > Ġ= Ġempty List () ĊĊĠĠĠ Ġoverride Ġfun Ġget ( link : ĠLink ): ĠResource Ġ= ĠFailure Resource ( link , ĠResource . Exception . NotFound ()) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġclose () Ġ{} Ċ Ċ } Ċ