@@ -150,9 +150,11 @@ type URLOpener struct {
150150}
151151
152152const (
153- sseTypeParamKey = "ssetype"
154- kmsKeyIdParamKey = "kmskeyid"
155- accelerateParamKey = "accelerate"
153+ sseTypeParamKey = "ssetype"
154+ kmsKeyIdParamKey = "kmskeyid"
155+ accelerateParamKey = "accelerate"
156+ usePathStyleParamkey = "use_path_style"
157+ disableHTTPSParamKey = "disable_https"
156158)
157159
158160func toServerSideEncryptionType (value string ) (typesv2.ServerSideEncryption , error ) {
@@ -195,13 +197,37 @@ func (o *URLOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket
195197 }
196198
197199 if o .UseV2 {
200+ opts := []func (* s3v2.Options ){
201+ func (o * s3v2.Options ) {
202+ o .UseAccelerate = accelerate
203+ },
204+ }
205+ if disableHTTPSParam := q .Get (disableHTTPSParamKey ); disableHTTPSParam != "" {
206+ q .Del (disableHTTPSParamKey )
207+ value , err := strconv .ParseBool (disableHTTPSParam )
208+ if err != nil {
209+ return nil , fmt .Errorf ("invalid value for %q: %v" , disableHTTPSParamKey , err )
210+ }
211+ opts = append (opts , func (o * s3v2.Options ) {
212+ o .EndpointOptions .DisableHTTPS = value
213+ })
214+ }
215+ if usePathStyleParam := q .Get (usePathStyleParamkey ); usePathStyleParam != "" {
216+ q .Del (usePathStyleParamkey )
217+ value , err := strconv .ParseBool (usePathStyleParam )
218+ if err != nil {
219+ return nil , fmt .Errorf ("invalid value for %q: %v" , usePathStyleParamkey , err )
220+ }
221+ opts = append (opts , func (o * s3v2.Options ) {
222+ o .UsePathStyle = value
223+ })
224+ }
225+
198226 cfg , err := gcaws .V2ConfigFromURLParams (ctx , q )
199227 if err != nil {
200228 return nil , fmt .Errorf ("open bucket %v: %v" , u , err )
201229 }
202- clientV2 := s3v2 .NewFromConfig (cfg , func (o * s3v2.Options ) {
203- o .UseAccelerate = accelerate
204- })
230+ clientV2 := s3v2 .NewFromConfig (cfg , opts ... )
205231
206232 return OpenBucketV2 (ctx , clientV2 , u .Host , & o .Options )
207233 }
0 commit comments