package Ġcom . tencent . devops . plugin . worker . task . code cc . util Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġcom . tencent . devops . common . api . util . Json Util Ċ import Ġcom . tencent . devops . common . api . util . Ok http Utils Ċ import Ġcom . tencent . devops . worker . common . api . Abstract Build Resource Api Ċ import Ġcom . tencent . devops . worker . common . api . Api Factory Ċ import Ġcom . tencent . devops . worker . common . api . code cc . Code cc SDK Api Ċ import Ġcom . tencent . devops . worker . common . logger . Logger Service Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . RequestBody Ċ import Ġjava . io . File Ċ Ċ class ĠCode cc Script Utils Ġ: ĠAbstract Build Resource Api () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġapi Ġ= ĠApi Factory . create ( Code cc SDK Api :: class ) ĊĊĠĠĠ Ġfun Ġdownload Script File ( code cc Workspace : ĠFile ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcode cc Script Config Ġ= Ġapi . get Single Code cc Script (). data Ġ?: Ġthrow ĠRuntimeException (" get Ġcode cc Ġscript Ġconfig Ġerror ") ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġcode cc Script Config . script FileName ĊĠĠĠĠĠĠĠ Ġval ĠfileSize Url Ġ= Ġcode cc Script Config . file Size Url ĊĠĠĠĠĠĠĠ Ġval Ġdownload Url Ġ= Ġcode cc Script Config . download Url ĊĠĠĠĠĠĠĠ Ġval Ġcode cc Host Ġ= Ġcode cc Script Config . dev net Host ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ) Ġget Ġfile Ġsize ĊĠĠĠĠĠĠĠ Ġval ĠfileSize Params Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fileName " Ġto ĠfileName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" download Type " Ġto Ġ" BUILD _ SCRIPT " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠfileSize Request Ġ= Ġbuild Post ( file Size Url , ĠRequest Body . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMediaType . parse (" application / json ; Ġcharset = utf - 8 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Util . getObject Mapper (). writeValue AsString ( file Size Params )), Ġmutable Map Of ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ("$ code cc Host $ file Size Url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval ĠfileSize Ġ= ĠOk http Utils . do Http ( file Size Request ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . body () !!. string () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger Service . add Normal Line (" get Ġfile Ġsize Ġdata : Ġ$ data ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Data Ġ= ĠJson Util . getObject Mapper (). readValue < Map < String , ĠAny >>( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Data [" status "] Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" get Ġfile Ġsize Ġfail !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Data [" data "] Ġas ĠInt ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ) Ġdownload ĊĠĠĠĠĠĠĠ Ġval Ġdownload Params Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fileName " Ġto ĠfileName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" download Type " Ġto Ġ" BUILD _ SCRIPT ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" begin Index " Ġto Ġ" 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" b ty e Size " Ġto ĠfileSize ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdownload Request Ġ= Ġbuild Post ( download Url , ĠRequest Body . create ( MediaType . parse (" application / json ; Ġcharset = utf - 8 "), ĠJson Util . getObject Mapper (). writeValue AsString ( download Params )), Ġmutable Map Of ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ("$ code cc Host $ download Url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠOk http Utils . do Http ( download Request ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . body () !!. string () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger Service . add Normal Line (" get Ġfile Ġcontent Ġsuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( code cc Workspace , ĠfileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ