google-cloud-storage 1.31.1 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +19 -0
 - data/lib/google/cloud/storage/bucket.rb +185 -34
 - data/lib/google/cloud/storage/file.rb +216 -26
 - data/lib/google/cloud/storage/file/acl.rb +176 -14
 - data/lib/google/cloud/storage/file/verifier.rb +2 -2
 - data/lib/google/cloud/storage/project.rb +14 -2
 - data/lib/google/cloud/storage/service.rb +193 -64
 - data/lib/google/cloud/storage/version.rb +1 -1
 - metadata +14 -8
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 10f1fa9dd485d8891fa159b09b463fcf20d5320fd759f2dc92164c0a6f4647af
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1734495bde125925f45fdaf9a2c2a9da421d9cb38c5b7ac1e5785a869594c09f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 614c067fa9c914e07acf1473e36a78cb04fa6070ddd2d1d96fee3693a2b6cc650a9005af515cdcbb9e6db9c1816985656977934fb5f3fe75248730673dbda675
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b3f43b0193147e89de327734384e3a3b3581abfe921e0efcfdfd094e0373a76fb719f079fde3c3e6351216d2b9150af3b1a7a46249d35f7e170168a41e28175f
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,5 +1,24 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Release History
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ### 1.32.0 / 2021-06-22
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            #### Features
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            * Add sources_if_generation_match to Bucket#compose
         
     | 
| 
      
 8 
     | 
    
         
            +
            * Add support for (meta)generation preconditions to File operations
         
     | 
| 
      
 9 
     | 
    
         
            +
              * Add if_(meta)generation_match options to Bucket#compose
         
     | 
| 
      
 10 
     | 
    
         
            +
              * Add if_(meta)generation_(not_)match options to Bucket#create_file
         
     | 
| 
      
 11 
     | 
    
         
            +
              * Add if_(meta)generation_(not_)match options to Bucket#file
         
     | 
| 
      
 12 
     | 
    
         
            +
              * Add if_(meta)generation_(not_)match options to File#delete.
         
     | 
| 
      
 13 
     | 
    
         
            +
              * Add if_(meta)generation_(not_)match options to File#rewrite
         
     | 
| 
      
 14 
     | 
    
         
            +
              * Add generation and if_(meta)generation_(not_)match options to File#update
         
     | 
| 
      
 15 
     | 
    
         
            +
              * Add generation and if_(meta)generation_(not_)match options to File::Acl predefined_acl methods
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            #### Bug Fixes
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            * Expand googleauth dependency to support future 1.x versions
         
     | 
| 
      
 20 
     | 
    
         
            +
            * Update File::Verifier to test for File#to_path
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       3 
22 
     | 
    
         
             
            ### 1.31.1 / 2021-05-19
         
     | 
| 
       4 
23 
     | 
    
         | 
| 
       5 
24 
     | 
    
         
             
            #### Documentation
         
     | 
| 
         @@ -315,6 +315,9 @@ module Google 
     | 
|
| 
       315 
315 
     | 
    
         
             
                    ##
         
     | 
| 
       316 
316 
     | 
    
         
             
                    # Updates the destination bucket for the bucket's logs.
         
     | 
| 
       317 
317 
     | 
    
         
             
                    #
         
     | 
| 
      
 318 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 319 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 320 
     | 
    
         
            +
                    #
         
     | 
| 
       318 
321 
     | 
    
         
             
                    # @see https://cloud.google.com/storage/docs/access-logs Access Logs
         
     | 
| 
       319 
322 
     | 
    
         
             
                    #
         
     | 
| 
       320 
323 
     | 
    
         
             
                    # @param [String] logging_bucket The bucket to hold the logging output
         
     | 
| 
         @@ -344,6 +347,9 @@ module Google 
     | 
|
| 
       344 
347 
     | 
    
         
             
                    # By default, the object prefix is the name of the bucket for which the
         
     | 
| 
       345 
348 
     | 
    
         
             
                    # logs are enabled.
         
     | 
| 
       346 
349 
     | 
    
         
             
                    #
         
     | 
| 
      
 350 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 351 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 352 
     | 
    
         
            +
                    #
         
     | 
| 
       347 
353 
     | 
    
         
             
                    # @see https://cloud.google.com/storage/docs/access-logs Access Logs
         
     | 
| 
       348 
354 
     | 
    
         
             
                    #
         
     | 
| 
       349 
355 
     | 
    
         
             
                    # @param [String] logging_prefix The logging object prefix.
         
     | 
| 
         @@ -377,6 +383,9 @@ module Google 
     | 
|
| 
       377 
383 
     | 
    
         
             
                    # For more information, see [Storage
         
     | 
| 
       378 
384 
     | 
    
         
             
                    # Classes](https://cloud.google.com/storage/docs/storage-classes).
         
     | 
| 
       379 
385 
     | 
    
         
             
                    #
         
     | 
| 
      
 386 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 387 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 388 
     | 
    
         
            +
                    #
         
     | 
| 
       380 
389 
     | 
    
         
             
                    # @param [Symbol, String] new_storage_class Storage class of the bucket.
         
     | 
| 
       381 
390 
     | 
    
         
             
                    #
         
     | 
| 
       382 
391 
     | 
    
         
             
                    def storage_class= new_storage_class
         
     | 
| 
         @@ -400,6 +409,9 @@ module Google 
     | 
|
| 
       400 
409 
     | 
    
         
             
                    # Versioning](https://cloud.google.com/storage/docs/object-versioning)
         
     | 
| 
       401 
410 
     | 
    
         
             
                    # is enabled for the bucket.
         
     | 
| 
       402 
411 
     | 
    
         
             
                    #
         
     | 
| 
      
 412 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 413 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 414 
     | 
    
         
            +
                    #
         
     | 
| 
       403 
415 
     | 
    
         
             
                    # @param [Boolean] new_versioning true if versioning is to be enabled
         
     | 
| 
       404 
416 
     | 
    
         
             
                    #   for the bucket.
         
     | 
| 
       405 
417 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -428,6 +440,9 @@ module Google 
     | 
|
| 
       428 
440 
     | 
    
         
             
                    ##
         
     | 
| 
       429 
441 
     | 
    
         
             
                    # Updates the main page suffix for a static website.
         
     | 
| 
       430 
442 
     | 
    
         
             
                    #
         
     | 
| 
      
 443 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 444 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 445 
     | 
    
         
            +
                    #
         
     | 
| 
       431 
446 
     | 
    
         
             
                    # @see https://cloud.google.com/storage/docs/website-configuration#step4
         
     | 
| 
       432 
447 
     | 
    
         
             
                    #   How to Host a Static Website
         
     | 
| 
       433 
448 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -467,6 +482,9 @@ module Google 
     | 
|
| 
       467 
482 
     | 
    
         
             
                    ##
         
     | 
| 
       468 
483 
     | 
    
         
             
                    # Updates the hash of user-provided labels.
         
     | 
| 
       469 
484 
     | 
    
         
             
                    #
         
     | 
| 
      
 485 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 486 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 487 
     | 
    
         
            +
                    #
         
     | 
| 
       470 
488 
     | 
    
         
             
                    # @param [Hash(String => String)] labels The user-provided labels.
         
     | 
| 
       471 
489 
     | 
    
         
             
                    #
         
     | 
| 
       472 
490 
     | 
    
         
             
                    def labels= labels
         
     | 
| 
         @@ -478,6 +496,9 @@ module Google 
     | 
|
| 
       478 
496 
     | 
    
         
             
                    # Updates the page returned from a static website served from the bucket
         
     | 
| 
       479 
497 
     | 
    
         
             
                    # when a site visitor requests a resource that does not exist.
         
     | 
| 
       480 
498 
     | 
    
         
             
                    #
         
     | 
| 
      
 499 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 500 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 501 
     | 
    
         
            +
                    #
         
     | 
| 
       481 
502 
     | 
    
         
             
                    # @see https://cloud.google.com/storage/docs/website-configuration#step4
         
     | 
| 
       482 
503 
     | 
    
         
             
                    #   How to Host a Static Website
         
     | 
| 
       483 
504 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -509,6 +530,9 @@ module Google 
     | 
|
| 
       509 
530 
     | 
    
         
             
                    # {Project#bucket} and {Project#buckets} to indicate the project to
         
     | 
| 
       510 
531 
     | 
    
         
             
                    # which the access costs should be billed.
         
     | 
| 
       511 
532 
     | 
    
         
             
                    #
         
     | 
| 
      
 533 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 534 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 535 
     | 
    
         
            +
                    #
         
     | 
| 
       512 
536 
     | 
    
         
             
                    # @param [Boolean] new_requester_pays When set to `true`, requester pays
         
     | 
| 
       513 
537 
     | 
    
         
             
                    #   is enabled for the bucket.
         
     | 
| 
       514 
538 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -557,6 +581,9 @@ module Google 
     | 
|
| 
       557 
581 
     | 
    
         
             
                    # Set the Cloud KMS encryption key that will be used to protect files.
         
     | 
| 
       558 
582 
     | 
    
         
             
                    # For example: `projects/a/locations/b/keyRings/c/cryptoKeys/d`
         
     | 
| 
       559 
583 
     | 
    
         
             
                    #
         
     | 
| 
      
 584 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 585 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 586 
     | 
    
         
            +
                    #
         
     | 
| 
       560 
587 
     | 
    
         
             
                    # @param [String, nil] new_default_kms_key New Cloud KMS key name, or
         
     | 
| 
       561 
588 
     | 
    
         
             
                    #   `nil` to delete the Cloud KMS encryption key.
         
     | 
| 
       562 
589 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -617,6 +644,9 @@ module Google 
     | 
|
| 
       617 
644 
     | 
    
         
             
                    # See also: {#lock_retention_policy!}, {#retention_period},
         
     | 
| 
       618 
645 
     | 
    
         
             
                    # {#retention_effective_at}, and {#retention_policy_locked?}.
         
     | 
| 
       619 
646 
     | 
    
         
             
                    #
         
     | 
| 
      
 647 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 648 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 649 
     | 
    
         
            +
                    #
         
     | 
| 
       620 
650 
     | 
    
         
             
                    # @param [Integer, nil] new_retention_period The retention period
         
     | 
| 
       621 
651 
     | 
    
         
             
                    #   defined in seconds. The value must be between 0 and 100 years (in
         
     | 
| 
       622 
652 
     | 
    
         
             
                    #   seconds), or `nil`.
         
     | 
| 
         @@ -715,6 +745,9 @@ module Google 
     | 
|
| 
       715 
745 
     | 
    
         
             
                    #
         
     | 
| 
       716 
746 
     | 
    
         
             
                    # See {File#event_based_hold?} and {File#set_event_based_hold!}.
         
     | 
| 
       717 
747 
     | 
    
         
             
                    #
         
     | 
| 
      
 748 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 749 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 750 
     | 
    
         
            +
                    #
         
     | 
| 
       718 
751 
     | 
    
         
             
                    # @param [Boolean] new_default_event_based_hold The default event-based
         
     | 
| 
       719 
752 
     | 
    
         
             
                    #   hold field for the bucket.
         
     | 
| 
       720 
753 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -823,6 +856,9 @@ module Google 
     | 
|
| 
       823 
856 
     | 
    
         
             
                    # Before enabling uniform bucket-level access please review [uniform bucket-level
         
     | 
| 
       824 
857 
     | 
    
         
             
                    # access](https://cloud.google.com/storage/docs/uniform-bucket-level-access).
         
     | 
| 
       825 
858 
     | 
    
         
             
                    #
         
     | 
| 
      
 859 
     | 
    
         
            +
                    # To pass metageneration preconditions, call this method within a
         
     | 
| 
      
 860 
     | 
    
         
            +
                    # block passed to {#update}.
         
     | 
| 
      
 861 
     | 
    
         
            +
                    #
         
     | 
| 
       826 
862 
     | 
    
         
             
                    # @param [Boolean] new_uniform_bucket_level_access When set to `true`, uniform bucket-level access is enabled in
         
     | 
| 
       827 
863 
     | 
    
         
             
                    #   the bucket's IAM configuration.
         
     | 
| 
       828 
864 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -905,6 +941,12 @@ module Google 
     | 
|
| 
       905 
941 
     | 
    
         
             
                    # completely mutable and will be included in the request. (See
         
     | 
| 
       906 
942 
     | 
    
         
             
                    # {Bucket::Cors})
         
     | 
| 
       907 
943 
     | 
    
         
             
                    #
         
     | 
| 
      
 944 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 945 
     | 
    
         
            +
                    #   on whether the bucket's current metageneration matches the given value.
         
     | 
| 
      
 946 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_not_match Makes the operation
         
     | 
| 
      
 947 
     | 
    
         
            +
                    #   conditional on whether the bucket's current metageneration does not
         
     | 
| 
      
 948 
     | 
    
         
            +
                    #   match the given value.
         
     | 
| 
      
 949 
     | 
    
         
            +
                    #
         
     | 
| 
       908 
950 
     | 
    
         
             
                    # @yield [bucket] a block yielding a delegate object for updating the
         
     | 
| 
       909 
951 
     | 
    
         
             
                    #   file
         
     | 
| 
       910 
952 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -936,14 +978,27 @@ module Google 
     | 
|
| 
       936 
978 
     | 
    
         
             
                    #     end
         
     | 
| 
       937 
979 
     | 
    
         
             
                    #   end
         
     | 
| 
       938 
980 
     | 
    
         
             
                    #
         
     | 
| 
       939 
     | 
    
         
            -
                     
     | 
| 
      
 981 
     | 
    
         
            +
                    # @example With a `if_metageneration_match` precondition:
         
     | 
| 
      
 982 
     | 
    
         
            +
                    #   require "google/cloud/storage"
         
     | 
| 
      
 983 
     | 
    
         
            +
                    #
         
     | 
| 
      
 984 
     | 
    
         
            +
                    #   storage = Google::Cloud::Storage.new
         
     | 
| 
      
 985 
     | 
    
         
            +
                    #
         
     | 
| 
      
 986 
     | 
    
         
            +
                    #   bucket = storage.bucket "my-todo-app"
         
     | 
| 
      
 987 
     | 
    
         
            +
                    #   bucket.update if_metageneration_match: 6 do |b|
         
     | 
| 
      
 988 
     | 
    
         
            +
                    #     b.website_main = "index.html"
         
     | 
| 
      
 989 
     | 
    
         
            +
                    #   end
         
     | 
| 
      
 990 
     | 
    
         
            +
                    #
         
     | 
| 
      
 991 
     | 
    
         
            +
                    def update if_metageneration_match: nil, if_metageneration_not_match: nil
         
     | 
| 
       940 
992 
     | 
    
         
             
                      updater = Updater.new @gapi
         
     | 
| 
       941 
993 
     | 
    
         
             
                      yield updater
         
     | 
| 
       942 
994 
     | 
    
         
             
                      # Add check for mutable cors
         
     | 
| 
       943 
995 
     | 
    
         
             
                      updater.check_for_changed_labels!
         
     | 
| 
       944 
996 
     | 
    
         
             
                      updater.check_for_mutable_cors!
         
     | 
| 
       945 
997 
     | 
    
         
             
                      updater.check_for_mutable_lifecycle!
         
     | 
| 
       946 
     | 
    
         
            -
                       
     | 
| 
      
 998 
     | 
    
         
            +
                      return if updater.updates.empty?
         
     | 
| 
      
 999 
     | 
    
         
            +
                      patch_gapi! updater.updates,
         
     | 
| 
      
 1000 
     | 
    
         
            +
                                  if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 1001 
     | 
    
         
            +
                                  if_metageneration_not_match: if_metageneration_not_match
         
     | 
| 
       947 
1002 
     | 
    
         
             
                    end
         
     | 
| 
       948 
1003 
     | 
    
         | 
| 
       949 
1004 
     | 
    
         
             
                    ##
         
     | 
| 
         @@ -953,6 +1008,12 @@ module Google 
     | 
|
| 
       953 
1008 
     | 
    
         
             
                    # The API call to delete the bucket may be retried under certain
         
     | 
| 
       954 
1009 
     | 
    
         
             
                    # conditions. See {Google::Cloud#storage} to control this behavior.
         
     | 
| 
       955 
1010 
     | 
    
         
             
                    #
         
     | 
| 
      
 1011 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 1012 
     | 
    
         
            +
                    #   on whether the bucket's current metageneration matches the given value.
         
     | 
| 
      
 1013 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_not_match Makes the operation
         
     | 
| 
      
 1014 
     | 
    
         
            +
                    #   conditional on whether the bucket's current metageneration does not
         
     | 
| 
      
 1015 
     | 
    
         
            +
                    #   match the given value.
         
     | 
| 
      
 1016 
     | 
    
         
            +
                    #
         
     | 
| 
       956 
1017 
     | 
    
         
             
                    # @return [Boolean] Returns `true` if the bucket was deleted.
         
     | 
| 
       957 
1018 
     | 
    
         
             
                    #
         
     | 
| 
       958 
1019 
     | 
    
         
             
                    # @example
         
     | 
| 
         @@ -963,10 +1024,12 @@ module Google 
     | 
|
| 
       963 
1024 
     | 
    
         
             
                    #   bucket = storage.bucket "my-bucket"
         
     | 
| 
       964 
1025 
     | 
    
         
             
                    #   bucket.delete
         
     | 
| 
       965 
1026 
     | 
    
         
             
                    #
         
     | 
| 
       966 
     | 
    
         
            -
                    def delete
         
     | 
| 
      
 1027 
     | 
    
         
            +
                    def delete if_metageneration_match: nil, if_metageneration_not_match: nil
         
     | 
| 
       967 
1028 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       968 
     | 
    
         
            -
                      service.delete_bucket name, 
     | 
| 
       969 
     | 
    
         
            -
             
     | 
| 
      
 1029 
     | 
    
         
            +
                      service.delete_bucket name,
         
     | 
| 
      
 1030 
     | 
    
         
            +
                                            if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 1031 
     | 
    
         
            +
                                            if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
      
 1032 
     | 
    
         
            +
                                            user_project: user_project
         
     | 
| 
       970 
1033 
     | 
    
         
             
                    end
         
     | 
| 
       971 
1034 
     | 
    
         | 
| 
       972 
1035 
     | 
    
         
             
                    ##
         
     | 
| 
         @@ -1040,6 +1103,19 @@ module Google 
     | 
|
| 
       1040 
1103 
     | 
    
         
             
                    # @param [String] path Name (path) of the file.
         
     | 
| 
       1041 
1104 
     | 
    
         
             
                    # @param [Integer] generation When present, selects a specific revision
         
     | 
| 
       1042 
1105 
     | 
    
         
             
                    #   of this object. Default is the latest version.
         
     | 
| 
      
 1106 
     | 
    
         
            +
                    # @param [Integer] if_generation_match Makes the operation conditional
         
     | 
| 
      
 1107 
     | 
    
         
            +
                    #   on whether the file's current generation matches the given value.
         
     | 
| 
      
 1108 
     | 
    
         
            +
                    #   Setting to 0 makes the operation succeed only if there are no live
         
     | 
| 
      
 1109 
     | 
    
         
            +
                    #   versions of the file.
         
     | 
| 
      
 1110 
     | 
    
         
            +
                    # @param [Integer] if_generation_not_match Makes the operation conditional
         
     | 
| 
      
 1111 
     | 
    
         
            +
                    #   on whether the file's current generation does not match the given
         
     | 
| 
      
 1112 
     | 
    
         
            +
                    #   value. If no live file exists, the precondition fails. Setting to 0
         
     | 
| 
      
 1113 
     | 
    
         
            +
                    #   makes the operation succeed only if there is a live version of the file.
         
     | 
| 
      
 1114 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 1115 
     | 
    
         
            +
                    #   on whether the file's current metageneration matches the given value.
         
     | 
| 
      
 1116 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_not_match Makes the operation
         
     | 
| 
      
 1117 
     | 
    
         
            +
                    #   conditional on whether the file's current metageneration does not
         
     | 
| 
      
 1118 
     | 
    
         
            +
                    #   match the given value.
         
     | 
| 
       1043 
1119 
     | 
    
         
             
                    # @param [Boolean] skip_lookup Optionally create a Bucket object
         
     | 
| 
       1044 
1120 
     | 
    
         
             
                    #   without verifying the bucket resource exists on the Storage service.
         
     | 
| 
       1045 
1121 
     | 
    
         
             
                    #   Calls made on this object will raise errors if the bucket resource
         
     | 
| 
         @@ -1061,7 +1137,14 @@ module Google 
     | 
|
| 
       1061 
1137 
     | 
    
         
             
                    #   file = bucket.file "path/to/my-file.ext"
         
     | 
| 
       1062 
1138 
     | 
    
         
             
                    #   puts file.name
         
     | 
| 
       1063 
1139 
     | 
    
         
             
                    #
         
     | 
| 
       1064 
     | 
    
         
            -
                    def file path, 
     | 
| 
      
 1140 
     | 
    
         
            +
                    def file path,
         
     | 
| 
      
 1141 
     | 
    
         
            +
                             generation: nil,
         
     | 
| 
      
 1142 
     | 
    
         
            +
                             if_generation_match: nil,
         
     | 
| 
      
 1143 
     | 
    
         
            +
                             if_generation_not_match: nil,
         
     | 
| 
      
 1144 
     | 
    
         
            +
                             if_metageneration_match: nil,
         
     | 
| 
      
 1145 
     | 
    
         
            +
                             if_metageneration_not_match: nil,
         
     | 
| 
      
 1146 
     | 
    
         
            +
                             skip_lookup: nil,
         
     | 
| 
      
 1147 
     | 
    
         
            +
                             encryption_key: nil
         
     | 
| 
       1065 
1148 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       1066 
1149 
     | 
    
         
             
                      if skip_lookup
         
     | 
| 
       1067 
1150 
     | 
    
         
             
                        return File.new_lazy name, path, service,
         
     | 
| 
         @@ -1069,6 +1152,10 @@ module Google 
     | 
|
| 
       1069 
1152 
     | 
    
         
             
                                             user_project: user_project
         
     | 
| 
       1070 
1153 
     | 
    
         
             
                      end
         
     | 
| 
       1071 
1154 
     | 
    
         
             
                      gapi = service.get_file name, path, generation: generation,
         
     | 
| 
      
 1155 
     | 
    
         
            +
                                                          if_generation_match: if_generation_match,
         
     | 
| 
      
 1156 
     | 
    
         
            +
                                                          if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 1157 
     | 
    
         
            +
                                                          if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 1158 
     | 
    
         
            +
                                                          if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
       1072 
1159 
     | 
    
         
             
                                                          key: encryption_key,
         
     | 
| 
       1073 
1160 
     | 
    
         
             
                                                          user_project: user_project
         
     | 
| 
       1074 
1161 
     | 
    
         
             
                      File.from_gapi gapi, service, user_project: user_project
         
     | 
| 
         @@ -1179,6 +1266,19 @@ module Google 
     | 
|
| 
       1179 
1266 
     | 
    
         
             
                    #   the same location as the bucket.The Service Account associated with
         
     | 
| 
       1180 
1267 
     | 
    
         
             
                    #   your project requires access to this encryption key. Do not provide
         
     | 
| 
       1181 
1268 
     | 
    
         
             
                    #   if `encryption_key` is used.
         
     | 
| 
      
 1269 
     | 
    
         
            +
                    # @param [Integer] if_generation_match Makes the operation conditional
         
     | 
| 
      
 1270 
     | 
    
         
            +
                    #   on whether the file's current generation matches the given value.
         
     | 
| 
      
 1271 
     | 
    
         
            +
                    #   Setting to 0 makes the operation succeed only if there are no live
         
     | 
| 
      
 1272 
     | 
    
         
            +
                    #   versions of the file.
         
     | 
| 
      
 1273 
     | 
    
         
            +
                    # @param [Integer] if_generation_not_match Makes the operation conditional
         
     | 
| 
      
 1274 
     | 
    
         
            +
                    #   on whether the file's current generation does not match the given
         
     | 
| 
      
 1275 
     | 
    
         
            +
                    #   value. If no live file exists, the precondition fails. Setting to 0
         
     | 
| 
      
 1276 
     | 
    
         
            +
                    #   makes the operation succeed only if there is a live version of the file.
         
     | 
| 
      
 1277 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 1278 
     | 
    
         
            +
                    #   on whether the file's current metageneration matches the given value.
         
     | 
| 
      
 1279 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_not_match Makes the operation
         
     | 
| 
      
 1280 
     | 
    
         
            +
                    #   conditional on whether the file's current metageneration does not
         
     | 
| 
      
 1281 
     | 
    
         
            +
                    #   match the given value.
         
     | 
| 
       1182 
1282 
     | 
    
         
             
                    #
         
     | 
| 
       1183 
1283 
     | 
    
         
             
                    # @return [Google::Cloud::Storage::File]
         
     | 
| 
       1184 
1284 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -1262,12 +1362,27 @@ module Google 
     | 
|
| 
       1262 
1362 
     | 
    
         
             
                    #   file.download "path/to/downloaded/gzipped.txt",
         
     | 
| 
       1263 
1363 
     | 
    
         
             
                    #                 skip_decompress: true
         
     | 
| 
       1264 
1364 
     | 
    
         
             
                    #
         
     | 
| 
       1265 
     | 
    
         
            -
                    def create_file file, 
     | 
| 
       1266 
     | 
    
         
            -
                                     
     | 
| 
       1267 
     | 
    
         
            -
                                     
     | 
| 
       1268 
     | 
    
         
            -
                                     
     | 
| 
       1269 
     | 
    
         
            -
                                     
     | 
| 
       1270 
     | 
    
         
            -
                                     
     | 
| 
      
 1365 
     | 
    
         
            +
                    def create_file file,
         
     | 
| 
      
 1366 
     | 
    
         
            +
                                    path = nil,
         
     | 
| 
      
 1367 
     | 
    
         
            +
                                    acl: nil,
         
     | 
| 
      
 1368 
     | 
    
         
            +
                                    cache_control: nil,
         
     | 
| 
      
 1369 
     | 
    
         
            +
                                    content_disposition: nil,
         
     | 
| 
      
 1370 
     | 
    
         
            +
                                    content_encoding: nil,
         
     | 
| 
      
 1371 
     | 
    
         
            +
                                    content_language: nil,
         
     | 
| 
      
 1372 
     | 
    
         
            +
                                    content_type: nil,
         
     | 
| 
      
 1373 
     | 
    
         
            +
                                    custom_time: nil,
         
     | 
| 
      
 1374 
     | 
    
         
            +
                                    crc32c: nil,
         
     | 
| 
      
 1375 
     | 
    
         
            +
                                    md5: nil,
         
     | 
| 
      
 1376 
     | 
    
         
            +
                                    metadata: nil,
         
     | 
| 
      
 1377 
     | 
    
         
            +
                                    storage_class: nil,
         
     | 
| 
      
 1378 
     | 
    
         
            +
                                    encryption_key: nil,
         
     | 
| 
      
 1379 
     | 
    
         
            +
                                    kms_key: nil,
         
     | 
| 
      
 1380 
     | 
    
         
            +
                                    temporary_hold: nil,
         
     | 
| 
      
 1381 
     | 
    
         
            +
                                    event_based_hold: nil,
         
     | 
| 
      
 1382 
     | 
    
         
            +
                                    if_generation_match: nil,
         
     | 
| 
      
 1383 
     | 
    
         
            +
                                    if_generation_not_match: nil,
         
     | 
| 
      
 1384 
     | 
    
         
            +
                                    if_metageneration_match: nil,
         
     | 
| 
      
 1385 
     | 
    
         
            +
                                    if_metageneration_not_match: nil
         
     | 
| 
       1271 
1386 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       1272 
1387 
     | 
    
         
             
                      ensure_io_or_file_exists! file
         
     | 
| 
       1273 
1388 
     | 
    
         
             
                      path ||= file.path if file.respond_to? :path
         
     | 
| 
         @@ -1275,22 +1390,29 @@ module Google 
     | 
|
| 
       1275 
1390 
     | 
    
         
             
                      raise ArgumentError, "must provide path" if path.nil?
         
     | 
| 
       1276 
1391 
     | 
    
         | 
| 
       1277 
1392 
     | 
    
         | 
| 
       1278 
     | 
    
         
            -
                      gapi = service.insert_file name, 
     | 
| 
       1279 
     | 
    
         
            -
             
     | 
| 
       1280 
     | 
    
         
            -
             
     | 
| 
       1281 
     | 
    
         
            -
             
     | 
| 
       1282 
     | 
    
         
            -
             
     | 
| 
       1283 
     | 
    
         
            -
             
     | 
| 
       1284 
     | 
    
         
            -
             
     | 
| 
       1285 
     | 
    
         
            -
             
     | 
| 
       1286 
     | 
    
         
            -
             
     | 
| 
       1287 
     | 
    
         
            -
             
     | 
| 
       1288 
     | 
    
         
            -
             
     | 
| 
       1289 
     | 
    
         
            -
             
     | 
| 
       1290 
     | 
    
         
            -
             
     | 
| 
       1291 
     | 
    
         
            -
             
     | 
| 
       1292 
     | 
    
         
            -
             
     | 
| 
       1293 
     | 
    
         
            -
             
     | 
| 
      
 1393 
     | 
    
         
            +
                      gapi = service.insert_file name,
         
     | 
| 
      
 1394 
     | 
    
         
            +
                                                 file,
         
     | 
| 
      
 1395 
     | 
    
         
            +
                                                 path,
         
     | 
| 
      
 1396 
     | 
    
         
            +
                                                 acl: File::Acl.predefined_rule_for(acl),
         
     | 
| 
      
 1397 
     | 
    
         
            +
                                                 md5: md5,
         
     | 
| 
      
 1398 
     | 
    
         
            +
                                                 cache_control: cache_control,
         
     | 
| 
      
 1399 
     | 
    
         
            +
                                                 content_type: content_type,
         
     | 
| 
      
 1400 
     | 
    
         
            +
                                                 custom_time: custom_time,
         
     | 
| 
      
 1401 
     | 
    
         
            +
                                                 content_disposition: content_disposition,
         
     | 
| 
      
 1402 
     | 
    
         
            +
                                                 crc32c: crc32c,
         
     | 
| 
      
 1403 
     | 
    
         
            +
                                                 content_encoding: content_encoding,
         
     | 
| 
      
 1404 
     | 
    
         
            +
                                                 metadata: metadata,
         
     | 
| 
      
 1405 
     | 
    
         
            +
                                                 content_language: content_language,
         
     | 
| 
      
 1406 
     | 
    
         
            +
                                                 key: encryption_key,
         
     | 
| 
      
 1407 
     | 
    
         
            +
                                                 kms_key: kms_key,
         
     | 
| 
      
 1408 
     | 
    
         
            +
                                                 storage_class: storage_class_for(storage_class),
         
     | 
| 
      
 1409 
     | 
    
         
            +
                                                 temporary_hold: temporary_hold,
         
     | 
| 
      
 1410 
     | 
    
         
            +
                                                 event_based_hold: event_based_hold,
         
     | 
| 
      
 1411 
     | 
    
         
            +
                                                 if_generation_match: if_generation_match,
         
     | 
| 
      
 1412 
     | 
    
         
            +
                                                 if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 1413 
     | 
    
         
            +
                                                 if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 1414 
     | 
    
         
            +
                                                 if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
      
 1415 
     | 
    
         
            +
                                                 user_project: user_project
         
     | 
| 
       1294 
1416 
     | 
    
         
             
                      File.from_gapi gapi, service, user_project: user_project
         
     | 
| 
       1295 
1417 
     | 
    
         
             
                    end
         
     | 
| 
       1296 
1418 
     | 
    
         
             
                    alias upload_file create_file
         
     | 
| 
         @@ -1334,6 +1456,16 @@ module Google 
     | 
|
| 
       1334 
1456 
     | 
    
         
             
                    #   used. All source files must have been encrypted with the same key,
         
     | 
| 
       1335 
1457 
     | 
    
         
             
                    #   and the resulting destination file will also be encrypted with the
         
     | 
| 
       1336 
1458 
     | 
    
         
             
                    #   key.
         
     | 
| 
      
 1459 
     | 
    
         
            +
                    # @param [Array<Integer>] if_source_generation_match Makes the operation
         
     | 
| 
      
 1460 
     | 
    
         
            +
                    #   conditional on whether the source files' current generations match the
         
     | 
| 
      
 1461 
     | 
    
         
            +
                    #   given values. The list must match `sources` item-to-item.
         
     | 
| 
      
 1462 
     | 
    
         
            +
                    # @param [Integer] if_generation_match Makes the operation conditional
         
     | 
| 
      
 1463 
     | 
    
         
            +
                    #   on whether the destination file's current generation matches the
         
     | 
| 
      
 1464 
     | 
    
         
            +
                    #   given value. Setting to 0 makes the operation succeed only if there
         
     | 
| 
      
 1465 
     | 
    
         
            +
                    #   are no live versions of the file.
         
     | 
| 
      
 1466 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 1467 
     | 
    
         
            +
                    #   on whether the destination file's current metageneration matches the
         
     | 
| 
      
 1468 
     | 
    
         
            +
                    #   given value.
         
     | 
| 
       1337 
1469 
     | 
    
         
             
                    #
         
     | 
| 
       1338 
1470 
     | 
    
         
             
                    # @yield [file] A block yielding a delegate file object for setting the
         
     | 
| 
       1339 
1471 
     | 
    
         
             
                    #   properties of the destination file.
         
     | 
| 
         @@ -1382,7 +1514,13 @@ module Google 
     | 
|
| 
       1382 
1514 
     | 
    
         
             
                    #
         
     | 
| 
       1383 
1515 
     | 
    
         
             
                    #   new_file = bucket.compose [file_1, file_2], "path/to/new-file.ext"
         
     | 
| 
       1384 
1516 
     | 
    
         
             
                    #
         
     | 
| 
       1385 
     | 
    
         
            -
                    def compose sources, 
     | 
| 
      
 1517 
     | 
    
         
            +
                    def compose sources,
         
     | 
| 
      
 1518 
     | 
    
         
            +
                                destination,
         
     | 
| 
      
 1519 
     | 
    
         
            +
                                acl: nil,
         
     | 
| 
      
 1520 
     | 
    
         
            +
                                encryption_key: nil,
         
     | 
| 
      
 1521 
     | 
    
         
            +
                                if_source_generation_match: nil,
         
     | 
| 
      
 1522 
     | 
    
         
            +
                                if_generation_match: nil,
         
     | 
| 
      
 1523 
     | 
    
         
            +
                                if_metageneration_match: nil
         
     | 
| 
       1386 
1524 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       1387 
1525 
     | 
    
         
             
                      sources = Array sources
         
     | 
| 
       1388 
1526 
     | 
    
         
             
                      if sources.size < 2
         
     | 
| 
         @@ -1398,9 +1536,16 @@ module Google 
     | 
|
| 
       1398 
1536 
     | 
    
         
             
                      end
         
     | 
| 
       1399 
1537 
     | 
    
         | 
| 
       1400 
1538 
     | 
    
         
             
                      acl_rule = File::Acl.predefined_rule_for acl
         
     | 
| 
       1401 
     | 
    
         
            -
                      gapi = service.compose_file name, 
     | 
| 
       1402 
     | 
    
         
            -
             
     | 
| 
       1403 
     | 
    
         
            -
             
     | 
| 
      
 1539 
     | 
    
         
            +
                      gapi = service.compose_file name,
         
     | 
| 
      
 1540 
     | 
    
         
            +
                                                  sources,
         
     | 
| 
      
 1541 
     | 
    
         
            +
                                                  destination,
         
     | 
| 
      
 1542 
     | 
    
         
            +
                                                  destination_gapi,
         
     | 
| 
      
 1543 
     | 
    
         
            +
                                                  acl: acl_rule,
         
     | 
| 
      
 1544 
     | 
    
         
            +
                                                  key: encryption_key,
         
     | 
| 
      
 1545 
     | 
    
         
            +
                                                  if_source_generation_match: if_source_generation_match,
         
     | 
| 
      
 1546 
     | 
    
         
            +
                                                  if_generation_match: if_generation_match,
         
     | 
| 
      
 1547 
     | 
    
         
            +
                                                  if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 1548 
     | 
    
         
            +
                                                  user_project: user_project
         
     | 
| 
       1404 
1549 
     | 
    
         
             
                      File.from_gapi gapi, service, user_project: user_project
         
     | 
| 
       1405 
1550 
     | 
    
         
             
                    end
         
     | 
| 
       1406 
1551 
     | 
    
         
             
                    alias compose_file compose
         
     | 
| 
         @@ -2546,7 +2691,10 @@ module Google 
     | 
|
| 
       2546 
2691 
     | 
    
         
             
                      reload!
         
     | 
| 
       2547 
2692 
     | 
    
         
             
                    end
         
     | 
| 
       2548 
2693 
     | 
    
         | 
| 
       2549 
     | 
    
         
            -
                    def patch_gapi!  
     | 
| 
      
 2694 
     | 
    
         
            +
                    def patch_gapi! attributes,
         
     | 
| 
      
 2695 
     | 
    
         
            +
                                    if_metageneration_match: nil,
         
     | 
| 
      
 2696 
     | 
    
         
            +
                                    if_metageneration_not_match: nil
         
     | 
| 
      
 2697 
     | 
    
         
            +
                      attributes = Array(attributes)
         
     | 
| 
       2550 
2698 
     | 
    
         
             
                      attributes.flatten!
         
     | 
| 
       2551 
2699 
     | 
    
         
             
                      return if attributes.empty?
         
     | 
| 
       2552 
2700 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
         @@ -2554,7 +2702,10 @@ module Google 
     | 
|
| 
       2554 
2702 
     | 
    
         
             
                        [attr, @gapi.send(attr)]
         
     | 
| 
       2555 
2703 
     | 
    
         
             
                      end]
         
     | 
| 
       2556 
2704 
     | 
    
         
             
                      patch_gapi = API::Bucket.new(**patch_args)
         
     | 
| 
       2557 
     | 
    
         
            -
                      @gapi = service.patch_bucket name, 
     | 
| 
      
 2705 
     | 
    
         
            +
                      @gapi = service.patch_bucket name,
         
     | 
| 
      
 2706 
     | 
    
         
            +
                                                   patch_gapi,
         
     | 
| 
      
 2707 
     | 
    
         
            +
                                                   if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 2708 
     | 
    
         
            +
                                                   if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
       2558 
2709 
     | 
    
         
             
                                                   user_project: user_project
         
     | 
| 
       2559 
2710 
     | 
    
         
             
                      @lazy = nil
         
     | 
| 
       2560 
2711 
     | 
    
         
             
                      self
         
     | 
| 
         @@ -260,6 +260,9 @@ module Google 
     | 
|
| 
       260 
260 
     | 
    
         
             
                    # directive for the file data. If omitted, and the file is accessible
         
     | 
| 
       261 
261 
     | 
    
         
             
                    # to all anonymous users, the default will be `public, max-age=3600`.
         
     | 
| 
       262 
262 
     | 
    
         
             
                    #
         
     | 
| 
      
 263 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 264 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 265 
     | 
    
         
            +
                    #
         
     | 
| 
       263 
266 
     | 
    
         
             
                    # @param [String] cache_control The Cache-Control directive.
         
     | 
| 
       264 
267 
     | 
    
         
             
                    #
         
     | 
| 
       265 
268 
     | 
    
         
             
                    def cache_control= cache_control
         
     | 
| 
         @@ -281,6 +284,9 @@ module Google 
     | 
|
| 
       281 
284 
     | 
    
         
             
                    # Updates the [Content-Disposition](https://tools.ietf.org/html/rfc6266)
         
     | 
| 
       282 
285 
     | 
    
         
             
                    # of the file data.
         
     | 
| 
       283 
286 
     | 
    
         
             
                    #
         
     | 
| 
      
 287 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 288 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 289 
     | 
    
         
            +
                    #
         
     | 
| 
       284 
290 
     | 
    
         
             
                    # @param [String] content_disposition The Content-Disposition of the
         
     | 
| 
       285 
291 
     | 
    
         
             
                    #   file.
         
     | 
| 
       286 
292 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -305,6 +311,9 @@ module Google 
     | 
|
| 
       305 
311 
     | 
    
         
             
                    # ](https://tools.ietf.org/html/rfc7231#section-3.1.2.2) of the file
         
     | 
| 
       306 
312 
     | 
    
         
             
                    # data.
         
     | 
| 
       307 
313 
     | 
    
         
             
                    #
         
     | 
| 
      
 314 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 315 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 316 
     | 
    
         
            +
                    #
         
     | 
| 
       308 
317 
     | 
    
         
             
                    # @param [String] content_encoding The Content-Encoding of the file.
         
     | 
| 
       309 
318 
     | 
    
         
             
                    #
         
     | 
| 
       310 
319 
     | 
    
         
             
                    def content_encoding= content_encoding
         
     | 
| 
         @@ -326,6 +335,9 @@ module Google 
     | 
|
| 
       326 
335 
     | 
    
         
             
                    # Updates the [Content-Language](http://tools.ietf.org/html/bcp47) of
         
     | 
| 
       327 
336 
     | 
    
         
             
                    # the file data.
         
     | 
| 
       328 
337 
     | 
    
         
             
                    #
         
     | 
| 
      
 338 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 339 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 340 
     | 
    
         
            +
                    #
         
     | 
| 
       329 
341 
     | 
    
         
             
                    # @param [String] content_language The Content-Language of the file.
         
     | 
| 
       330 
342 
     | 
    
         
             
                    #
         
     | 
| 
       331 
343 
     | 
    
         
             
                    def content_language= content_language
         
     | 
| 
         @@ -348,6 +360,9 @@ module Google 
     | 
|
| 
       348 
360 
     | 
    
         
             
                    # [Content-Type](https://tools.ietf.org/html/rfc2616#section-14.17) of
         
     | 
| 
       349 
361 
     | 
    
         
             
                    # the file data.
         
     | 
| 
       350 
362 
     | 
    
         
             
                    #
         
     | 
| 
      
 363 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 364 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 365 
     | 
    
         
            +
                    #
         
     | 
| 
       351 
366 
     | 
    
         
             
                    # @param [String] content_type The Content-Type of the file.
         
     | 
| 
       352 
367 
     | 
    
         
             
                    #
         
     | 
| 
       353 
368 
     | 
    
         
             
                    def content_type= content_type
         
     | 
| 
         @@ -370,6 +385,9 @@ module Google 
     | 
|
| 
       370 
385 
     | 
    
         
             
                    # future. If custom_time must be unset, you must either perform a rewrite
         
     | 
| 
       371 
386 
     | 
    
         
             
                    # operation, or upload the data again and create a new file.
         
     | 
| 
       372 
387 
     | 
    
         
             
                    #
         
     | 
| 
      
 388 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 389 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 390 
     | 
    
         
            +
                    #
         
     | 
| 
       373 
391 
     | 
    
         
             
                    # @param [DateTime] custom_time A custom time specified by the user
         
     | 
| 
       374 
392 
     | 
    
         
             
                    #   for the file.
         
     | 
| 
       375 
393 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -396,6 +414,9 @@ module Google 
     | 
|
| 
       396 
414 
     | 
    
         
             
                    # string values that will returned with requests for the file as
         
     | 
| 
       397 
415 
     | 
    
         
             
                    # "x-goog-meta-" response headers.
         
     | 
| 
       398 
416 
     | 
    
         
             
                    #
         
     | 
| 
      
 417 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 418 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 419 
     | 
    
         
            +
                    #
         
     | 
| 
       399 
420 
     | 
    
         
             
                    # @param [Hash(String => String)] metadata The user-provided metadata,
         
     | 
| 
       400 
421 
     | 
    
         
             
                    #   in key/value pairs.
         
     | 
| 
       401 
422 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -465,6 +486,9 @@ module Google 
     | 
|
| 
       465 
486 
     | 
    
         
             
                    # The  default value is the default storage class for the bucket. See
         
     | 
| 
       466 
487 
     | 
    
         
             
                    # {Bucket#storage_class}.
         
     | 
| 
       467 
488 
     | 
    
         
             
                    #
         
     | 
| 
      
 489 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 490 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 491 
     | 
    
         
            +
                    #
         
     | 
| 
       468 
492 
     | 
    
         
             
                    # @param [Symbol, String] storage_class Storage class of the file.
         
     | 
| 
       469 
493 
     | 
    
         
             
                    #
         
     | 
| 
       470 
494 
     | 
    
         
             
                    def storage_class= storage_class
         
     | 
| 
         @@ -505,6 +529,9 @@ module Google 
     | 
|
| 
       505 
529 
     | 
    
         
             
                    # removed, the file's `retention_expires_at` date is not changed. The
         
     | 
| 
       506 
530 
     | 
    
         
             
                    # default value is `false`.
         
     | 
| 
       507 
531 
     | 
    
         
             
                    #
         
     | 
| 
      
 532 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 533 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 534 
     | 
    
         
            +
                    #
         
     | 
| 
       508 
535 
     | 
    
         
             
                    # See {#retention_expires_at}.
         
     | 
| 
       509 
536 
     | 
    
         
             
                    #
         
     | 
| 
       510 
537 
     | 
    
         
             
                    # @example
         
     | 
| 
         @@ -533,6 +560,9 @@ module Google 
     | 
|
| 
       533 
560 
     | 
    
         
             
                    #
         
     | 
| 
       534 
561 
     | 
    
         
             
                    # See {#retention_expires_at}.
         
     | 
| 
       535 
562 
     | 
    
         
             
                    #
         
     | 
| 
      
 563 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 564 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 565 
     | 
    
         
            +
                    #
         
     | 
| 
       536 
566 
     | 
    
         
             
                    # @example
         
     | 
| 
       537 
567 
     | 
    
         
             
                    #   require "google/cloud/storage"
         
     | 
| 
       538 
568 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -643,6 +673,9 @@ module Google 
     | 
|
| 
       643 
673 
     | 
    
         
             
                    #   holds released prior to the effective date of the new policy may
         
     | 
| 
       644 
674 
     | 
    
         
             
                    #   have already been deleted by the user.
         
     | 
| 
       645 
675 
     | 
    
         
             
                    #
         
     | 
| 
      
 676 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 677 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 678 
     | 
    
         
            +
                    #
         
     | 
| 
       646 
679 
     | 
    
         
             
                    # @example
         
     | 
| 
       647 
680 
     | 
    
         
             
                    #   require "google/cloud/storage"
         
     | 
| 
       648 
681 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -681,6 +714,9 @@ module Google 
     | 
|
| 
       681 
714 
     | 
    
         
             
                    # {Bucket#default_event_based_hold?} and
         
     | 
| 
       682 
715 
     | 
    
         
             
                    # {Bucket#default_event_based_hold=}.
         
     | 
| 
       683 
716 
     | 
    
         
             
                    #
         
     | 
| 
      
 717 
     | 
    
         
            +
                    # To pass generation and/or metageneration preconditions, call this
         
     | 
| 
      
 718 
     | 
    
         
            +
                    # method within a block passed to {#update}.
         
     | 
| 
      
 719 
     | 
    
         
            +
                    #
         
     | 
| 
       684 
720 
     | 
    
         
             
                    # @example
         
     | 
| 
       685 
721 
     | 
    
         
             
                    #   require "google/cloud/storage"
         
     | 
| 
       686 
722 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -774,6 +810,22 @@ module Google 
     | 
|
| 
       774 
810 
     | 
    
         
             
                    # accessible in the block is completely mutable and will be included in the
         
     | 
| 
       775 
811 
     | 
    
         
             
                    # request.
         
     | 
| 
       776 
812 
     | 
    
         
             
                    #
         
     | 
| 
      
 813 
     | 
    
         
            +
                    # @param [Integer] generation Select a specific revision of the file to
         
     | 
| 
      
 814 
     | 
    
         
            +
                    #   update. The default is the latest version.
         
     | 
| 
      
 815 
     | 
    
         
            +
                    # @param [Integer] if_generation_match Makes the operation conditional
         
     | 
| 
      
 816 
     | 
    
         
            +
                    #   on whether the file's current generation matches the given value.
         
     | 
| 
      
 817 
     | 
    
         
            +
                    #   Setting to 0 makes the operation succeed only if there are no live
         
     | 
| 
      
 818 
     | 
    
         
            +
                    #   versions of the file.
         
     | 
| 
      
 819 
     | 
    
         
            +
                    # @param [Integer] if_generation_not_match Makes the operation conditional
         
     | 
| 
      
 820 
     | 
    
         
            +
                    #   on whether the file's current generation does not match the given
         
     | 
| 
      
 821 
     | 
    
         
            +
                    #   value. If no live file exists, the precondition fails. Setting to 0
         
     | 
| 
      
 822 
     | 
    
         
            +
                    #   makes the operation succeed only if there is a live version of the file.
         
     | 
| 
      
 823 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 824 
     | 
    
         
            +
                    #   on whether the file's current metageneration matches the given value.
         
     | 
| 
      
 825 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_not_match Makes the operation
         
     | 
| 
      
 826 
     | 
    
         
            +
                    #   conditional on whether the file's current metageneration does not
         
     | 
| 
      
 827 
     | 
    
         
            +
                    #   match the given value.
         
     | 
| 
      
 828 
     | 
    
         
            +
                    #
         
     | 
| 
       777 
829 
     | 
    
         
             
                    # @yield [file] a block yielding a delegate object for updating the file
         
     | 
| 
       778 
830 
     | 
    
         
             
                    #
         
     | 
| 
       779 
831 
     | 
    
         
             
                    # @example
         
     | 
| 
         @@ -796,11 +848,34 @@ module Google 
     | 
|
| 
       796 
848 
     | 
    
         
             
                    #     f.metadata["score"] = "10"
         
     | 
| 
       797 
849 
     | 
    
         
             
                    #   end
         
     | 
| 
       798 
850 
     | 
    
         
             
                    #
         
     | 
| 
       799 
     | 
    
         
            -
                     
     | 
| 
      
 851 
     | 
    
         
            +
                    # @example With a `if_generation_match` precondition:
         
     | 
| 
      
 852 
     | 
    
         
            +
                    #   require "google/cloud/storage"
         
     | 
| 
      
 853 
     | 
    
         
            +
                    #
         
     | 
| 
      
 854 
     | 
    
         
            +
                    #   storage = Google::Cloud::Storage.new
         
     | 
| 
      
 855 
     | 
    
         
            +
                    #
         
     | 
| 
      
 856 
     | 
    
         
            +
                    #   bucket = storage.bucket "my-bucket"
         
     | 
| 
      
 857 
     | 
    
         
            +
                    #
         
     | 
| 
      
 858 
     | 
    
         
            +
                    #   file = bucket.file "path/to/my-file.ext"
         
     | 
| 
      
 859 
     | 
    
         
            +
                    #
         
     | 
| 
      
 860 
     | 
    
         
            +
                    #   file.update if_generation_match: 1602263125261858 do |f|
         
     | 
| 
      
 861 
     | 
    
         
            +
                    #     f.cache_control = "private, max-age=0, no-cache"
         
     | 
| 
      
 862 
     | 
    
         
            +
                    #   end
         
     | 
| 
      
 863 
     | 
    
         
            +
                    #
         
     | 
| 
      
 864 
     | 
    
         
            +
                    def update generation: nil,
         
     | 
| 
      
 865 
     | 
    
         
            +
                               if_generation_match: nil,
         
     | 
| 
      
 866 
     | 
    
         
            +
                               if_generation_not_match: nil,
         
     | 
| 
      
 867 
     | 
    
         
            +
                               if_metageneration_match: nil,
         
     | 
| 
      
 868 
     | 
    
         
            +
                               if_metageneration_not_match: nil
         
     | 
| 
       800 
869 
     | 
    
         
             
                      updater = Updater.new gapi
         
     | 
| 
       801 
870 
     | 
    
         
             
                      yield updater
         
     | 
| 
       802 
871 
     | 
    
         
             
                      updater.check_for_changed_metadata!
         
     | 
| 
       803 
     | 
    
         
            -
                       
     | 
| 
      
 872 
     | 
    
         
            +
                      return if updater.updates.empty?
         
     | 
| 
      
 873 
     | 
    
         
            +
                      update_gapi! updater.updates,
         
     | 
| 
      
 874 
     | 
    
         
            +
                                   generation: generation,
         
     | 
| 
      
 875 
     | 
    
         
            +
                                   if_generation_match: if_generation_match,
         
     | 
| 
      
 876 
     | 
    
         
            +
                                   if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 877 
     | 
    
         
            +
                                   if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 878 
     | 
    
         
            +
                                   if_metageneration_not_match: if_metageneration_not_match
         
     | 
| 
       804 
879 
     | 
    
         
             
                    end
         
     | 
| 
       805 
880 
     | 
    
         | 
| 
       806 
881 
     | 
    
         
             
                    ##
         
     | 
| 
         @@ -1138,6 +1213,27 @@ module Google 
     | 
|
| 
       1138 
1213 
     | 
    
         
             
                    #     access, and allUsers get READER access.
         
     | 
| 
       1139 
1214 
     | 
    
         
             
                    # @param [Integer] generation Select a specific revision of the file to
         
     | 
| 
       1140 
1215 
     | 
    
         
             
                    #   rewrite. The default is the latest version.
         
     | 
| 
      
 1216 
     | 
    
         
            +
                    # @param [Integer] if_generation_match Makes the operation conditional
         
     | 
| 
      
 1217 
     | 
    
         
            +
                    #   on whether the destination file's current generation matches the given value.
         
     | 
| 
      
 1218 
     | 
    
         
            +
                    #   Setting to 0 makes the operation succeed only if there are no live
         
     | 
| 
      
 1219 
     | 
    
         
            +
                    #   versions of the file.
         
     | 
| 
      
 1220 
     | 
    
         
            +
                    # @param [Integer] if_generation_not_match Makes the operation conditional
         
     | 
| 
      
 1221 
     | 
    
         
            +
                    #   on whether the destination file's current generation does not match the given
         
     | 
| 
      
 1222 
     | 
    
         
            +
                    #   value. If no live file exists, the precondition fails. Setting to 0
         
     | 
| 
      
 1223 
     | 
    
         
            +
                    #   makes the operation succeed only if there is a live version of the file.
         
     | 
| 
      
 1224 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 1225 
     | 
    
         
            +
                    #   on whether the destination file's current metageneration matches the given value.
         
     | 
| 
      
 1226 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_not_match Makes the operation
         
     | 
| 
      
 1227 
     | 
    
         
            +
                    #   conditional on whether the destination file's current metageneration does not
         
     | 
| 
      
 1228 
     | 
    
         
            +
                    #   match the given value.
         
     | 
| 
      
 1229 
     | 
    
         
            +
                    # @param [Integer] if_source_generation_match Makes the operation conditional on
         
     | 
| 
      
 1230 
     | 
    
         
            +
                    #   whether the source object's current generation matches the given value.
         
     | 
| 
      
 1231 
     | 
    
         
            +
                    # @param [Integer] if_source_generation_not_match Makes the operation conditional
         
     | 
| 
      
 1232 
     | 
    
         
            +
                    #   on whether the source object's current generation does not match the given value.
         
     | 
| 
      
 1233 
     | 
    
         
            +
                    # @param [Integer] if_source_metageneration_match Makes the operation conditional
         
     | 
| 
      
 1234 
     | 
    
         
            +
                    #   on whether the source object's current metageneration matches the given value.
         
     | 
| 
      
 1235 
     | 
    
         
            +
                    # @param [Integer] if_source_metageneration_not_match Makes the operation conditional
         
     | 
| 
      
 1236 
     | 
    
         
            +
                    #   on whether the source object's current metageneration does not match the given value.
         
     | 
| 
       1141 
1237 
     | 
    
         
             
                    # @param [String] encryption_key Optional. The customer-supplied,
         
     | 
| 
       1142 
1238 
     | 
    
         
             
                    #   AES-256 encryption key used to decrypt the file, if the existing
         
     | 
| 
       1143 
1239 
     | 
    
         
             
                    #   file is encrypted.
         
     | 
| 
         @@ -1259,11 +1355,24 @@ module Google 
     | 
|
| 
       1259 
1355 
     | 
    
         
             
                    #     f.metadata["rewritten_from"] = "#{file.bucket}/#{file.name}"
         
     | 
| 
       1260 
1356 
     | 
    
         
             
                    #   end
         
     | 
| 
       1261 
1357 
     | 
    
         
             
                    #
         
     | 
| 
       1262 
     | 
    
         
            -
                    def rewrite dest_bucket_or_path, 
     | 
| 
       1263 
     | 
    
         
            -
                                 
     | 
| 
      
 1358 
     | 
    
         
            +
                    def rewrite dest_bucket_or_path,
         
     | 
| 
      
 1359 
     | 
    
         
            +
                                dest_path = nil,
         
     | 
| 
      
 1360 
     | 
    
         
            +
                                acl: nil,
         
     | 
| 
      
 1361 
     | 
    
         
            +
                                generation: nil,
         
     | 
| 
      
 1362 
     | 
    
         
            +
                                if_generation_match: nil,
         
     | 
| 
      
 1363 
     | 
    
         
            +
                                if_generation_not_match: nil,
         
     | 
| 
      
 1364 
     | 
    
         
            +
                                if_metageneration_match: nil,
         
     | 
| 
      
 1365 
     | 
    
         
            +
                                if_metageneration_not_match: nil,
         
     | 
| 
      
 1366 
     | 
    
         
            +
                                if_source_generation_match: nil,
         
     | 
| 
      
 1367 
     | 
    
         
            +
                                if_source_generation_not_match: nil,
         
     | 
| 
      
 1368 
     | 
    
         
            +
                                if_source_metageneration_match: nil,
         
     | 
| 
      
 1369 
     | 
    
         
            +
                                if_source_metageneration_not_match: nil,
         
     | 
| 
      
 1370 
     | 
    
         
            +
                                encryption_key: nil,
         
     | 
| 
      
 1371 
     | 
    
         
            +
                                new_encryption_key: nil,
         
     | 
| 
      
 1372 
     | 
    
         
            +
                                new_kms_key: nil,
         
     | 
| 
      
 1373 
     | 
    
         
            +
                                force_copy_metadata: nil
         
     | 
| 
       1264 
1374 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       1265 
     | 
    
         
            -
                      dest_bucket, dest_path = fix_rewrite_args dest_bucket_or_path,
         
     | 
| 
       1266 
     | 
    
         
            -
                                                                dest_path
         
     | 
| 
      
 1375 
     | 
    
         
            +
                      dest_bucket, dest_path = fix_rewrite_args dest_bucket_or_path, dest_path
         
     | 
| 
       1267 
1376 
     | 
    
         | 
| 
       1268 
1377 
     | 
    
         
             
                      update_gapi = nil
         
     | 
| 
       1269 
1378 
     | 
    
         
             
                      if block_given?
         
     | 
| 
         @@ -1276,9 +1385,21 @@ module Google 
     | 
|
| 
       1276 
1385 
     | 
    
         
             
                        end
         
     | 
| 
       1277 
1386 
     | 
    
         
             
                      end
         
     | 
| 
       1278 
1387 
     | 
    
         | 
| 
       1279 
     | 
    
         
            -
                      new_gapi = rewrite_gapi bucket, 
     | 
| 
       1280 
     | 
    
         
            -
                                               
     | 
| 
       1281 
     | 
    
         
            -
                                               
     | 
| 
      
 1388 
     | 
    
         
            +
                      new_gapi = rewrite_gapi bucket,
         
     | 
| 
      
 1389 
     | 
    
         
            +
                                              name,
         
     | 
| 
      
 1390 
     | 
    
         
            +
                                              update_gapi,
         
     | 
| 
      
 1391 
     | 
    
         
            +
                                              new_bucket: dest_bucket,
         
     | 
| 
      
 1392 
     | 
    
         
            +
                                              new_name: dest_path,
         
     | 
| 
      
 1393 
     | 
    
         
            +
                                              acl: acl,
         
     | 
| 
      
 1394 
     | 
    
         
            +
                                              generation: generation,
         
     | 
| 
      
 1395 
     | 
    
         
            +
                                              if_generation_match: if_generation_match,
         
     | 
| 
      
 1396 
     | 
    
         
            +
                                              if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 1397 
     | 
    
         
            +
                                              if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 1398 
     | 
    
         
            +
                                              if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
      
 1399 
     | 
    
         
            +
                                              if_source_generation_match: if_source_generation_match,
         
     | 
| 
      
 1400 
     | 
    
         
            +
                                              if_source_generation_not_match: if_source_generation_not_match,
         
     | 
| 
      
 1401 
     | 
    
         
            +
                                              if_source_metageneration_match: if_source_metageneration_match,
         
     | 
| 
      
 1402 
     | 
    
         
            +
                                              if_source_metageneration_not_match: if_source_metageneration_not_match,
         
     | 
| 
       1282 
1403 
     | 
    
         
             
                                              encryption_key: encryption_key,
         
     | 
| 
       1283 
1404 
     | 
    
         
             
                                              new_encryption_key: new_encryption_key,
         
     | 
| 
       1284 
1405 
     | 
    
         
             
                                              new_kms_key: new_kms_key,
         
     | 
| 
         @@ -1375,6 +1496,20 @@ module Google 
     | 
|
| 
       1375 
1496 
     | 
    
         
             
                    #   {#generation}. The default behavior is to delete the latest version
         
     | 
| 
       1376 
1497 
     | 
    
         
             
                    #   of the file (regardless of the version to which the file is set,
         
     | 
| 
       1377 
1498 
     | 
    
         
             
                    #   which is the version returned by {#generation}.)
         
     | 
| 
      
 1499 
     | 
    
         
            +
                    # @param [Integer] if_generation_match Makes the operation conditional
         
     | 
| 
      
 1500 
     | 
    
         
            +
                    #   on whether the file's current generation matches the given value.
         
     | 
| 
      
 1501 
     | 
    
         
            +
                    #   Setting to 0 makes the operation succeed only if there are no live
         
     | 
| 
      
 1502 
     | 
    
         
            +
                    #   versions of the file.
         
     | 
| 
      
 1503 
     | 
    
         
            +
                    # @param [Integer] if_generation_not_match Makes the operation conditional
         
     | 
| 
      
 1504 
     | 
    
         
            +
                    #   on whether the file's current generation does not match the given
         
     | 
| 
      
 1505 
     | 
    
         
            +
                    #   value. If no live file exists, the precondition fails. Setting to 0
         
     | 
| 
      
 1506 
     | 
    
         
            +
                    #   makes the operation succeed only if there is a live version of the file.
         
     | 
| 
      
 1507 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_match Makes the operation conditional
         
     | 
| 
      
 1508 
     | 
    
         
            +
                    #   on whether the file's current metageneration matches the given value.
         
     | 
| 
      
 1509 
     | 
    
         
            +
                    # @param [Integer] if_metageneration_not_match Makes the operation
         
     | 
| 
      
 1510 
     | 
    
         
            +
                    #   conditional on whether the file's current metageneration does not
         
     | 
| 
      
 1511 
     | 
    
         
            +
                    #   match the given value.
         
     | 
| 
      
 1512 
     | 
    
         
            +
                    #
         
     | 
| 
       1378 
1513 
     | 
    
         
             
                    # @return [Boolean] Returns `true` if the file was deleted.
         
     | 
| 
       1379 
1514 
     | 
    
         
             
                    #
         
     | 
| 
       1380 
1515 
     | 
    
         
             
                    # @example
         
     | 
| 
         @@ -1407,11 +1542,21 @@ module Google 
     | 
|
| 
       1407 
1542 
     | 
    
         
             
                    #   file = bucket.file "path/to/my-file.ext"
         
     | 
| 
       1408 
1543 
     | 
    
         
             
                    #   file.delete generation: 123456
         
     | 
| 
       1409 
1544 
     | 
    
         
             
                    #
         
     | 
| 
       1410 
     | 
    
         
            -
                    def delete generation: nil
         
     | 
| 
      
 1545 
     | 
    
         
            +
                    def delete generation: nil,
         
     | 
| 
      
 1546 
     | 
    
         
            +
                               if_generation_match: nil,
         
     | 
| 
      
 1547 
     | 
    
         
            +
                               if_generation_not_match: nil,
         
     | 
| 
      
 1548 
     | 
    
         
            +
                               if_metageneration_match: nil,
         
     | 
| 
      
 1549 
     | 
    
         
            +
                               if_metageneration_not_match: nil
         
     | 
| 
       1411 
1550 
     | 
    
         
             
                      generation = self.generation if generation == true
         
     | 
| 
       1412 
1551 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       1413 
     | 
    
         
            -
                      service.delete_file bucket, 
     | 
| 
       1414 
     | 
    
         
            -
             
     | 
| 
      
 1552 
     | 
    
         
            +
                      service.delete_file bucket,
         
     | 
| 
      
 1553 
     | 
    
         
            +
                                          name,
         
     | 
| 
      
 1554 
     | 
    
         
            +
                                          generation: generation,
         
     | 
| 
      
 1555 
     | 
    
         
            +
                                          if_generation_match: if_generation_match,
         
     | 
| 
      
 1556 
     | 
    
         
            +
                                          if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 1557 
     | 
    
         
            +
                                          if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 1558 
     | 
    
         
            +
                                          if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
      
 1559 
     | 
    
         
            +
                                          user_project: user_project
         
     | 
| 
       1415 
1560 
     | 
    
         
             
                      true
         
     | 
| 
       1416 
1561 
     | 
    
         
             
                    end
         
     | 
| 
       1417 
1562 
     | 
    
         | 
| 
         @@ -1865,7 +2010,13 @@ module Google 
     | 
|
| 
       1865 
2010 
     | 
    
         
             
                      reload! generation: true
         
     | 
| 
       1866 
2011 
     | 
    
         
             
                    end
         
     | 
| 
       1867 
2012 
     | 
    
         | 
| 
       1868 
     | 
    
         
            -
                    def update_gapi!  
     | 
| 
      
 2013 
     | 
    
         
            +
                    def update_gapi! attributes,
         
     | 
| 
      
 2014 
     | 
    
         
            +
                                     generation: nil,
         
     | 
| 
      
 2015 
     | 
    
         
            +
                                     if_generation_match: nil,
         
     | 
| 
      
 2016 
     | 
    
         
            +
                                     if_generation_not_match: nil,
         
     | 
| 
      
 2017 
     | 
    
         
            +
                                     if_metageneration_match: nil,
         
     | 
| 
      
 2018 
     | 
    
         
            +
                                     if_metageneration_not_match: nil
         
     | 
| 
      
 2019 
     | 
    
         
            +
                      attributes = Array(attributes)
         
     | 
| 
       1869 
2020 
     | 
    
         
             
                      attributes.flatten!
         
     | 
| 
       1870 
2021 
     | 
    
         
             
                      return if attributes.empty?
         
     | 
| 
       1871 
2022 
     | 
    
         
             
                      update_gapi = self.class.gapi_from_attrs @gapi, attributes
         
     | 
| 
         @@ -1875,26 +2026,65 @@ module Google 
     | 
|
| 
       1875 
2026 
     | 
    
         | 
| 
       1876 
2027 
     | 
    
         
             
                      rewrite_attrs = [:storage_class, :kms_key_name]
         
     | 
| 
       1877 
2028 
     | 
    
         
             
                      @gapi = if attributes.any? { |a| rewrite_attrs.include? a }
         
     | 
| 
       1878 
     | 
    
         
            -
                                rewrite_gapi  
     | 
| 
       1879 
     | 
    
         
            -
             
     | 
| 
      
 2029 
     | 
    
         
            +
                                rewrite_gapi bucket,
         
     | 
| 
      
 2030 
     | 
    
         
            +
                                             name,
         
     | 
| 
      
 2031 
     | 
    
         
            +
                                             update_gapi,
         
     | 
| 
      
 2032 
     | 
    
         
            +
                                             generation: generation,
         
     | 
| 
      
 2033 
     | 
    
         
            +
                                             if_generation_match: if_generation_match,
         
     | 
| 
      
 2034 
     | 
    
         
            +
                                             if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 2035 
     | 
    
         
            +
                                             if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 2036 
     | 
    
         
            +
                                             if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
      
 2037 
     | 
    
         
            +
                                             user_project: user_project
         
     | 
| 
       1880 
2038 
     | 
    
         
             
                              else
         
     | 
| 
       1881 
     | 
    
         
            -
                                service.patch_file  
     | 
| 
       1882 
     | 
    
         
            -
             
     | 
| 
      
 2039 
     | 
    
         
            +
                                service.patch_file bucket,
         
     | 
| 
      
 2040 
     | 
    
         
            +
                                                   name,
         
     | 
| 
      
 2041 
     | 
    
         
            +
                                                   update_gapi,
         
     | 
| 
      
 2042 
     | 
    
         
            +
                                                   generation: generation,
         
     | 
| 
      
 2043 
     | 
    
         
            +
                                                   if_generation_match: if_generation_match,
         
     | 
| 
      
 2044 
     | 
    
         
            +
                                                   if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 2045 
     | 
    
         
            +
                                                   if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 2046 
     | 
    
         
            +
                                                   if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
      
 2047 
     | 
    
         
            +
                                                   user_project: user_project
         
     | 
| 
       1883 
2048 
     | 
    
         
             
                              end
         
     | 
| 
       1884 
2049 
     | 
    
         
             
                    end
         
     | 
| 
       1885 
2050 
     | 
    
         | 
| 
       1886 
     | 
    
         
            -
                    def rewrite_gapi bucket, 
     | 
| 
       1887 
     | 
    
         
            -
                                      
     | 
| 
       1888 
     | 
    
         
            -
                                      
     | 
| 
       1889 
     | 
    
         
            -
                                      
     | 
| 
      
 2051 
     | 
    
         
            +
                    def rewrite_gapi bucket,
         
     | 
| 
      
 2052 
     | 
    
         
            +
                                     name,
         
     | 
| 
      
 2053 
     | 
    
         
            +
                                     updated_gapi,
         
     | 
| 
      
 2054 
     | 
    
         
            +
                                     new_bucket: nil,
         
     | 
| 
      
 2055 
     | 
    
         
            +
                                     new_name: nil,
         
     | 
| 
      
 2056 
     | 
    
         
            +
                                     acl: nil,
         
     | 
| 
      
 2057 
     | 
    
         
            +
                                     generation: nil,
         
     | 
| 
      
 2058 
     | 
    
         
            +
                                     if_generation_match: nil,
         
     | 
| 
      
 2059 
     | 
    
         
            +
                                     if_generation_not_match: nil,
         
     | 
| 
      
 2060 
     | 
    
         
            +
                                     if_metageneration_match: nil,
         
     | 
| 
      
 2061 
     | 
    
         
            +
                                     if_metageneration_not_match: nil,
         
     | 
| 
      
 2062 
     | 
    
         
            +
                                     if_source_generation_match: nil,
         
     | 
| 
      
 2063 
     | 
    
         
            +
                                     if_source_generation_not_match: nil,
         
     | 
| 
      
 2064 
     | 
    
         
            +
                                     if_source_metageneration_match: nil,
         
     | 
| 
      
 2065 
     | 
    
         
            +
                                     if_source_metageneration_not_match: nil,
         
     | 
| 
      
 2066 
     | 
    
         
            +
                                     encryption_key: nil,
         
     | 
| 
      
 2067 
     | 
    
         
            +
                                     new_encryption_key: nil,
         
     | 
| 
      
 2068 
     | 
    
         
            +
                                     new_kms_key: nil,
         
     | 
| 
       1890 
2069 
     | 
    
         
             
                                     user_project: nil
         
     | 
| 
       1891 
2070 
     | 
    
         
             
                      new_bucket ||= bucket
         
     | 
| 
       1892 
2071 
     | 
    
         
             
                      new_name ||= name
         
     | 
| 
       1893 
     | 
    
         
            -
                      options = { 
     | 
| 
       1894 
     | 
    
         
            -
             
     | 
| 
       1895 
     | 
    
         
            -
             
     | 
| 
       1896 
     | 
    
         
            -
             
     | 
| 
       1897 
     | 
    
         
            -
             
     | 
| 
      
 2072 
     | 
    
         
            +
                      options = {
         
     | 
| 
      
 2073 
     | 
    
         
            +
                        acl: File::Acl.predefined_rule_for(acl),
         
     | 
| 
      
 2074 
     | 
    
         
            +
                        generation: generation,
         
     | 
| 
      
 2075 
     | 
    
         
            +
                        if_generation_match: if_generation_match,
         
     | 
| 
      
 2076 
     | 
    
         
            +
                        if_generation_not_match: if_generation_not_match,
         
     | 
| 
      
 2077 
     | 
    
         
            +
                        if_metageneration_match: if_metageneration_match,
         
     | 
| 
      
 2078 
     | 
    
         
            +
                        if_metageneration_not_match: if_metageneration_not_match,
         
     | 
| 
      
 2079 
     | 
    
         
            +
                        if_source_generation_match: if_source_generation_match,
         
     | 
| 
      
 2080 
     | 
    
         
            +
                        if_source_generation_not_match: if_source_generation_not_match,
         
     | 
| 
      
 2081 
     | 
    
         
            +
                        if_source_metageneration_match: if_source_metageneration_match,
         
     | 
| 
      
 2082 
     | 
    
         
            +
                        if_source_metageneration_not_match: if_source_metageneration_not_match,
         
     | 
| 
      
 2083 
     | 
    
         
            +
                        source_key: encryption_key,
         
     | 
| 
      
 2084 
     | 
    
         
            +
                        destination_key: new_encryption_key,
         
     | 
| 
      
 2085 
     | 
    
         
            +
                        destination_kms_key: new_kms_key,
         
     | 
| 
      
 2086 
     | 
    
         
            +
                        user_project: user_project
         
     | 
| 
      
 2087 
     | 
    
         
            +
                      }.delete_if { |_k, v| v.nil? }
         
     | 
| 
       1898 
2088 
     | 
    
         | 
| 
       1899 
2089 
     | 
    
         
             
                      resp = service.rewrite_file \
         
     | 
| 
       1900 
2090 
     | 
    
         
             
                        bucket, name, new_bucket, new_name, updated_gapi, **options
         
     |