1// Copyright (c) 2016, 2018, 2019, Oracle and/or its affiliates. All rights reserved. 2// Code generated. DO NOT EDIT. 3 4// Object Storage Service API 5// 6// Common set of Object Storage and Archive Storage APIs for managing buckets, objects, and related resources. 7// 8 9package objectstorage 10 11import ( 12 "context" 13 "fmt" 14 "github.com/oracle/oci-go-sdk/common" 15 "net/http" 16) 17 18//ObjectStorageClient a client for ObjectStorage 19type ObjectStorageClient struct { 20 common.BaseClient 21 config *common.ConfigurationProvider 22} 23 24// NewObjectStorageClientWithConfigurationProvider Creates a new default ObjectStorage client with the given configuration provider. 25// the configuration provider will be used for the default signer as well as reading the region 26func NewObjectStorageClientWithConfigurationProvider(configProvider common.ConfigurationProvider) (client ObjectStorageClient, err error) { 27 baseClient, err := common.NewClientWithConfig(configProvider) 28 if err != nil { 29 return 30 } 31 32 client = ObjectStorageClient{BaseClient: baseClient} 33 err = client.setConfigurationProvider(configProvider) 34 return 35} 36 37// SetRegion overrides the region of this client. 38func (client *ObjectStorageClient) SetRegion(region string) { 39 client.Host = common.StringToRegion(region).EndpointForTemplate("objectstorage", "https://objectstorage.{region}.{secondLevelDomain}") 40} 41 42// SetConfigurationProvider sets the configuration provider including the region, returns an error if is not valid 43func (client *ObjectStorageClient) setConfigurationProvider(configProvider common.ConfigurationProvider) error { 44 if ok, err := common.IsConfigurationProviderValid(configProvider); !ok { 45 return err 46 } 47 48 // Error has been checked already 49 region, _ := configProvider.Region() 50 client.SetRegion(region) 51 client.config = &configProvider 52 return nil 53} 54 55// ConfigurationProvider the ConfigurationProvider used in this client, or null if none set 56func (client *ObjectStorageClient) ConfigurationProvider() *common.ConfigurationProvider { 57 return client.config 58} 59 60// AbortMultipartUpload Aborts an in-progress multipart upload and deletes all parts that have been uploaded. 61func (client ObjectStorageClient) AbortMultipartUpload(ctx context.Context, request AbortMultipartUploadRequest) (response AbortMultipartUploadResponse, err error) { 62 var ociResponse common.OCIResponse 63 policy := common.NoRetryPolicy() 64 if request.RetryPolicy() != nil { 65 policy = *request.RetryPolicy() 66 } 67 ociResponse, err = common.Retry(ctx, request, client.abortMultipartUpload, policy) 68 if err != nil { 69 if ociResponse != nil { 70 response = AbortMultipartUploadResponse{RawResponse: ociResponse.HTTPResponse()} 71 } 72 return 73 } 74 if convertedResponse, ok := ociResponse.(AbortMultipartUploadResponse); ok { 75 response = convertedResponse 76 } else { 77 err = fmt.Errorf("failed to convert OCIResponse into AbortMultipartUploadResponse") 78 } 79 return 80} 81 82// abortMultipartUpload implements the OCIOperation interface (enables retrying operations) 83func (client ObjectStorageClient) abortMultipartUpload(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 84 httpRequest, err := request.HTTPRequest(http.MethodDelete, "/n/{namespaceName}/b/{bucketName}/u/{objectName}") 85 if err != nil { 86 return nil, err 87 } 88 89 var response AbortMultipartUploadResponse 90 var httpResponse *http.Response 91 httpResponse, err = client.Call(ctx, &httpRequest) 92 defer common.CloseBodyIfValid(httpResponse) 93 response.RawResponse = httpResponse 94 if err != nil { 95 return response, err 96 } 97 98 err = common.UnmarshalResponse(httpResponse, &response) 99 return response, err 100} 101 102// CancelWorkRequest Cancels a work request. 103func (client ObjectStorageClient) CancelWorkRequest(ctx context.Context, request CancelWorkRequestRequest) (response CancelWorkRequestResponse, err error) { 104 var ociResponse common.OCIResponse 105 policy := common.NoRetryPolicy() 106 if request.RetryPolicy() != nil { 107 policy = *request.RetryPolicy() 108 } 109 ociResponse, err = common.Retry(ctx, request, client.cancelWorkRequest, policy) 110 if err != nil { 111 if ociResponse != nil { 112 response = CancelWorkRequestResponse{RawResponse: ociResponse.HTTPResponse()} 113 } 114 return 115 } 116 if convertedResponse, ok := ociResponse.(CancelWorkRequestResponse); ok { 117 response = convertedResponse 118 } else { 119 err = fmt.Errorf("failed to convert OCIResponse into CancelWorkRequestResponse") 120 } 121 return 122} 123 124// cancelWorkRequest implements the OCIOperation interface (enables retrying operations) 125func (client ObjectStorageClient) cancelWorkRequest(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 126 httpRequest, err := request.HTTPRequest(http.MethodDelete, "/workRequests/{workRequestId}") 127 if err != nil { 128 return nil, err 129 } 130 131 var response CancelWorkRequestResponse 132 var httpResponse *http.Response 133 httpResponse, err = client.Call(ctx, &httpRequest) 134 defer common.CloseBodyIfValid(httpResponse) 135 response.RawResponse = httpResponse 136 if err != nil { 137 return response, err 138 } 139 140 err = common.UnmarshalResponse(httpResponse, &response) 141 return response, err 142} 143 144// CommitMultipartUpload Commits a multipart upload, which involves checking part numbers and entity tags (ETags) of the parts, to create an aggregate object. 145func (client ObjectStorageClient) CommitMultipartUpload(ctx context.Context, request CommitMultipartUploadRequest) (response CommitMultipartUploadResponse, err error) { 146 var ociResponse common.OCIResponse 147 policy := common.NoRetryPolicy() 148 if request.RetryPolicy() != nil { 149 policy = *request.RetryPolicy() 150 } 151 ociResponse, err = common.Retry(ctx, request, client.commitMultipartUpload, policy) 152 if err != nil { 153 if ociResponse != nil { 154 response = CommitMultipartUploadResponse{RawResponse: ociResponse.HTTPResponse()} 155 } 156 return 157 } 158 if convertedResponse, ok := ociResponse.(CommitMultipartUploadResponse); ok { 159 response = convertedResponse 160 } else { 161 err = fmt.Errorf("failed to convert OCIResponse into CommitMultipartUploadResponse") 162 } 163 return 164} 165 166// commitMultipartUpload implements the OCIOperation interface (enables retrying operations) 167func (client ObjectStorageClient) commitMultipartUpload(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 168 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}/u/{objectName}") 169 if err != nil { 170 return nil, err 171 } 172 173 var response CommitMultipartUploadResponse 174 var httpResponse *http.Response 175 httpResponse, err = client.Call(ctx, &httpRequest) 176 defer common.CloseBodyIfValid(httpResponse) 177 response.RawResponse = httpResponse 178 if err != nil { 179 return response, err 180 } 181 182 err = common.UnmarshalResponse(httpResponse, &response) 183 return response, err 184} 185 186// CopyObject Creates a request to copy an object within a region or to another region. 187func (client ObjectStorageClient) CopyObject(ctx context.Context, request CopyObjectRequest) (response CopyObjectResponse, err error) { 188 var ociResponse common.OCIResponse 189 policy := common.NoRetryPolicy() 190 if request.RetryPolicy() != nil { 191 policy = *request.RetryPolicy() 192 } 193 ociResponse, err = common.Retry(ctx, request, client.copyObject, policy) 194 if err != nil { 195 if ociResponse != nil { 196 response = CopyObjectResponse{RawResponse: ociResponse.HTTPResponse()} 197 } 198 return 199 } 200 if convertedResponse, ok := ociResponse.(CopyObjectResponse); ok { 201 response = convertedResponse 202 } else { 203 err = fmt.Errorf("failed to convert OCIResponse into CopyObjectResponse") 204 } 205 return 206} 207 208// copyObject implements the OCIOperation interface (enables retrying operations) 209func (client ObjectStorageClient) copyObject(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 210 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}/actions/copyObject") 211 if err != nil { 212 return nil, err 213 } 214 215 var response CopyObjectResponse 216 var httpResponse *http.Response 217 httpResponse, err = client.Call(ctx, &httpRequest) 218 defer common.CloseBodyIfValid(httpResponse) 219 response.RawResponse = httpResponse 220 if err != nil { 221 return response, err 222 } 223 224 err = common.UnmarshalResponse(httpResponse, &response) 225 return response, err 226} 227 228// CreateBucket Creates a bucket in the given namespace with a bucket name and optional user-defined metadata. Avoid entering 229// confidential information in bucket names. 230func (client ObjectStorageClient) CreateBucket(ctx context.Context, request CreateBucketRequest) (response CreateBucketResponse, err error) { 231 var ociResponse common.OCIResponse 232 policy := common.NoRetryPolicy() 233 if request.RetryPolicy() != nil { 234 policy = *request.RetryPolicy() 235 } 236 ociResponse, err = common.Retry(ctx, request, client.createBucket, policy) 237 if err != nil { 238 if ociResponse != nil { 239 response = CreateBucketResponse{RawResponse: ociResponse.HTTPResponse()} 240 } 241 return 242 } 243 if convertedResponse, ok := ociResponse.(CreateBucketResponse); ok { 244 response = convertedResponse 245 } else { 246 err = fmt.Errorf("failed to convert OCIResponse into CreateBucketResponse") 247 } 248 return 249} 250 251// createBucket implements the OCIOperation interface (enables retrying operations) 252func (client ObjectStorageClient) createBucket(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 253 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b") 254 if err != nil { 255 return nil, err 256 } 257 258 var response CreateBucketResponse 259 var httpResponse *http.Response 260 httpResponse, err = client.Call(ctx, &httpRequest) 261 defer common.CloseBodyIfValid(httpResponse) 262 response.RawResponse = httpResponse 263 if err != nil { 264 return response, err 265 } 266 267 err = common.UnmarshalResponse(httpResponse, &response) 268 return response, err 269} 270 271// CreateMultipartUpload Starts a new multipart upload to a specific object in the given bucket in the given namespace. 272func (client ObjectStorageClient) CreateMultipartUpload(ctx context.Context, request CreateMultipartUploadRequest) (response CreateMultipartUploadResponse, err error) { 273 var ociResponse common.OCIResponse 274 policy := common.NoRetryPolicy() 275 if request.RetryPolicy() != nil { 276 policy = *request.RetryPolicy() 277 } 278 ociResponse, err = common.Retry(ctx, request, client.createMultipartUpload, policy) 279 if err != nil { 280 if ociResponse != nil { 281 response = CreateMultipartUploadResponse{RawResponse: ociResponse.HTTPResponse()} 282 } 283 return 284 } 285 if convertedResponse, ok := ociResponse.(CreateMultipartUploadResponse); ok { 286 response = convertedResponse 287 } else { 288 err = fmt.Errorf("failed to convert OCIResponse into CreateMultipartUploadResponse") 289 } 290 return 291} 292 293// createMultipartUpload implements the OCIOperation interface (enables retrying operations) 294func (client ObjectStorageClient) createMultipartUpload(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 295 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}/u") 296 if err != nil { 297 return nil, err 298 } 299 300 var response CreateMultipartUploadResponse 301 var httpResponse *http.Response 302 httpResponse, err = client.Call(ctx, &httpRequest) 303 defer common.CloseBodyIfValid(httpResponse) 304 response.RawResponse = httpResponse 305 if err != nil { 306 return response, err 307 } 308 309 err = common.UnmarshalResponse(httpResponse, &response) 310 return response, err 311} 312 313// CreatePreauthenticatedRequest Creates a pre-authenticated request specific to the bucket. 314func (client ObjectStorageClient) CreatePreauthenticatedRequest(ctx context.Context, request CreatePreauthenticatedRequestRequest) (response CreatePreauthenticatedRequestResponse, err error) { 315 var ociResponse common.OCIResponse 316 policy := common.NoRetryPolicy() 317 if request.RetryPolicy() != nil { 318 policy = *request.RetryPolicy() 319 } 320 ociResponse, err = common.Retry(ctx, request, client.createPreauthenticatedRequest, policy) 321 if err != nil { 322 if ociResponse != nil { 323 response = CreatePreauthenticatedRequestResponse{RawResponse: ociResponse.HTTPResponse()} 324 } 325 return 326 } 327 if convertedResponse, ok := ociResponse.(CreatePreauthenticatedRequestResponse); ok { 328 response = convertedResponse 329 } else { 330 err = fmt.Errorf("failed to convert OCIResponse into CreatePreauthenticatedRequestResponse") 331 } 332 return 333} 334 335// createPreauthenticatedRequest implements the OCIOperation interface (enables retrying operations) 336func (client ObjectStorageClient) createPreauthenticatedRequest(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 337 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}/p") 338 if err != nil { 339 return nil, err 340 } 341 342 var response CreatePreauthenticatedRequestResponse 343 var httpResponse *http.Response 344 httpResponse, err = client.Call(ctx, &httpRequest) 345 defer common.CloseBodyIfValid(httpResponse) 346 response.RawResponse = httpResponse 347 if err != nil { 348 return response, err 349 } 350 351 err = common.UnmarshalResponse(httpResponse, &response) 352 return response, err 353} 354 355// DeleteBucket Deletes a bucket if the bucket is already empty. If the bucket is not empty, use 356// DeleteObject first. In addition, 357// you cannot delete a bucket that has a multipart upload in progress or a pre-authenticated 358// request associated with that bucket. 359func (client ObjectStorageClient) DeleteBucket(ctx context.Context, request DeleteBucketRequest) (response DeleteBucketResponse, err error) { 360 var ociResponse common.OCIResponse 361 policy := common.NoRetryPolicy() 362 if request.RetryPolicy() != nil { 363 policy = *request.RetryPolicy() 364 } 365 ociResponse, err = common.Retry(ctx, request, client.deleteBucket, policy) 366 if err != nil { 367 if ociResponse != nil { 368 response = DeleteBucketResponse{RawResponse: ociResponse.HTTPResponse()} 369 } 370 return 371 } 372 if convertedResponse, ok := ociResponse.(DeleteBucketResponse); ok { 373 response = convertedResponse 374 } else { 375 err = fmt.Errorf("failed to convert OCIResponse into DeleteBucketResponse") 376 } 377 return 378} 379 380// deleteBucket implements the OCIOperation interface (enables retrying operations) 381func (client ObjectStorageClient) deleteBucket(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 382 httpRequest, err := request.HTTPRequest(http.MethodDelete, "/n/{namespaceName}/b/{bucketName}") 383 if err != nil { 384 return nil, err 385 } 386 387 var response DeleteBucketResponse 388 var httpResponse *http.Response 389 httpResponse, err = client.Call(ctx, &httpRequest) 390 defer common.CloseBodyIfValid(httpResponse) 391 response.RawResponse = httpResponse 392 if err != nil { 393 return response, err 394 } 395 396 err = common.UnmarshalResponse(httpResponse, &response) 397 return response, err 398} 399 400// DeleteObject Deletes an object. 401func (client ObjectStorageClient) DeleteObject(ctx context.Context, request DeleteObjectRequest) (response DeleteObjectResponse, err error) { 402 var ociResponse common.OCIResponse 403 policy := common.NoRetryPolicy() 404 if request.RetryPolicy() != nil { 405 policy = *request.RetryPolicy() 406 } 407 ociResponse, err = common.Retry(ctx, request, client.deleteObject, policy) 408 if err != nil { 409 if ociResponse != nil { 410 response = DeleteObjectResponse{RawResponse: ociResponse.HTTPResponse()} 411 } 412 return 413 } 414 if convertedResponse, ok := ociResponse.(DeleteObjectResponse); ok { 415 response = convertedResponse 416 } else { 417 err = fmt.Errorf("failed to convert OCIResponse into DeleteObjectResponse") 418 } 419 return 420} 421 422// deleteObject implements the OCIOperation interface (enables retrying operations) 423func (client ObjectStorageClient) deleteObject(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 424 httpRequest, err := request.HTTPRequest(http.MethodDelete, "/n/{namespaceName}/b/{bucketName}/o/{objectName}") 425 if err != nil { 426 return nil, err 427 } 428 429 var response DeleteObjectResponse 430 var httpResponse *http.Response 431 httpResponse, err = client.Call(ctx, &httpRequest) 432 defer common.CloseBodyIfValid(httpResponse) 433 response.RawResponse = httpResponse 434 if err != nil { 435 return response, err 436 } 437 438 err = common.UnmarshalResponse(httpResponse, &response) 439 return response, err 440} 441 442// DeleteObjectLifecyclePolicy Deletes the object lifecycle policy for the bucket. 443func (client ObjectStorageClient) DeleteObjectLifecyclePolicy(ctx context.Context, request DeleteObjectLifecyclePolicyRequest) (response DeleteObjectLifecyclePolicyResponse, err error) { 444 var ociResponse common.OCIResponse 445 policy := common.NoRetryPolicy() 446 if request.RetryPolicy() != nil { 447 policy = *request.RetryPolicy() 448 } 449 ociResponse, err = common.Retry(ctx, request, client.deleteObjectLifecyclePolicy, policy) 450 if err != nil { 451 if ociResponse != nil { 452 response = DeleteObjectLifecyclePolicyResponse{RawResponse: ociResponse.HTTPResponse()} 453 } 454 return 455 } 456 if convertedResponse, ok := ociResponse.(DeleteObjectLifecyclePolicyResponse); ok { 457 response = convertedResponse 458 } else { 459 err = fmt.Errorf("failed to convert OCIResponse into DeleteObjectLifecyclePolicyResponse") 460 } 461 return 462} 463 464// deleteObjectLifecyclePolicy implements the OCIOperation interface (enables retrying operations) 465func (client ObjectStorageClient) deleteObjectLifecyclePolicy(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 466 httpRequest, err := request.HTTPRequest(http.MethodDelete, "/n/{namespaceName}/b/{bucketName}/l") 467 if err != nil { 468 return nil, err 469 } 470 471 var response DeleteObjectLifecyclePolicyResponse 472 var httpResponse *http.Response 473 httpResponse, err = client.Call(ctx, &httpRequest) 474 defer common.CloseBodyIfValid(httpResponse) 475 response.RawResponse = httpResponse 476 if err != nil { 477 return response, err 478 } 479 480 err = common.UnmarshalResponse(httpResponse, &response) 481 return response, err 482} 483 484// DeletePreauthenticatedRequest Deletes the pre-authenticated request for the bucket. 485func (client ObjectStorageClient) DeletePreauthenticatedRequest(ctx context.Context, request DeletePreauthenticatedRequestRequest) (response DeletePreauthenticatedRequestResponse, err error) { 486 var ociResponse common.OCIResponse 487 policy := common.NoRetryPolicy() 488 if request.RetryPolicy() != nil { 489 policy = *request.RetryPolicy() 490 } 491 ociResponse, err = common.Retry(ctx, request, client.deletePreauthenticatedRequest, policy) 492 if err != nil { 493 if ociResponse != nil { 494 response = DeletePreauthenticatedRequestResponse{RawResponse: ociResponse.HTTPResponse()} 495 } 496 return 497 } 498 if convertedResponse, ok := ociResponse.(DeletePreauthenticatedRequestResponse); ok { 499 response = convertedResponse 500 } else { 501 err = fmt.Errorf("failed to convert OCIResponse into DeletePreauthenticatedRequestResponse") 502 } 503 return 504} 505 506// deletePreauthenticatedRequest implements the OCIOperation interface (enables retrying operations) 507func (client ObjectStorageClient) deletePreauthenticatedRequest(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 508 httpRequest, err := request.HTTPRequest(http.MethodDelete, "/n/{namespaceName}/b/{bucketName}/p/{parId}") 509 if err != nil { 510 return nil, err 511 } 512 513 var response DeletePreauthenticatedRequestResponse 514 var httpResponse *http.Response 515 httpResponse, err = client.Call(ctx, &httpRequest) 516 defer common.CloseBodyIfValid(httpResponse) 517 response.RawResponse = httpResponse 518 if err != nil { 519 return response, err 520 } 521 522 err = common.UnmarshalResponse(httpResponse, &response) 523 return response, err 524} 525 526// GetBucket Gets the current representation of the given bucket in the given Object Storage namespace. 527func (client ObjectStorageClient) GetBucket(ctx context.Context, request GetBucketRequest) (response GetBucketResponse, err error) { 528 var ociResponse common.OCIResponse 529 policy := common.NoRetryPolicy() 530 if request.RetryPolicy() != nil { 531 policy = *request.RetryPolicy() 532 } 533 ociResponse, err = common.Retry(ctx, request, client.getBucket, policy) 534 if err != nil { 535 if ociResponse != nil { 536 response = GetBucketResponse{RawResponse: ociResponse.HTTPResponse()} 537 } 538 return 539 } 540 if convertedResponse, ok := ociResponse.(GetBucketResponse); ok { 541 response = convertedResponse 542 } else { 543 err = fmt.Errorf("failed to convert OCIResponse into GetBucketResponse") 544 } 545 return 546} 547 548// getBucket implements the OCIOperation interface (enables retrying operations) 549func (client ObjectStorageClient) getBucket(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 550 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}") 551 if err != nil { 552 return nil, err 553 } 554 555 var response GetBucketResponse 556 var httpResponse *http.Response 557 httpResponse, err = client.Call(ctx, &httpRequest) 558 defer common.CloseBodyIfValid(httpResponse) 559 response.RawResponse = httpResponse 560 if err != nil { 561 return response, err 562 } 563 564 err = common.UnmarshalResponse(httpResponse, &response) 565 return response, err 566} 567 568// GetNamespace Each Oracle Cloud Infrastructure tenant is assigned one unique and uneditable Object Storage namespace. The namespace 569// is a system-generated string assigned during account creation. For some older tenancies, the namespace string may be 570// the tenancy name in all lower-case letters. You cannot edit a namespace. 571// GetNamespace returns the name of the Object Storage namespace for the user making the request. 572// If an optional compartmentId query parameter is provided, GetNamespace returns the namespace name of the corresponding 573// tenancy, provided the user has access to it. 574func (client ObjectStorageClient) GetNamespace(ctx context.Context, request GetNamespaceRequest) (response GetNamespaceResponse, err error) { 575 var ociResponse common.OCIResponse 576 policy := common.NoRetryPolicy() 577 if request.RetryPolicy() != nil { 578 policy = *request.RetryPolicy() 579 } 580 ociResponse, err = common.Retry(ctx, request, client.getNamespace, policy) 581 if err != nil { 582 if ociResponse != nil { 583 response = GetNamespaceResponse{RawResponse: ociResponse.HTTPResponse()} 584 } 585 return 586 } 587 if convertedResponse, ok := ociResponse.(GetNamespaceResponse); ok { 588 response = convertedResponse 589 } else { 590 err = fmt.Errorf("failed to convert OCIResponse into GetNamespaceResponse") 591 } 592 return 593} 594 595// getNamespace implements the OCIOperation interface (enables retrying operations) 596func (client ObjectStorageClient) getNamespace(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 597 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n") 598 if err != nil { 599 return nil, err 600 } 601 602 var response GetNamespaceResponse 603 var httpResponse *http.Response 604 httpResponse, err = client.Call(ctx, &httpRequest) 605 defer common.CloseBodyIfValid(httpResponse) 606 response.RawResponse = httpResponse 607 if err != nil { 608 return response, err 609 } 610 611 err = common.UnmarshalResponse(httpResponse, &response) 612 return response, err 613} 614 615// GetNamespaceMetadata Gets the metadata for the Object Storage namespace, which contains defaultS3CompartmentId and 616// defaultSwiftCompartmentId. 617// Any user with the OBJECTSTORAGE_NAMESPACE_READ permission will be able to see the current metadata. If you are 618// not authorized, talk to an administrator. If you are an administrator who needs to write policies 619// to give users access, see 620// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). 621func (client ObjectStorageClient) GetNamespaceMetadata(ctx context.Context, request GetNamespaceMetadataRequest) (response GetNamespaceMetadataResponse, err error) { 622 var ociResponse common.OCIResponse 623 policy := common.NoRetryPolicy() 624 if request.RetryPolicy() != nil { 625 policy = *request.RetryPolicy() 626 } 627 ociResponse, err = common.Retry(ctx, request, client.getNamespaceMetadata, policy) 628 if err != nil { 629 if ociResponse != nil { 630 response = GetNamespaceMetadataResponse{RawResponse: ociResponse.HTTPResponse()} 631 } 632 return 633 } 634 if convertedResponse, ok := ociResponse.(GetNamespaceMetadataResponse); ok { 635 response = convertedResponse 636 } else { 637 err = fmt.Errorf("failed to convert OCIResponse into GetNamespaceMetadataResponse") 638 } 639 return 640} 641 642// getNamespaceMetadata implements the OCIOperation interface (enables retrying operations) 643func (client ObjectStorageClient) getNamespaceMetadata(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 644 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}") 645 if err != nil { 646 return nil, err 647 } 648 649 var response GetNamespaceMetadataResponse 650 var httpResponse *http.Response 651 httpResponse, err = client.Call(ctx, &httpRequest) 652 defer common.CloseBodyIfValid(httpResponse) 653 response.RawResponse = httpResponse 654 if err != nil { 655 return response, err 656 } 657 658 err = common.UnmarshalResponse(httpResponse, &response) 659 return response, err 660} 661 662// GetObject Gets the metadata and body of an object. 663func (client ObjectStorageClient) GetObject(ctx context.Context, request GetObjectRequest) (response GetObjectResponse, err error) { 664 var ociResponse common.OCIResponse 665 policy := common.NoRetryPolicy() 666 if request.RetryPolicy() != nil { 667 policy = *request.RetryPolicy() 668 } 669 ociResponse, err = common.Retry(ctx, request, client.getObject, policy) 670 if err != nil { 671 if ociResponse != nil { 672 response = GetObjectResponse{RawResponse: ociResponse.HTTPResponse()} 673 } 674 return 675 } 676 if convertedResponse, ok := ociResponse.(GetObjectResponse); ok { 677 response = convertedResponse 678 } else { 679 err = fmt.Errorf("failed to convert OCIResponse into GetObjectResponse") 680 } 681 return 682} 683 684// getObject implements the OCIOperation interface (enables retrying operations) 685func (client ObjectStorageClient) getObject(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 686 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}/o/{objectName}") 687 if err != nil { 688 return nil, err 689 } 690 691 var response GetObjectResponse 692 var httpResponse *http.Response 693 httpResponse, err = client.Call(ctx, &httpRequest) 694 response.RawResponse = httpResponse 695 if err != nil { 696 return response, err 697 } 698 699 err = common.UnmarshalResponse(httpResponse, &response) 700 return response, err 701} 702 703// GetObjectLifecyclePolicy Gets the object lifecycle policy for the bucket. 704func (client ObjectStorageClient) GetObjectLifecyclePolicy(ctx context.Context, request GetObjectLifecyclePolicyRequest) (response GetObjectLifecyclePolicyResponse, err error) { 705 var ociResponse common.OCIResponse 706 policy := common.NoRetryPolicy() 707 if request.RetryPolicy() != nil { 708 policy = *request.RetryPolicy() 709 } 710 ociResponse, err = common.Retry(ctx, request, client.getObjectLifecyclePolicy, policy) 711 if err != nil { 712 if ociResponse != nil { 713 response = GetObjectLifecyclePolicyResponse{RawResponse: ociResponse.HTTPResponse()} 714 } 715 return 716 } 717 if convertedResponse, ok := ociResponse.(GetObjectLifecyclePolicyResponse); ok { 718 response = convertedResponse 719 } else { 720 err = fmt.Errorf("failed to convert OCIResponse into GetObjectLifecyclePolicyResponse") 721 } 722 return 723} 724 725// getObjectLifecyclePolicy implements the OCIOperation interface (enables retrying operations) 726func (client ObjectStorageClient) getObjectLifecyclePolicy(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 727 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}/l") 728 if err != nil { 729 return nil, err 730 } 731 732 var response GetObjectLifecyclePolicyResponse 733 var httpResponse *http.Response 734 httpResponse, err = client.Call(ctx, &httpRequest) 735 defer common.CloseBodyIfValid(httpResponse) 736 response.RawResponse = httpResponse 737 if err != nil { 738 return response, err 739 } 740 741 err = common.UnmarshalResponse(httpResponse, &response) 742 return response, err 743} 744 745// GetPreauthenticatedRequest Gets the pre-authenticated request for the bucket. 746func (client ObjectStorageClient) GetPreauthenticatedRequest(ctx context.Context, request GetPreauthenticatedRequestRequest) (response GetPreauthenticatedRequestResponse, err error) { 747 var ociResponse common.OCIResponse 748 policy := common.NoRetryPolicy() 749 if request.RetryPolicy() != nil { 750 policy = *request.RetryPolicy() 751 } 752 ociResponse, err = common.Retry(ctx, request, client.getPreauthenticatedRequest, policy) 753 if err != nil { 754 if ociResponse != nil { 755 response = GetPreauthenticatedRequestResponse{RawResponse: ociResponse.HTTPResponse()} 756 } 757 return 758 } 759 if convertedResponse, ok := ociResponse.(GetPreauthenticatedRequestResponse); ok { 760 response = convertedResponse 761 } else { 762 err = fmt.Errorf("failed to convert OCIResponse into GetPreauthenticatedRequestResponse") 763 } 764 return 765} 766 767// getPreauthenticatedRequest implements the OCIOperation interface (enables retrying operations) 768func (client ObjectStorageClient) getPreauthenticatedRequest(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 769 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}/p/{parId}") 770 if err != nil { 771 return nil, err 772 } 773 774 var response GetPreauthenticatedRequestResponse 775 var httpResponse *http.Response 776 httpResponse, err = client.Call(ctx, &httpRequest) 777 defer common.CloseBodyIfValid(httpResponse) 778 response.RawResponse = httpResponse 779 if err != nil { 780 return response, err 781 } 782 783 err = common.UnmarshalResponse(httpResponse, &response) 784 return response, err 785} 786 787// GetWorkRequest Gets the status of the work request for the given ID. 788func (client ObjectStorageClient) GetWorkRequest(ctx context.Context, request GetWorkRequestRequest) (response GetWorkRequestResponse, err error) { 789 var ociResponse common.OCIResponse 790 policy := common.NoRetryPolicy() 791 if request.RetryPolicy() != nil { 792 policy = *request.RetryPolicy() 793 } 794 ociResponse, err = common.Retry(ctx, request, client.getWorkRequest, policy) 795 if err != nil { 796 if ociResponse != nil { 797 response = GetWorkRequestResponse{RawResponse: ociResponse.HTTPResponse()} 798 } 799 return 800 } 801 if convertedResponse, ok := ociResponse.(GetWorkRequestResponse); ok { 802 response = convertedResponse 803 } else { 804 err = fmt.Errorf("failed to convert OCIResponse into GetWorkRequestResponse") 805 } 806 return 807} 808 809// getWorkRequest implements the OCIOperation interface (enables retrying operations) 810func (client ObjectStorageClient) getWorkRequest(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 811 httpRequest, err := request.HTTPRequest(http.MethodGet, "/workRequests/{workRequestId}") 812 if err != nil { 813 return nil, err 814 } 815 816 var response GetWorkRequestResponse 817 var httpResponse *http.Response 818 httpResponse, err = client.Call(ctx, &httpRequest) 819 defer common.CloseBodyIfValid(httpResponse) 820 response.RawResponse = httpResponse 821 if err != nil { 822 return response, err 823 } 824 825 err = common.UnmarshalResponse(httpResponse, &response) 826 return response, err 827} 828 829// HeadBucket Efficiently checks to see if a bucket exists and gets the current entity tag (ETag) for the bucket. 830func (client ObjectStorageClient) HeadBucket(ctx context.Context, request HeadBucketRequest) (response HeadBucketResponse, err error) { 831 var ociResponse common.OCIResponse 832 policy := common.NoRetryPolicy() 833 if request.RetryPolicy() != nil { 834 policy = *request.RetryPolicy() 835 } 836 ociResponse, err = common.Retry(ctx, request, client.headBucket, policy) 837 if err != nil { 838 if ociResponse != nil { 839 response = HeadBucketResponse{RawResponse: ociResponse.HTTPResponse()} 840 } 841 return 842 } 843 if convertedResponse, ok := ociResponse.(HeadBucketResponse); ok { 844 response = convertedResponse 845 } else { 846 err = fmt.Errorf("failed to convert OCIResponse into HeadBucketResponse") 847 } 848 return 849} 850 851// headBucket implements the OCIOperation interface (enables retrying operations) 852func (client ObjectStorageClient) headBucket(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 853 httpRequest, err := request.HTTPRequest(http.MethodHead, "/n/{namespaceName}/b/{bucketName}") 854 if err != nil { 855 return nil, err 856 } 857 858 var response HeadBucketResponse 859 var httpResponse *http.Response 860 httpResponse, err = client.Call(ctx, &httpRequest) 861 defer common.CloseBodyIfValid(httpResponse) 862 response.RawResponse = httpResponse 863 if err != nil { 864 return response, err 865 } 866 867 err = common.UnmarshalResponse(httpResponse, &response) 868 return response, err 869} 870 871// HeadObject Gets the user-defined metadata and entity tag (ETag) for an object. 872func (client ObjectStorageClient) HeadObject(ctx context.Context, request HeadObjectRequest) (response HeadObjectResponse, err error) { 873 var ociResponse common.OCIResponse 874 policy := common.NoRetryPolicy() 875 if request.RetryPolicy() != nil { 876 policy = *request.RetryPolicy() 877 } 878 ociResponse, err = common.Retry(ctx, request, client.headObject, policy) 879 if err != nil { 880 if ociResponse != nil { 881 response = HeadObjectResponse{RawResponse: ociResponse.HTTPResponse()} 882 } 883 return 884 } 885 if convertedResponse, ok := ociResponse.(HeadObjectResponse); ok { 886 response = convertedResponse 887 } else { 888 err = fmt.Errorf("failed to convert OCIResponse into HeadObjectResponse") 889 } 890 return 891} 892 893// headObject implements the OCIOperation interface (enables retrying operations) 894func (client ObjectStorageClient) headObject(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 895 httpRequest, err := request.HTTPRequest(http.MethodHead, "/n/{namespaceName}/b/{bucketName}/o/{objectName}") 896 if err != nil { 897 return nil, err 898 } 899 900 var response HeadObjectResponse 901 var httpResponse *http.Response 902 httpResponse, err = client.Call(ctx, &httpRequest) 903 defer common.CloseBodyIfValid(httpResponse) 904 response.RawResponse = httpResponse 905 if err != nil { 906 return response, err 907 } 908 909 err = common.UnmarshalResponse(httpResponse, &response) 910 return response, err 911} 912 913// ListBuckets Gets a list of all BucketSummary items in a compartment. A BucketSummary contains only summary fields for the bucket 914// and does not contain fields like the user-defined metadata. 915// To use this and other API operations, you must be authorized in an IAM policy. If you are not authorized, 916// talk to an administrator. If you are an administrator who needs to write policies to give users access, see 917// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). 918func (client ObjectStorageClient) ListBuckets(ctx context.Context, request ListBucketsRequest) (response ListBucketsResponse, err error) { 919 var ociResponse common.OCIResponse 920 policy := common.NoRetryPolicy() 921 if request.RetryPolicy() != nil { 922 policy = *request.RetryPolicy() 923 } 924 ociResponse, err = common.Retry(ctx, request, client.listBuckets, policy) 925 if err != nil { 926 if ociResponse != nil { 927 response = ListBucketsResponse{RawResponse: ociResponse.HTTPResponse()} 928 } 929 return 930 } 931 if convertedResponse, ok := ociResponse.(ListBucketsResponse); ok { 932 response = convertedResponse 933 } else { 934 err = fmt.Errorf("failed to convert OCIResponse into ListBucketsResponse") 935 } 936 return 937} 938 939// listBuckets implements the OCIOperation interface (enables retrying operations) 940func (client ObjectStorageClient) listBuckets(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 941 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b") 942 if err != nil { 943 return nil, err 944 } 945 946 var response ListBucketsResponse 947 var httpResponse *http.Response 948 httpResponse, err = client.Call(ctx, &httpRequest) 949 defer common.CloseBodyIfValid(httpResponse) 950 response.RawResponse = httpResponse 951 if err != nil { 952 return response, err 953 } 954 955 err = common.UnmarshalResponse(httpResponse, &response) 956 return response, err 957} 958 959// ListMultipartUploadParts Lists the parts of an in-progress multipart upload. 960func (client ObjectStorageClient) ListMultipartUploadParts(ctx context.Context, request ListMultipartUploadPartsRequest) (response ListMultipartUploadPartsResponse, err error) { 961 var ociResponse common.OCIResponse 962 policy := common.NoRetryPolicy() 963 if request.RetryPolicy() != nil { 964 policy = *request.RetryPolicy() 965 } 966 ociResponse, err = common.Retry(ctx, request, client.listMultipartUploadParts, policy) 967 if err != nil { 968 if ociResponse != nil { 969 response = ListMultipartUploadPartsResponse{RawResponse: ociResponse.HTTPResponse()} 970 } 971 return 972 } 973 if convertedResponse, ok := ociResponse.(ListMultipartUploadPartsResponse); ok { 974 response = convertedResponse 975 } else { 976 err = fmt.Errorf("failed to convert OCIResponse into ListMultipartUploadPartsResponse") 977 } 978 return 979} 980 981// listMultipartUploadParts implements the OCIOperation interface (enables retrying operations) 982func (client ObjectStorageClient) listMultipartUploadParts(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 983 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}/u/{objectName}") 984 if err != nil { 985 return nil, err 986 } 987 988 var response ListMultipartUploadPartsResponse 989 var httpResponse *http.Response 990 httpResponse, err = client.Call(ctx, &httpRequest) 991 defer common.CloseBodyIfValid(httpResponse) 992 response.RawResponse = httpResponse 993 if err != nil { 994 return response, err 995 } 996 997 err = common.UnmarshalResponse(httpResponse, &response) 998 return response, err 999} 1000 1001// ListMultipartUploads Lists all of the in-progress multipart uploads for the given bucket in the given Object Storage namespace. 1002func (client ObjectStorageClient) ListMultipartUploads(ctx context.Context, request ListMultipartUploadsRequest) (response ListMultipartUploadsResponse, err error) { 1003 var ociResponse common.OCIResponse 1004 policy := common.NoRetryPolicy() 1005 if request.RetryPolicy() != nil { 1006 policy = *request.RetryPolicy() 1007 } 1008 ociResponse, err = common.Retry(ctx, request, client.listMultipartUploads, policy) 1009 if err != nil { 1010 if ociResponse != nil { 1011 response = ListMultipartUploadsResponse{RawResponse: ociResponse.HTTPResponse()} 1012 } 1013 return 1014 } 1015 if convertedResponse, ok := ociResponse.(ListMultipartUploadsResponse); ok { 1016 response = convertedResponse 1017 } else { 1018 err = fmt.Errorf("failed to convert OCIResponse into ListMultipartUploadsResponse") 1019 } 1020 return 1021} 1022 1023// listMultipartUploads implements the OCIOperation interface (enables retrying operations) 1024func (client ObjectStorageClient) listMultipartUploads(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1025 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}/u") 1026 if err != nil { 1027 return nil, err 1028 } 1029 1030 var response ListMultipartUploadsResponse 1031 var httpResponse *http.Response 1032 httpResponse, err = client.Call(ctx, &httpRequest) 1033 defer common.CloseBodyIfValid(httpResponse) 1034 response.RawResponse = httpResponse 1035 if err != nil { 1036 return response, err 1037 } 1038 1039 err = common.UnmarshalResponse(httpResponse, &response) 1040 return response, err 1041} 1042 1043// ListObjects Lists the objects in a bucket. 1044// To use this and other API operations, you must be authorized in an IAM policy. If you are not authorized, 1045// talk to an administrator. If you are an administrator who needs to write policies to give users access, see 1046// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). 1047func (client ObjectStorageClient) ListObjects(ctx context.Context, request ListObjectsRequest) (response ListObjectsResponse, err error) { 1048 var ociResponse common.OCIResponse 1049 policy := common.NoRetryPolicy() 1050 if request.RetryPolicy() != nil { 1051 policy = *request.RetryPolicy() 1052 } 1053 ociResponse, err = common.Retry(ctx, request, client.listObjects, policy) 1054 if err != nil { 1055 if ociResponse != nil { 1056 response = ListObjectsResponse{RawResponse: ociResponse.HTTPResponse()} 1057 } 1058 return 1059 } 1060 if convertedResponse, ok := ociResponse.(ListObjectsResponse); ok { 1061 response = convertedResponse 1062 } else { 1063 err = fmt.Errorf("failed to convert OCIResponse into ListObjectsResponse") 1064 } 1065 return 1066} 1067 1068// listObjects implements the OCIOperation interface (enables retrying operations) 1069func (client ObjectStorageClient) listObjects(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1070 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}/o") 1071 if err != nil { 1072 return nil, err 1073 } 1074 1075 var response ListObjectsResponse 1076 var httpResponse *http.Response 1077 httpResponse, err = client.Call(ctx, &httpRequest) 1078 defer common.CloseBodyIfValid(httpResponse) 1079 response.RawResponse = httpResponse 1080 if err != nil { 1081 return response, err 1082 } 1083 1084 err = common.UnmarshalResponse(httpResponse, &response) 1085 return response, err 1086} 1087 1088// ListPreauthenticatedRequests Lists pre-authenticated requests for the bucket. 1089func (client ObjectStorageClient) ListPreauthenticatedRequests(ctx context.Context, request ListPreauthenticatedRequestsRequest) (response ListPreauthenticatedRequestsResponse, err error) { 1090 var ociResponse common.OCIResponse 1091 policy := common.NoRetryPolicy() 1092 if request.RetryPolicy() != nil { 1093 policy = *request.RetryPolicy() 1094 } 1095 ociResponse, err = common.Retry(ctx, request, client.listPreauthenticatedRequests, policy) 1096 if err != nil { 1097 if ociResponse != nil { 1098 response = ListPreauthenticatedRequestsResponse{RawResponse: ociResponse.HTTPResponse()} 1099 } 1100 return 1101 } 1102 if convertedResponse, ok := ociResponse.(ListPreauthenticatedRequestsResponse); ok { 1103 response = convertedResponse 1104 } else { 1105 err = fmt.Errorf("failed to convert OCIResponse into ListPreauthenticatedRequestsResponse") 1106 } 1107 return 1108} 1109 1110// listPreauthenticatedRequests implements the OCIOperation interface (enables retrying operations) 1111func (client ObjectStorageClient) listPreauthenticatedRequests(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1112 httpRequest, err := request.HTTPRequest(http.MethodGet, "/n/{namespaceName}/b/{bucketName}/p") 1113 if err != nil { 1114 return nil, err 1115 } 1116 1117 var response ListPreauthenticatedRequestsResponse 1118 var httpResponse *http.Response 1119 httpResponse, err = client.Call(ctx, &httpRequest) 1120 defer common.CloseBodyIfValid(httpResponse) 1121 response.RawResponse = httpResponse 1122 if err != nil { 1123 return response, err 1124 } 1125 1126 err = common.UnmarshalResponse(httpResponse, &response) 1127 return response, err 1128} 1129 1130// ListWorkRequestErrors Lists the errors of the work request with the given ID. 1131func (client ObjectStorageClient) ListWorkRequestErrors(ctx context.Context, request ListWorkRequestErrorsRequest) (response ListWorkRequestErrorsResponse, err error) { 1132 var ociResponse common.OCIResponse 1133 policy := common.NoRetryPolicy() 1134 if request.RetryPolicy() != nil { 1135 policy = *request.RetryPolicy() 1136 } 1137 ociResponse, err = common.Retry(ctx, request, client.listWorkRequestErrors, policy) 1138 if err != nil { 1139 if ociResponse != nil { 1140 response = ListWorkRequestErrorsResponse{RawResponse: ociResponse.HTTPResponse()} 1141 } 1142 return 1143 } 1144 if convertedResponse, ok := ociResponse.(ListWorkRequestErrorsResponse); ok { 1145 response = convertedResponse 1146 } else { 1147 err = fmt.Errorf("failed to convert OCIResponse into ListWorkRequestErrorsResponse") 1148 } 1149 return 1150} 1151 1152// listWorkRequestErrors implements the OCIOperation interface (enables retrying operations) 1153func (client ObjectStorageClient) listWorkRequestErrors(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1154 httpRequest, err := request.HTTPRequest(http.MethodGet, "/workRequests/{workRequestId}/errors") 1155 if err != nil { 1156 return nil, err 1157 } 1158 1159 var response ListWorkRequestErrorsResponse 1160 var httpResponse *http.Response 1161 httpResponse, err = client.Call(ctx, &httpRequest) 1162 defer common.CloseBodyIfValid(httpResponse) 1163 response.RawResponse = httpResponse 1164 if err != nil { 1165 return response, err 1166 } 1167 1168 err = common.UnmarshalResponse(httpResponse, &response) 1169 return response, err 1170} 1171 1172// ListWorkRequestLogs Lists the logs of the work request with the given ID. 1173func (client ObjectStorageClient) ListWorkRequestLogs(ctx context.Context, request ListWorkRequestLogsRequest) (response ListWorkRequestLogsResponse, err error) { 1174 var ociResponse common.OCIResponse 1175 policy := common.NoRetryPolicy() 1176 if request.RetryPolicy() != nil { 1177 policy = *request.RetryPolicy() 1178 } 1179 ociResponse, err = common.Retry(ctx, request, client.listWorkRequestLogs, policy) 1180 if err != nil { 1181 if ociResponse != nil { 1182 response = ListWorkRequestLogsResponse{RawResponse: ociResponse.HTTPResponse()} 1183 } 1184 return 1185 } 1186 if convertedResponse, ok := ociResponse.(ListWorkRequestLogsResponse); ok { 1187 response = convertedResponse 1188 } else { 1189 err = fmt.Errorf("failed to convert OCIResponse into ListWorkRequestLogsResponse") 1190 } 1191 return 1192} 1193 1194// listWorkRequestLogs implements the OCIOperation interface (enables retrying operations) 1195func (client ObjectStorageClient) listWorkRequestLogs(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1196 httpRequest, err := request.HTTPRequest(http.MethodGet, "/workRequests/{workRequestId}/logs") 1197 if err != nil { 1198 return nil, err 1199 } 1200 1201 var response ListWorkRequestLogsResponse 1202 var httpResponse *http.Response 1203 httpResponse, err = client.Call(ctx, &httpRequest) 1204 defer common.CloseBodyIfValid(httpResponse) 1205 response.RawResponse = httpResponse 1206 if err != nil { 1207 return response, err 1208 } 1209 1210 err = common.UnmarshalResponse(httpResponse, &response) 1211 return response, err 1212} 1213 1214// ListWorkRequests Lists the work requests in a compartment. 1215func (client ObjectStorageClient) ListWorkRequests(ctx context.Context, request ListWorkRequestsRequest) (response ListWorkRequestsResponse, err error) { 1216 var ociResponse common.OCIResponse 1217 policy := common.NoRetryPolicy() 1218 if request.RetryPolicy() != nil { 1219 policy = *request.RetryPolicy() 1220 } 1221 ociResponse, err = common.Retry(ctx, request, client.listWorkRequests, policy) 1222 if err != nil { 1223 if ociResponse != nil { 1224 response = ListWorkRequestsResponse{RawResponse: ociResponse.HTTPResponse()} 1225 } 1226 return 1227 } 1228 if convertedResponse, ok := ociResponse.(ListWorkRequestsResponse); ok { 1229 response = convertedResponse 1230 } else { 1231 err = fmt.Errorf("failed to convert OCIResponse into ListWorkRequestsResponse") 1232 } 1233 return 1234} 1235 1236// listWorkRequests implements the OCIOperation interface (enables retrying operations) 1237func (client ObjectStorageClient) listWorkRequests(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1238 httpRequest, err := request.HTTPRequest(http.MethodGet, "/workRequests") 1239 if err != nil { 1240 return nil, err 1241 } 1242 1243 var response ListWorkRequestsResponse 1244 var httpResponse *http.Response 1245 httpResponse, err = client.Call(ctx, &httpRequest) 1246 defer common.CloseBodyIfValid(httpResponse) 1247 response.RawResponse = httpResponse 1248 if err != nil { 1249 return response, err 1250 } 1251 1252 err = common.UnmarshalResponse(httpResponse, &response) 1253 return response, err 1254} 1255 1256// PutObject Creates a new object or overwrites an existing one. See Special Instructions for Object Storage 1257// PUT (https://docs.cloud.oracle.com/Content/API/Concepts/signingrequests.htm#ObjectStoragePut) for request signature requirements. 1258func (client ObjectStorageClient) PutObject(ctx context.Context, request PutObjectRequest) (response PutObjectResponse, err error) { 1259 var ociResponse common.OCIResponse 1260 policy := common.NoRetryPolicy() 1261 if request.RetryPolicy() != nil { 1262 policy = *request.RetryPolicy() 1263 } 1264 ociResponse, err = common.Retry(ctx, request, client.putObject, policy) 1265 if err != nil { 1266 if ociResponse != nil { 1267 response = PutObjectResponse{RawResponse: ociResponse.HTTPResponse()} 1268 } 1269 return 1270 } 1271 if convertedResponse, ok := ociResponse.(PutObjectResponse); ok { 1272 response = convertedResponse 1273 } else { 1274 err = fmt.Errorf("failed to convert OCIResponse into PutObjectResponse") 1275 } 1276 return 1277} 1278 1279// putObject implements the OCIOperation interface (enables retrying operations) 1280func (client ObjectStorageClient) putObject(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1281 httpRequest, err := request.HTTPRequest(http.MethodPut, "/n/{namespaceName}/b/{bucketName}/o/{objectName}") 1282 if err != nil { 1283 return nil, err 1284 } 1285 1286 var response PutObjectResponse 1287 var httpResponse *http.Response 1288 var customSigner common.HTTPRequestSigner 1289 excludeBodySigningPredicate := func(r *http.Request) bool { return false } 1290 customSigner, err = common.NewSignerFromOCIRequestSigner(client.Signer, excludeBodySigningPredicate) 1291 1292 //if there was an error overriding the signer, then use the signer from the client itself 1293 if err != nil { 1294 customSigner = client.Signer 1295 } 1296 1297 //Execute the request with a custom signer 1298 httpResponse, err = client.CallWithDetails(ctx, &httpRequest, common.ClientCallDetails{Signer: customSigner}) 1299 defer common.CloseBodyIfValid(httpResponse) 1300 response.RawResponse = httpResponse 1301 if err != nil { 1302 return response, err 1303 } 1304 1305 err = common.UnmarshalResponse(httpResponse, &response) 1306 return response, err 1307} 1308 1309// PutObjectLifecyclePolicy Creates or replaces the object lifecycle policy for the bucket. 1310func (client ObjectStorageClient) PutObjectLifecyclePolicy(ctx context.Context, request PutObjectLifecyclePolicyRequest) (response PutObjectLifecyclePolicyResponse, err error) { 1311 var ociResponse common.OCIResponse 1312 policy := common.NoRetryPolicy() 1313 if request.RetryPolicy() != nil { 1314 policy = *request.RetryPolicy() 1315 } 1316 ociResponse, err = common.Retry(ctx, request, client.putObjectLifecyclePolicy, policy) 1317 if err != nil { 1318 if ociResponse != nil { 1319 response = PutObjectLifecyclePolicyResponse{RawResponse: ociResponse.HTTPResponse()} 1320 } 1321 return 1322 } 1323 if convertedResponse, ok := ociResponse.(PutObjectLifecyclePolicyResponse); ok { 1324 response = convertedResponse 1325 } else { 1326 err = fmt.Errorf("failed to convert OCIResponse into PutObjectLifecyclePolicyResponse") 1327 } 1328 return 1329} 1330 1331// putObjectLifecyclePolicy implements the OCIOperation interface (enables retrying operations) 1332func (client ObjectStorageClient) putObjectLifecyclePolicy(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1333 httpRequest, err := request.HTTPRequest(http.MethodPut, "/n/{namespaceName}/b/{bucketName}/l") 1334 if err != nil { 1335 return nil, err 1336 } 1337 1338 var response PutObjectLifecyclePolicyResponse 1339 var httpResponse *http.Response 1340 httpResponse, err = client.Call(ctx, &httpRequest) 1341 defer common.CloseBodyIfValid(httpResponse) 1342 response.RawResponse = httpResponse 1343 if err != nil { 1344 return response, err 1345 } 1346 1347 err = common.UnmarshalResponse(httpResponse, &response) 1348 return response, err 1349} 1350 1351// ReencryptBucket Reencrypts the data encryption key of the bucket and objects in the bucket. This is an asynchronous call, the 1352// system will start a work request task to reencrypt the data encryption key of the objects and chunks in the bucket. 1353// Only the objects created before the time the API call will be reencrypted. The call can take long time depending 1354// on how many objects in the bucket and how big the objects are. This API will return a work request id, so the user 1355// can use this id to retrieve the status of the work request task. 1356// A user can update kmsKeyId of the bucket, and then call this API, so the data encryption key of the bucket and 1357// objects in the bucket will be reencryped by the new kmsKeyId. Note that the system doesn't maintain what 1358// ksmKeyId is used to encrypt the object, the user has to maintain the mapping if they want. 1359func (client ObjectStorageClient) ReencryptBucket(ctx context.Context, request ReencryptBucketRequest) (response ReencryptBucketResponse, err error) { 1360 var ociResponse common.OCIResponse 1361 policy := common.NoRetryPolicy() 1362 if request.RetryPolicy() != nil { 1363 policy = *request.RetryPolicy() 1364 } 1365 ociResponse, err = common.Retry(ctx, request, client.reencryptBucket, policy) 1366 if err != nil { 1367 if ociResponse != nil { 1368 response = ReencryptBucketResponse{RawResponse: ociResponse.HTTPResponse()} 1369 } 1370 return 1371 } 1372 if convertedResponse, ok := ociResponse.(ReencryptBucketResponse); ok { 1373 response = convertedResponse 1374 } else { 1375 err = fmt.Errorf("failed to convert OCIResponse into ReencryptBucketResponse") 1376 } 1377 return 1378} 1379 1380// reencryptBucket implements the OCIOperation interface (enables retrying operations) 1381func (client ObjectStorageClient) reencryptBucket(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1382 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}/actions/reencrypt") 1383 if err != nil { 1384 return nil, err 1385 } 1386 1387 var response ReencryptBucketResponse 1388 var httpResponse *http.Response 1389 httpResponse, err = client.Call(ctx, &httpRequest) 1390 defer common.CloseBodyIfValid(httpResponse) 1391 response.RawResponse = httpResponse 1392 if err != nil { 1393 return response, err 1394 } 1395 1396 err = common.UnmarshalResponse(httpResponse, &response) 1397 return response, err 1398} 1399 1400// RenameObject Rename an object in the given Object Storage namespace. 1401func (client ObjectStorageClient) RenameObject(ctx context.Context, request RenameObjectRequest) (response RenameObjectResponse, err error) { 1402 var ociResponse common.OCIResponse 1403 policy := common.NoRetryPolicy() 1404 if request.RetryPolicy() != nil { 1405 policy = *request.RetryPolicy() 1406 } 1407 ociResponse, err = common.Retry(ctx, request, client.renameObject, policy) 1408 if err != nil { 1409 if ociResponse != nil { 1410 response = RenameObjectResponse{RawResponse: ociResponse.HTTPResponse()} 1411 } 1412 return 1413 } 1414 if convertedResponse, ok := ociResponse.(RenameObjectResponse); ok { 1415 response = convertedResponse 1416 } else { 1417 err = fmt.Errorf("failed to convert OCIResponse into RenameObjectResponse") 1418 } 1419 return 1420} 1421 1422// renameObject implements the OCIOperation interface (enables retrying operations) 1423func (client ObjectStorageClient) renameObject(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1424 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}/actions/renameObject") 1425 if err != nil { 1426 return nil, err 1427 } 1428 1429 var response RenameObjectResponse 1430 var httpResponse *http.Response 1431 httpResponse, err = client.Call(ctx, &httpRequest) 1432 defer common.CloseBodyIfValid(httpResponse) 1433 response.RawResponse = httpResponse 1434 if err != nil { 1435 return response, err 1436 } 1437 1438 err = common.UnmarshalResponse(httpResponse, &response) 1439 return response, err 1440} 1441 1442// RestoreObjects Restores one or more objects specified by the objectName parameter. 1443// By default objects will be restored for 24 hours. Duration can be configured using the hours parameter. 1444func (client ObjectStorageClient) RestoreObjects(ctx context.Context, request RestoreObjectsRequest) (response RestoreObjectsResponse, err error) { 1445 var ociResponse common.OCIResponse 1446 policy := common.NoRetryPolicy() 1447 if request.RetryPolicy() != nil { 1448 policy = *request.RetryPolicy() 1449 } 1450 ociResponse, err = common.Retry(ctx, request, client.restoreObjects, policy) 1451 if err != nil { 1452 if ociResponse != nil { 1453 response = RestoreObjectsResponse{RawResponse: ociResponse.HTTPResponse()} 1454 } 1455 return 1456 } 1457 if convertedResponse, ok := ociResponse.(RestoreObjectsResponse); ok { 1458 response = convertedResponse 1459 } else { 1460 err = fmt.Errorf("failed to convert OCIResponse into RestoreObjectsResponse") 1461 } 1462 return 1463} 1464 1465// restoreObjects implements the OCIOperation interface (enables retrying operations) 1466func (client ObjectStorageClient) restoreObjects(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1467 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}/actions/restoreObjects") 1468 if err != nil { 1469 return nil, err 1470 } 1471 1472 var response RestoreObjectsResponse 1473 var httpResponse *http.Response 1474 httpResponse, err = client.Call(ctx, &httpRequest) 1475 defer common.CloseBodyIfValid(httpResponse) 1476 response.RawResponse = httpResponse 1477 if err != nil { 1478 return response, err 1479 } 1480 1481 err = common.UnmarshalResponse(httpResponse, &response) 1482 return response, err 1483} 1484 1485// UpdateBucket Performs a partial or full update of a bucket's user-defined metadata. 1486// Use UpdateBucket to move a bucket from one compartment to another within the same tenancy. Supply the compartmentID 1487// of the compartment that you want to move the bucket to. For more information about moving resources between compartments, 1488// see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). 1489func (client ObjectStorageClient) UpdateBucket(ctx context.Context, request UpdateBucketRequest) (response UpdateBucketResponse, err error) { 1490 var ociResponse common.OCIResponse 1491 policy := common.NoRetryPolicy() 1492 if request.RetryPolicy() != nil { 1493 policy = *request.RetryPolicy() 1494 } 1495 ociResponse, err = common.Retry(ctx, request, client.updateBucket, policy) 1496 if err != nil { 1497 if ociResponse != nil { 1498 response = UpdateBucketResponse{RawResponse: ociResponse.HTTPResponse()} 1499 } 1500 return 1501 } 1502 if convertedResponse, ok := ociResponse.(UpdateBucketResponse); ok { 1503 response = convertedResponse 1504 } else { 1505 err = fmt.Errorf("failed to convert OCIResponse into UpdateBucketResponse") 1506 } 1507 return 1508} 1509 1510// updateBucket implements the OCIOperation interface (enables retrying operations) 1511func (client ObjectStorageClient) updateBucket(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1512 httpRequest, err := request.HTTPRequest(http.MethodPost, "/n/{namespaceName}/b/{bucketName}") 1513 if err != nil { 1514 return nil, err 1515 } 1516 1517 var response UpdateBucketResponse 1518 var httpResponse *http.Response 1519 httpResponse, err = client.Call(ctx, &httpRequest) 1520 defer common.CloseBodyIfValid(httpResponse) 1521 response.RawResponse = httpResponse 1522 if err != nil { 1523 return response, err 1524 } 1525 1526 err = common.UnmarshalResponse(httpResponse, &response) 1527 return response, err 1528} 1529 1530// UpdateNamespaceMetadata By default, buckets created using the Amazon S3 Compatibility API or the Swift API are created in the root 1531// compartment of the Oracle Cloud Infrastructure tenancy. 1532// You can change the default Swift/Amazon S3 compartmentId designation to a different compartmentId. All 1533// subsequent bucket creations will use the new default compartment, but no previously created 1534// buckets will be modified. A user must have OBJECTSTORAGE_NAMESPACE_UPDATE permission to make changes to the default 1535// compartments for Amazon S3 and Swift. 1536func (client ObjectStorageClient) UpdateNamespaceMetadata(ctx context.Context, request UpdateNamespaceMetadataRequest) (response UpdateNamespaceMetadataResponse, err error) { 1537 var ociResponse common.OCIResponse 1538 policy := common.NoRetryPolicy() 1539 if request.RetryPolicy() != nil { 1540 policy = *request.RetryPolicy() 1541 } 1542 ociResponse, err = common.Retry(ctx, request, client.updateNamespaceMetadata, policy) 1543 if err != nil { 1544 if ociResponse != nil { 1545 response = UpdateNamespaceMetadataResponse{RawResponse: ociResponse.HTTPResponse()} 1546 } 1547 return 1548 } 1549 if convertedResponse, ok := ociResponse.(UpdateNamespaceMetadataResponse); ok { 1550 response = convertedResponse 1551 } else { 1552 err = fmt.Errorf("failed to convert OCIResponse into UpdateNamespaceMetadataResponse") 1553 } 1554 return 1555} 1556 1557// updateNamespaceMetadata implements the OCIOperation interface (enables retrying operations) 1558func (client ObjectStorageClient) updateNamespaceMetadata(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1559 httpRequest, err := request.HTTPRequest(http.MethodPut, "/n/{namespaceName}") 1560 if err != nil { 1561 return nil, err 1562 } 1563 1564 var response UpdateNamespaceMetadataResponse 1565 var httpResponse *http.Response 1566 httpResponse, err = client.Call(ctx, &httpRequest) 1567 defer common.CloseBodyIfValid(httpResponse) 1568 response.RawResponse = httpResponse 1569 if err != nil { 1570 return response, err 1571 } 1572 1573 err = common.UnmarshalResponse(httpResponse, &response) 1574 return response, err 1575} 1576 1577// UploadPart Uploads a single part of a multipart upload. 1578func (client ObjectStorageClient) UploadPart(ctx context.Context, request UploadPartRequest) (response UploadPartResponse, err error) { 1579 var ociResponse common.OCIResponse 1580 policy := common.NoRetryPolicy() 1581 if request.RetryPolicy() != nil { 1582 policy = *request.RetryPolicy() 1583 } 1584 ociResponse, err = common.Retry(ctx, request, client.uploadPart, policy) 1585 if err != nil { 1586 if ociResponse != nil { 1587 response = UploadPartResponse{RawResponse: ociResponse.HTTPResponse()} 1588 } 1589 return 1590 } 1591 if convertedResponse, ok := ociResponse.(UploadPartResponse); ok { 1592 response = convertedResponse 1593 } else { 1594 err = fmt.Errorf("failed to convert OCIResponse into UploadPartResponse") 1595 } 1596 return 1597} 1598 1599// uploadPart implements the OCIOperation interface (enables retrying operations) 1600func (client ObjectStorageClient) uploadPart(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 1601 httpRequest, err := request.HTTPRequest(http.MethodPut, "/n/{namespaceName}/b/{bucketName}/u/{objectName}") 1602 if err != nil { 1603 return nil, err 1604 } 1605 1606 var response UploadPartResponse 1607 var httpResponse *http.Response 1608 var customSigner common.HTTPRequestSigner 1609 excludeBodySigningPredicate := func(r *http.Request) bool { return false } 1610 customSigner, err = common.NewSignerFromOCIRequestSigner(client.Signer, excludeBodySigningPredicate) 1611 1612 //if there was an error overriding the signer, then use the signer from the client itself 1613 if err != nil { 1614 customSigner = client.Signer 1615 } 1616 1617 //Execute the request with a custom signer 1618 httpResponse, err = client.CallWithDetails(ctx, &httpRequest, common.ClientCallDetails{Signer: customSigner}) 1619 defer common.CloseBodyIfValid(httpResponse) 1620 response.RawResponse = httpResponse 1621 if err != nil { 1622 return response, err 1623 } 1624 1625 err = common.UnmarshalResponse(httpResponse, &response) 1626 return response, err 1627} 1628