package Ġcom . ton y ode v . fetch 2 Ċ Ċ import Ġjava . io . Closeable Ċ import Ġjava . io . InputStream Ċ Ċ /** Ċ Ġ* ĠThis Ġinterface Ġcan Ġbe Ġimplemented Ġby Ġa Ġclass Ġto Ġcreate Ġa Ċ Ġ* Ġcustom ĠDown loader Ġthat Ġcan Ġbe Ġused Ġby ĠFetch Ġfor Ġdownloading Ġrequests . Ċ Ġ* ĠA Ġcustom Ġdown loader ĠIS Ġgreat Ġwhen Ġyou Ġwant Ġto Ġprovide Ġyour Ġown Ċ Ġ* Ġclient Ġfor ĠFetch Ġto Ġuse Ġfor Ġdownloading . ĠNote : ĠYou Ġare Ġresponsible Ġfor Ġfree ing Ġup Ġresources Ġcreated Ċ Ġ* Ġby Ġthis Ġclass Ġwhen Ġit Ġis Ġno Ġlonger Ġneeded . ĠAlso , Ġthe Ġmethods Ġin Ġthis Ġinterface Ġcan Ġbe Ġcalled Ċ Ġ* Ġby Ġmultiple Ġthreads . ĠYou Ġare Ġalso Ġresponsible Ġfor Ġmaking Ġit Ġthread Ġsafe Ġwhen Ġappropriate . Ċ Ġ* ĠFor Ġan Ġexample Ġsee Ċ Ġ* Ġ@ see Ġcom . ton y ode v . fetch 2 . Http Url Connection Downloader Ċ Ġ* Ġ*/ Ċ interface ĠDown loader Ġ: ĠClose able Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġcalled Ġby ĠFetch Ġto Ġexecute Ġa Ġrequest Ġagainst Ġthe Ġclient . ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġresponsible Ġfor Ġcreating Ġand Ġopening Ġa Ġconnection Ġthen Ġreturning ĊĠĠĠĠ Ġ* Ġthe Ġresponse Ġback Ġto Ġthe ĠFetch ĠFile Downloader Ġfor Ġprocessing . ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest ĠThe Ġrequest Ġinformation Ġfor Ġthe Ġdownload . ĊĠĠĠĠ Ġ* Ġ@ return ĠResponse Ġcontaining Ġthe Ġserver Ġresponse Ġcode , Ġconnection Ġsuccess , Ġcontent - length ĊĠĠĠĠ Ġ* Ġand Ġinput Ġstream Ġif Ġa Ġconnection Ġwas Ġsuccessful . ĊĠĠĠĠ Ġ* ĠFor Ġan Ġexample : ĊĠĠĠĠ Ġ* Ġ@ see Ġcom . ton y ode v . fetch 2 . Http Url Connection Downloader . execute ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġexecute ( request : ĠRequest ): ĠResponse ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġcalled Ġby ĠFetch Ġto Ġdisconnect Ġthe Ġconnection Ġfor Ġthe Ġpassed Ġin Ġresponse . ĊĠĠĠĠ Ġ* ĠPerform Ġany Ġclean Ġagainst Ġthe Ġpassed Ġin Ġresponse . ĊĠĠĠĠ Ġ* Ġ@ param Ġresponse ĠA Ġresponse Ġthat Ġwas Ġreturned Ġby Ġthe Ġexecute Ġmethod . ĊĠĠĠĠ Ġ* ĠFor Ġan Ġexample : ĊĠĠĠĠ Ġ* Ġ@ see Ġcom . ton y ode v . fetch 2 . Http Url Connection Downloader . disconnect ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġdisconnect ( response : ĠResponse ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġclass Ġthat Ġcontains Ġthe Ġinformation Ġused Ġby Ġthe ĠDown loader Ġto Ġcreate Ġa Ġconnection ĊĠĠĠĠ Ġ* Ġto Ġthe Ġserver . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġopen Ġclass ĠRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠThe Ġurl Ġwhere Ġthe Ġfile Ġwill Ġbe Ġdownloaded Ġfrom .*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl : ĠString , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠThe Ġheaders Ġused Ġby Ġthe Ġdown loader Ġto Ġsend Ġheader Ġinformation Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġserver Ġabout Ġa Ġrequest .*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheaders : ĠMap < String , ĠString >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġclass Ġthat Ġcontains Ġthe Ġserver Ġresponse Ġinformation Ġused Ġby ĠFetch ĊĠĠĠĠ Ġ* Ġto Ġbeing Ġthe Ġdownload Ġprocess . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġopen Ġclass ĠResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠServer Ġresponse Ġcode .*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode : ĠInt , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠIndicates Ġif Ġa Ġconnection Ġto Ġthe Ġserver Ġwas Ġaccepted Ġand Ġsuccessful .*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Successful : ĠBoolean , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠThe Ġcontent Ġlength Ġof Ġa Ġdownload .*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Length : ĠLong , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcontentType : ĠString , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Disposition : ĠString , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠThe Ġinput Ġstream Ġused Ġto Ġperform Ġthe Ġdownload .*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte Stream : ĠInputStream ?) Ċ Ċ }