package Ġorg . radar base . output . config Ċ Ċ import Ġio . min io . Min io Client Ċ import Ġio . min io . credentials . Iam Aws Provider Ċ import Ġio . min io . http . Http Utils Ċ import Ġorg . radar base . output . config . Re structure Config . Companion . copy Env Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ data Ġclass ĠS 3 Config ( ĊĠĠĠ Ġ/** ĠURL Ġto Ġreach Ġobject Ġstore Ġat . Ġ*/ ĊĠĠĠ Ġval Ġendpoint : ĠString , ĊĠĠĠ Ġ/** ĠAccess Ġtoken Ġfor Ġwriting Ġdata Ġwith . Ġ*/ ĊĠĠĠ Ġval ĠaccessToken : ĠString ?, ĊĠĠĠ Ġ/** ĠSecret Ġkey Ġbelong ing Ġto Ġaccess Ġtoken . Ġ*/ ĊĠĠĠ Ġval Ġsecret Key : ĠString ?, ĊĠĠĠ Ġ/** ĠBucket Ġname . Ġ*/ ĊĠĠĠ Ġval Ġbucket : ĠString , ĊĠĠĠ Ġ/** ĠIf Ġno Ġend Offset Ġis Ġin Ġthe Ġfilename , Ġread Ġit Ġfrom Ġobject Ġtags . Ġ*/ ĊĠĠĠ Ġval Ġend Offset From Tags : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ/** ĠHTTP Ġconnect Ġtimeout . Ġ*/ ĊĠĠĠ Ġval Ġconnect Timeout : ĠLong ? Ġ= Ġnull , ĊĠĠĠ Ġ/** ĠHTTP Ġwrite Ġtimeout . Ġ*/ ĊĠĠĠ Ġval Ġwrite Timeout : ĠLong ? Ġ= Ġnull , ĊĠĠĠ Ġ/** ĠHTTP Ġread Ġtimeout . Ġ*/ ĊĠĠĠ Ġval Ġread Timeout : ĠLong ? Ġ= Ġnull , Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġcreate S 3 Client (): ĠMin io Client Ġ= ĠMin io Client . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġendpoint ( endpoint ) ĊĠĠĠĠĠĠĠ Ġif Ġ( accessToken . isNull Or Blank () Ġ|| Ġsecret Key . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredentials Provider ( Iam Aws Provider ( null , Ġnull )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredentials ( accessToken , Ġsecret Key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠhttpClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Utils . new Default HttpClient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Timeout . to Millis OrDefault (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Timeout . to Millis OrDefault (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Timeout . to Millis OrDefault (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. build () ĊĊĠĠĠ Ġfun Ġwith Env ( prefix : ĠString ): ĠS 3 Config Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ. copy Env ("${ prefix } S 3 _ ACCESS _ TOKEN ") Ġ{ Ġcopy ( accessToken Ġ= Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. copy Env ("${ prefix } S 3 _ SECRET _ KEY ") Ġ{ Ġcopy ( secret Key Ġ= Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. copy Env ("${ prefix } S 3 _ BUCKET ") Ġ{ Ġcopy ( bucket Ġ= Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. copy Env ("${ prefix } S 3 _ ENDPOINT ") Ġ{ Ġcopy ( endpoint Ġ= Ġit ) Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ CONNECTION _ TIMEOUT : ĠLong Ġ= ĠTimeUnit . MIN UTES . to Millis ( 1 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠLong ?. to Millis OrDefault (): ĠLong Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit Ġ> Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠTimeUnit . SECONDS . to Millis ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDEFAULT _ CONNECTION _ TIMEOUT ĊĠĠĠ Ġ} Ċ } Ċ