/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : Ċ Ġ* Ġ------------------------------------------------ --- Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tencent . bk repo . helm . utils Ċ Ċ import Ġcom . tencent . bk repo . common . api . exception . NotFoundException Ċ import Ġcom . tencent . bk repo . common . api . message . Common Message Code Ċ import Ġcom . tencent . bk repo . helm . constants . CH ART _ YAML Ċ import Ġorg . apache . commons . compress . arch ivers . Archive Entry Ċ import Ġorg . apache . commons . compress . arch ivers . Archive InputStream Ċ import Ġorg . apache . commons . compress . arch ivers . tar . Tar Archive InputStream Ċ import Ġorg . apache . commons . compress . arch ivers . zip . Zip Archive InputStream Ċ import Ġjava . io . InputStream Ċ import Ġjava . util . zip . GZIP InputStream Ċ Ċ object ĠDe compress Util Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠBUFFER _ SIZE Ġ= Ġ 2 0 4 8 ĊĠĠĠ Ġprivate Ġconst Ġval ĠFILE _ NAME Ġ= ĠCH ART _ YAML ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠInputStream . get Arch ives Content ( format : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tar " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Tar Arch ivers Content ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" zip " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Zip Arch ivers Content ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tar . gz " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget T gz Arch ivers Content ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tgz " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget T gz Arch ivers Content ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" can Ġnot Ġsupport Ġcompress Ġformat !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġget Zip Arch ivers Content ( inputStream : ĠInputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Arch ivers Content ( Zip Archive InputStream ( inputStream )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġget T gz Arch ivers Content ( inputStream : ĠInputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Arch ivers Content ( Tar Archive InputStream ( GZIP InputStream ( inputStream ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġget Tar Arch ivers Content ( inputStream : ĠInputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Arch ivers Content ( Tar Archive InputStream ( inputStream )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Arch ivers Content ( archive InputStream : ĠArchive InputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġzip Entry : ĠArchive Entry ĊĠĠĠĠĠĠĠ Ġarchive InputStream . use Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( it . next Entry . also Ġ{ Ġzip Entry Ġ= Ġit Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry List Ġ= Ġzip Entry . name . split ("/") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ((! zip Entry . isDirectory ) Ġ&& Ġentry List . last () Ġ== ĠFILE _ NAME Ġ&& Ġentry List . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparse Stream ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠNotFound Exception ( Common Message Code . RESOURCE _ NOT _ FOUND , Ġ" Can Ġnot Ġfind Ġ$ FILE _ NAME ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Stream ( archive InputStream : ĠArchive InputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠ Ġvar Ġlength : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( BUFFER _ SIZE ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ(( archive InputStream . read ( bytes ). also Ġ{ Ġlength Ġ= Ġit Ġ}) Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( String ( bytes , Ġ 0 , Ġlength )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠ Ġ} Ċ } Ċ