package Ġorg . un bro k end ome . gradle . plugins . helm . publishing . publish ers Ċ Ċ import Ġokhttp 3 . Credentials Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . RequestBody Ċ import Ġokhttp 3 . RequestBody . Companion . as RequestBody Ċ import Ġokhttp 3 . tls . Handshake Certificates Ċ import Ġokhttp 3 . tls . Hel d Certificate Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . un bro k end ome . gradle . plugins . helm . dsl . credentials . Serializable Certificate Credentials Ċ import Ġorg . un bro k end ome . gradle . plugins . helm . dsl . credentials . Serializable Credentials Ċ import Ġorg . un bro k end ome . gradle . plugins . helm . dsl . credentials . Serializable Password Credentials Ċ import Ġjava . io . File Ċ import Ġjava . net . URI ĊĊ Ċ /** Ċ Ġ* ĠPub lishes ĠHelm Ġcharts Ġto Ġa Ġremote Ġrepository Ġusing ĠHTTP . Ċ Ġ*/ Ċ internal Ġabstract Ġclass ĠAbstract Http Helm Chart Publisher ( ĊĠĠĠ Ġprivate Ġval Ġurl : ĠURI , ĊĠĠĠ Ġprivate Ġval Ġcredentials : ĠSerializable Credentials ? Ġ= Ġnull Ċ ) Ġ: ĠHelm Chart Publisher Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĊĊĠĠĠ Ġprotected Ġabstract Ġval Ġupload Method : ĠString ĊĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġupload Path ( chart Name : ĠString , Ġchart Version : ĠString ): ĠString ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġadditional Headers ( ĊĠĠĠĠĠĠĠ Ġchart Name : ĠString , ĊĠĠĠĠĠĠĠ Ġchart Version : ĠString , ĊĠĠĠĠĠĠĠ Ġchart File : ĠFile ĊĠĠĠ Ġ): ĠMap < String , ĠString > Ġ= ĊĠĠĠĠĠĠĠ Ġempty Map () ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġrequest Body ( chart File : ĠFile ): ĠRequest Body Ġ= Ġchart File . as RequestBody ( MEDIA _ TYPE _ GZIP ) ĊĊĊĠĠĠ Ġprotected Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠMED IA _ TYPE _ GZIP : ĠMediaType Ġ= Ġ" application / x - gzip ". to MediaType () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġbuild Full Upload Url ( chart Name : ĠString , Ġchart Version : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġthis . upload Path ( chart Name , Ġchart Version ). remove Prefix ("/") ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( url . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! endsWith ('/') Ġ&& Ġpath . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ('/') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġpublish ( chart Name : ĠString , Ġchart Version : ĠString , Ġchart File : ĠFile ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġupload Url Ġ= Ġbuild Full Upload Url ( chart Name , Ġchart Version ) ĊĊĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Up loading Ġchart Ġfile Ġ{} Ġvia Ġ{} Ġto Ġrepository ĠURL Ġ{}", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchart File , Ġupload Method , Ġupload Url ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= Ġcreate HttpClient () ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl ( upload Url . to Http Url ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod ( upload Method , Ġrequest Body ( chart File )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠhttpClient . new Call ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code Ġ! in Ġ 2 0 0 .. 2 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠHttpResponse Exception ( upload Method , Ġupload Url , Ġresponse . code , Ġresponse . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcreate HttpClient (): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder (). run Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( credentials Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( credentials ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSerializable Password Credentials Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( credentials . create Auth Interceptor ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSerializable Certificate Credentials Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandshake Certificates Ġ= ĠHand shake Certificates . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. held Certificate ( credentials . create Hel d Certificate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Platform Trusted Certificates () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġssl Socket Factory ( handshake Certificates . ssl Socket Factory (), Ġhandshake Certificates . trust Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠSerializable Password Credentials . create Auth Interceptor (): ĠInter ceptor Ġ= ĠInter ceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", ĠCredentials . basic ( username , Ġpassword . or Empty ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠSerializable Certificate Credentials . create Hel d Certificate (): ĠHel d Certificate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcert Text Ġ= Ġcertificate File . read Text () ĊĠĠĠĠĠĠĠ Ġval Ġkey Text Ġ= Ġkey File . read Text () ĊĠĠĠĠĠĠĠ Ġreturn ĠHel d Certificate . decode ("$ cert Text \ n $ key Text ") ĊĠĠĠ Ġ} Ċ } Ċ