package Ġio . github . t 3 r 1 jj . stor api . upstream Ċ Ċ import Ġio . github . t 3 r 1 jj . stor api . data . Record Ċ import Ġio . github . t 3 r 1 jj . stor api . data . Record Meta Ċ import Ġio . github . t 3 r 1 jj . stor api . data . exception . Storage Exception Ċ import Ġio . github . t 3 r 1 jj . stor api . upstream . api . Open load Api Ċ import Ġio . github . t 3 r 1 jj . stor api . upstream . api . Open load ErrorResponse Ċ import Ġio . github . t 3 r 1 jj . stor api . upstream . api . Open load File Error Ċ import Ġio . github . t 3 r 1 jj . stor api . upstream . api . Open load FileInfo Ċ import Ġorg . js oup . J soup Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . util . function . Consumer ĊĊ Ċ open Ġclass ĠOpen load ( baseUrl : ĠString ) Ġ: ĠStorage Info Client < Open load Api >( baseUrl , ĠOpen load Api :: class . java ), ĠUp stream Storage Ġ{ ĊĠĠĠ Ġconstructor () Ġ: Ġthis (" https :// api . open load . co ") ĊĊĠĠĠ Ġoverride Ġfun Ġupload ( record : ĠRecord ): ĠRecord Meta Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . upload ( record , Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġupload ( record : ĠRecord , Ġbytes Written Consumer : ĠConsumer < Long >? ): ĠRecord Meta Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresponse Ġ= Ġclient . get Upload Url (). execute () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupload Url Ġ= Ġresponse . body () !!. result . url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( size , Ġbody ) Ġ= Ġcreate File Form ( record , Ġbytes Written Consumer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . upload ( upload Url , Ġbody ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRecord Meta ( record . name , Ġresponse . body () !!. result . url , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġpublic Path Ġ= Ġpath Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġgson . fromJson ( response . error Body () !!. char Stream (), ĠOpen load ErrorResponse :: class . java ) ĊĠĠĠĠĠĠĠ Ġthrow ĠStorage Exception ( error . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdownload ( filePath : ĠString ): ĠRecord Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsite Path Ġ= ĠfilePath . replace ("// open load . co ", Ġ"// o load . icu ") ĊĠĠĠĠĠĠĠ Ġval Ġuser Agent Ġ= Ġ" Mozilla / 5 . 0 Ġ( Windows ĠNT Ġ 6 . 1 ; ĠWin 6 4 ; Ġx 6 4 ; ĠTr ident / 7 . 0 ; Ġrv : 1 1 . 0 ) Ġlike ĠGecko " ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠJ soup . connect ( site Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. userAgent ( userAgent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠ Ġval Ġdata Link Ġ= Ġdoc . select ("[ data - src ]") ĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġdoc . select (". other - title - bold "). first () ĊĠĠĠĠĠĠĠ Ġval Ġdownload Path Ġ= Ġ( if Ġ( site Path . contains (" https :" )) Ġ" https :" Ġelse Ġ" http :") Ġ+ Ġdata Link . attr (" data - src ") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠJ soup . connect ( download Path ). userAgent ( userAgent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ignore ContentType ( true ). execute () ĊĠĠĠĠĠĠĠ Ġreturn ĠRecord ( header . text (), ĠfilePath , ĠByteArrayInputStream ( response . body As Bytes ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Info ( filePath : ĠString ): ĠRecord Meta Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠgetId From Path ( filePath ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . getInfo ( id ). execute () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresponse . body () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Info Ġ= Ġresult . result . get ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġgson . fromJson ( json Info , ĠOpen load FileInfo :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRecord Meta ( info . name , ĠfilePath , Ġinfo . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġpublic Path Ġ= Ġpath Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġgson . fromJson ( json Info , ĠOpen load File Error :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠStorage Exception (" Error Ġwhile Ġgetting Ġinfo : Ġ" Ġ+ Ġerror . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠStorage Exception ( response . message ()) ĊĠĠĠ Ġ} Ċ Ċ }