qingstor-sdk 2.2.1 → 2.4.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 +5 -5
- data/README.md +48 -4
- data/lib/qingstor/sdk/general/config.rb +2 -2
- data/lib/qingstor/sdk/general/logger.rb +1 -1
- data/lib/qingstor/sdk/request/preprocessor.rb +19 -1
- data/lib/qingstor/sdk/request/request.rb +5 -2
- data/lib/qingstor/sdk/request/signer.rb +5 -4
- data/lib/qingstor/sdk/service/bucket.rb +888 -73
- data/lib/qingstor/sdk/service/object.rb +300 -44
- data/lib/qingstor/sdk/service/qingstor.rb +13 -7
- data/lib/qingstor/sdk/version.rb +1 -1
- metadata +47 -28
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: cb83b84c4cd53131d0092b26061348057db9f2af57d1d4670bc5cef3b36c12b8
         | 
| 4 | 
            +
              data.tar.gz: 0c2d01a2a0d134540e57e11cdeaef5f5547cb613b3b8a1ee5a2e531302391a15
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: bf9f6e59304fa869921e5300b57560f5fae7728b9bb521a6ffc2d1d1d03783871dc03b68b9f08ffa875afef7a0210b237d518f8fd30d24260e6db14a766ce7ad
         | 
| 7 | 
            +
              data.tar.gz: 394b4f14aea92f46e8b511dbbd283a4e08a9f7d28ef1f5f71e87e0eae63ee32c4bd30a172266638efd9a715fe81a70c91c7dec0c738dabec2eed1175c5376c45
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,11 +1,10 @@ | |
| 1 1 | 
             
            # QingStor::SDK
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
            [](https://travis-ci.org/yunify/qingstor-sdk-ruby)
         | 
| 3 | 
            +
            [](https://github.com/qingstor/qingstor-sdk-ruby/actions?query=workflow%3A%22Unit+Test%22)
         | 
| 5 4 | 
             
            [](http://badge.fury.io/rb/qingstor-sdk)
         | 
| 6 5 | 
             
            [](https://docs.qingcloud.com/qingstor/)
         | 
| 7 6 | 
             
            [](https://github.com/yunify/qingstor-sdk-ruby/blob/master/LICENSE)
         | 
| 8 | 
            -
             | 
| 7 | 
            +
            [](https://qingstor.zulipchat.com/join/odapi42t7xhqc7v4gb2wfgjx/)
         | 
| 9 8 |  | 
| 10 9 | 
             
            The official QingStor SDK for Ruby programming language.
         | 
| 11 10 |  | 
| @@ -169,11 +168,52 @@ log_level: 'warn' | |
| 169 168 | 
             
            ## Change Log
         | 
| 170 169 | 
             
            All notable changes to QingStor SDK for Ruby will be documented here.
         | 
| 171 170 |  | 
| 171 | 
            +
            ### [v2.4.0] - 2021-01-05
         | 
| 172 | 
            +
             | 
| 173 | 
            +
            ### Added
         | 
| 174 | 
            +
             | 
| 175 | 
            +
            - Support to set x-qs-metadata-directive header (#29)
         | 
| 176 | 
            +
            - Add support for bucket replication (#45)
         | 
| 177 | 
            +
             | 
| 178 | 
            +
            ### Changed
         | 
| 179 | 
            +
             | 
| 180 | 
            +
            - ci: Transfer ci into github action (#30)
         | 
| 181 | 
            +
             | 
| 182 | 
            +
            ### Fixed
         | 
| 183 | 
            +
             | 
| 184 | 
            +
            - Fix metadata added into signature when empty (#44)
         | 
| 185 | 
            +
             | 
| 186 | 
            +
            ### [v2.3.0] - 2020-05-11
         | 
| 187 | 
            +
             | 
| 188 | 
            +
            ### Added
         | 
| 189 | 
            +
             | 
| 190 | 
            +
            - Add support for lifecycle and notification.
         | 
| 191 | 
            +
            - Add support for bucket logging, bucket cname and append object. (#24)
         | 
| 192 | 
            +
             | 
| 193 | 
            +
            ### Fixed
         | 
| 194 | 
            +
             | 
| 195 | 
            +
            - Modify content-type check for application/json. (#21)
         | 
| 196 | 
            +
            - Fix sub-resources not be recognized when generate signature. (#25)
         | 
| 197 | 
            +
            - Fix meta data not work as intended. (#26)
         | 
| 198 | 
            +
            - Reverse fix of empty map in template, should not compact empty hash when sign. (#28)
         | 
| 199 | 
            +
             | 
| 200 | 
            +
            ### [v2.2.3] - 2017-03-28
         | 
| 201 | 
            +
             | 
| 202 | 
            +
            ### Fixed
         | 
| 203 | 
            +
             | 
| 204 | 
            +
            - Fix status code of DELETE CORS API.
         | 
| 205 | 
            +
             | 
| 206 | 
            +
            ### [v2.2.2] - 2017-03-10
         | 
| 207 | 
            +
             | 
| 208 | 
            +
            ### Fixed
         | 
| 209 | 
            +
             | 
| 210 | 
            +
            - Resource is not mandatory in bucket policy statement.
         | 
| 211 | 
            +
             | 
| 172 212 | 
             
            ### [v2.2.1] - 2017-03-10
         | 
| 173 213 |  | 
| 174 214 | 
             
            #### Added
         | 
| 175 215 |  | 
| 176 | 
            -
            - Allow user to append additional info to User-Agent
         | 
| 216 | 
            +
            - Allow user to append additional info to User-Agent.
         | 
| 177 217 |  | 
| 178 218 | 
             
            ### [v2.2.0] - 2017-02-28
         | 
| 179 219 |  | 
| @@ -234,6 +274,10 @@ All notable changes to QingStor SDK for Ruby will be documented here. | |
| 234 274 | 
             
            The Apache License (Version 2.0, January 2004).
         | 
| 235 275 |  | 
| 236 276 | 
             
            [compatible]: https://github.com/yunify/qingstor-sdk-ruby/tree/compatible
         | 
| 277 | 
            +
            [v2.4.0]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.3.0...v2.4.0
         | 
| 278 | 
            +
            [v2.3.0]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.3...v2.3.0
         | 
| 279 | 
            +
            [v2.2.3]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.2...v2.2.3
         | 
| 280 | 
            +
            [v2.2.2]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.1...v2.2.2
         | 
| 237 281 | 
             
            [v2.2.1]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.0...v2.2.1
         | 
| 238 282 | 
             
            [v2.2.0]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.1.1...v2.2.0
         | 
| 239 283 | 
             
            [v2.1.1]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.1.0...v2.1.1
         | 
| @@ -29,7 +29,7 @@ module QingStor | |
| 29 29 | 
             
                  def self.init(access_key_id, secret_access_key)
         | 
| 30 30 | 
             
                    initial_config = {
         | 
| 31 31 | 
             
                      access_key_id:     access_key_id,
         | 
| 32 | 
            -
                      secret_access_key: secret_access_key | 
| 32 | 
            +
                      secret_access_key: secret_access_key
         | 
| 33 33 | 
             
                    }
         | 
| 34 34 | 
             
                    Config.new(initial_config)
         | 
| 35 35 | 
             
                  end
         | 
| @@ -47,7 +47,7 @@ module QingStor | |
| 47 47 | 
             
                  end
         | 
| 48 48 |  | 
| 49 49 | 
             
                  def check
         | 
| 50 | 
            -
                    [ | 
| 50 | 
            +
                    %i[access_key_id secret_access_key host port protocol].each do |x|
         | 
| 51 51 | 
             
                      if !self[x] || self[x].to_s.empty?
         | 
| 52 52 | 
             
                        raise ConfigurationError, "#{x.to_sym} not specified"
         | 
| 53 53 | 
             
                      end
         | 
| @@ -23,7 +23,7 @@ module QingStor | |
| 23 23 | 
             
                  @@level = :warn
         | 
| 24 24 |  | 
| 25 25 | 
             
                  def self.set_level(level)
         | 
| 26 | 
            -
                    index = %w | 
| 26 | 
            +
                    index = %w[debug info warn error fatal].find_index level.to_s
         | 
| 27 27 | 
             
                    @@logger.level = index.nil? ? 0 : index
         | 
| 28 28 | 
             
                    @@level = level.to_sym
         | 
| 29 29 | 
             
                  end
         | 
| @@ -102,6 +102,24 @@ module QingStor | |
| 102 102 | 
             
                      input[:request_headers][:'Content-MD5'] = Base64.encode64(Digest::MD5.digest(input[:request_body])).strip
         | 
| 103 103 | 
             
                    end
         | 
| 104 104 |  | 
| 105 | 
            +
                    unless input[:request_headers][:'X-QS-MetaData'].nil?
         | 
| 106 | 
            +
                      if input[:request_headers][:'X-QS-MetaData'].is_a?(Hash) && !input[:request_headers][:'X-QS-MetaData'].empty?
         | 
| 107 | 
            +
                        prefix = 'x-qs-meta-'
         | 
| 108 | 
            +
                        input[:request_headers][:'X-QS-MetaData'].each do |k, v|
         | 
| 109 | 
            +
                          k = k.to_s
         | 
| 110 | 
            +
                          # check whether meta header has prefix
         | 
| 111 | 
            +
                          if k.downcase.start_with? prefix
         | 
| 112 | 
            +
                            suffix_len = prefix.size - k.size
         | 
| 113 | 
            +
                            k = prefix + k[suffix_len, -suffix_len]
         | 
| 114 | 
            +
                          else
         | 
| 115 | 
            +
                            k = prefix + k
         | 
| 116 | 
            +
                          end
         | 
| 117 | 
            +
                          input[:request_headers][:"#{k}"] = v
         | 
| 118 | 
            +
                        end
         | 
| 119 | 
            +
                      end
         | 
| 120 | 
            +
                      input[:request_headers].delete :'X-QS-MetaData'
         | 
| 121 | 
            +
                    end
         | 
| 122 | 
            +
             | 
| 105 123 | 
             
                    input[:request_headers].map do |k, v|
         | 
| 106 124 | 
             
                      input[:request_headers][k] = escape v.to_s unless v.to_s.ascii_only?
         | 
| 107 125 | 
             
                    end
         | 
| @@ -127,7 +145,7 @@ module QingStor | |
| 127 145 | 
             
                  def self.compact(object)
         | 
| 128 146 | 
             
                    object.each do |k, v|
         | 
| 129 147 | 
             
                      object[k] = compact v if v.is_a? Hash
         | 
| 130 | 
            -
                      object.delete k if v.nil? || v == ''
         | 
| 148 | 
            +
                      object.delete k if v.nil? || v == '' || v == []
         | 
| 131 149 | 
             
                    end
         | 
| 132 150 | 
             
                    object
         | 
| 133 151 | 
             
                  end
         | 
| @@ -62,7 +62,10 @@ module QingStor | |
| 62 62 |  | 
| 63 63 | 
             
                  def build
         | 
| 64 64 | 
             
                    params           = input[:request_params].map { |k, v| "#{k}=#{v}" }
         | 
| 65 | 
            -
                    query_string     =  | 
| 65 | 
            +
                    query_string     = params.join '&'
         | 
| 66 | 
            +
                    if query_string && !query_string.empty?
         | 
| 67 | 
            +
                      query_string = "#{input[:request_uri].include?('?') ? '&' : '?'}#{query_string}"
         | 
| 68 | 
            +
                    end
         | 
| 66 69 | 
             
                    self.request_url = "#{input[:request_endpoint]}#{input[:request_uri]}#{query_string}"
         | 
| 67 70 |  | 
| 68 71 | 
             
                    request      = new_http_request input[:request_method], request_url
         | 
| @@ -77,7 +80,7 @@ module QingStor | |
| 77 80 | 
             
                    output['status_code'] = http_response.code.to_i
         | 
| 78 81 |  | 
| 79 82 | 
             
                    http_response.each_header { |k, v| output[k.tr('-', '_')] = v }
         | 
| 80 | 
            -
                    if http_response['Content-Type']  | 
| 83 | 
            +
                    if http_response['Content-Type'].include? 'application/json'
         | 
| 81 84 | 
             
                      unless http_response.body.nil?
         | 
| 82 85 | 
             
                        JSON.parse(http_response.body).each { |k, v| output[k] = v }
         | 
| 83 86 | 
             
                      end
         | 
| @@ -83,7 +83,7 @@ module QingStor | |
| 83 83 | 
             
                  def self.canonicalized_headers(input)
         | 
| 84 84 | 
             
                    h = {}
         | 
| 85 85 | 
             
                    input[:request_headers].each { |k, v| h[k.to_s.strip.downcase] = v.to_s.strip }
         | 
| 86 | 
            -
                    h.keys.sort. | 
| 86 | 
            +
                    h.keys.sort.select { |k| k.start_with? 'x-qs-' }.map { |k| "#{k}:#{h[k]}\n" }.join ''
         | 
| 87 87 | 
             
                  end
         | 
| 88 88 |  | 
| 89 89 | 
             
                  def self.canonicalized_resource(input)
         | 
| @@ -98,11 +98,12 @@ module QingStor | |
| 98 98 | 
             
                  end
         | 
| 99 99 |  | 
| 100 100 | 
             
                  def self.sub_resource?(key)
         | 
| 101 | 
            -
                    %w | 
| 102 | 
            -
                      acl cors delete  | 
| 101 | 
            +
                    %w[
         | 
| 102 | 
            +
                      acl append cname cors delete image lifecycle logging mirror
         | 
| 103 | 
            +
                      notification part_number policy position stats upload_id uploads
         | 
| 103 104 | 
             
                      response-expires response-cache-control response-content-type
         | 
| 104 105 | 
             
                      response-content-language response-content-encoding response-content-disposition
         | 
| 105 | 
            -
                     | 
| 106 | 
            +
                    ].include? key
         | 
| 106 107 | 
             
                  end
         | 
| 107 108 | 
             
                end
         | 
| 108 109 | 
             
              end
         | 
| @@ -47,9 +47,10 @@ module QingStor | |
| 47 47 | 
             
                      request_elements: {
         | 
| 48 48 | 
             
                      },
         | 
| 49 49 | 
             
                      request_body:     nil,
         | 
| 50 | 
            +
             | 
| 50 51 | 
             
                      status_code:      [
         | 
| 51 | 
            -
                        204 | 
| 52 | 
            -
                      ] | 
| 52 | 
            +
                        204
         | 
| 53 | 
            +
                      ]
         | 
| 53 54 | 
             
                    }
         | 
| 54 55 |  | 
| 55 56 | 
             
                    delete_bucket_input_validate input
         | 
| @@ -64,6 +65,50 @@ module QingStor | |
| 64 65 |  | 
| 65 66 | 
             
                  public
         | 
| 66 67 |  | 
| 68 | 
            +
                  # delete_bucket_cname: Delete bucket CNAME setting of the bucket.
         | 
| 69 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cname/delete_cname.html
         | 
| 70 | 
            +
                  def delete_cname(domain: '')
         | 
| 71 | 
            +
                    request = delete_cname_request domain: domain
         | 
| 72 | 
            +
                    request.send
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  def delete_cname_request(domain: '')
         | 
| 76 | 
            +
                    input = {
         | 
| 77 | 
            +
                      config:           config,
         | 
| 78 | 
            +
                      properties:       properties,
         | 
| 79 | 
            +
                      api_name:         'DELETE Bucket CNAME',
         | 
| 80 | 
            +
                      request_method:   'DELETE',
         | 
| 81 | 
            +
                      request_uri:      '/<bucket-name>?cname',
         | 
| 82 | 
            +
                      request_params:   {
         | 
| 83 | 
            +
                      },
         | 
| 84 | 
            +
                      request_headers:  {
         | 
| 85 | 
            +
                      },
         | 
| 86 | 
            +
                      request_elements: {
         | 
| 87 | 
            +
                        'domain' => domain
         | 
| 88 | 
            +
                      },
         | 
| 89 | 
            +
                      request_body:     nil,
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                      status_code:      [
         | 
| 92 | 
            +
                        204
         | 
| 93 | 
            +
                      ]
         | 
| 94 | 
            +
                    }
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                    delete_bucket_cname_input_validate input
         | 
| 97 | 
            +
                    Request.new input
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                  private
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  def delete_bucket_cname_input_validate(input)
         | 
| 103 | 
            +
                    input.deep_stringify_keys!
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                    unless !input['request_elements']['domain'].nil? && !input['request_elements']['domain'].to_s.empty?
         | 
| 106 | 
            +
                      raise ParameterRequiredError.new('domain', 'DeleteBucketCNAMEInput')
         | 
| 107 | 
            +
                    end
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                  public
         | 
| 111 | 
            +
             | 
| 67 112 | 
             
                  # delete_bucket_cors: Delete CORS information of the bucket.
         | 
| 68 113 | 
             
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cors/delete_cors.html
         | 
| 69 114 | 
             
                  def delete_cors
         | 
| @@ -85,9 +130,10 @@ module QingStor | |
| 85 130 | 
             
                      request_elements: {
         | 
| 86 131 | 
             
                      },
         | 
| 87 132 | 
             
                      request_body:     nil,
         | 
| 133 | 
            +
             | 
| 88 134 | 
             
                      status_code:      [
         | 
| 89 | 
            -
                         | 
| 90 | 
            -
                      ] | 
| 135 | 
            +
                        204
         | 
| 136 | 
            +
                      ]
         | 
| 91 137 | 
             
                    }
         | 
| 92 138 |  | 
| 93 139 | 
             
                    delete_bucket_cors_input_validate input
         | 
| @@ -123,9 +169,10 @@ module QingStor | |
| 123 169 | 
             
                      request_elements: {
         | 
| 124 170 | 
             
                      },
         | 
| 125 171 | 
             
                      request_body:     nil,
         | 
| 172 | 
            +
             | 
| 126 173 | 
             
                      status_code:      [
         | 
| 127 | 
            -
                        204 | 
| 128 | 
            -
                      ] | 
| 174 | 
            +
                        204
         | 
| 175 | 
            +
                      ]
         | 
| 129 176 | 
             
                    }
         | 
| 130 177 |  | 
| 131 178 | 
             
                    delete_bucket_external_mirror_input_validate input
         | 
| @@ -140,6 +187,123 @@ module QingStor | |
| 140 187 |  | 
| 141 188 | 
             
                  public
         | 
| 142 189 |  | 
| 190 | 
            +
                  # delete_bucket_lifecycle: Delete Lifecycle information of the bucket.
         | 
| 191 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/lifecycle/delete_lifecycle.html
         | 
| 192 | 
            +
                  def delete_lifecycle
         | 
| 193 | 
            +
                    request = delete_lifecycle_request
         | 
| 194 | 
            +
                    request.send
         | 
| 195 | 
            +
                  end
         | 
| 196 | 
            +
             | 
| 197 | 
            +
                  def delete_lifecycle_request
         | 
| 198 | 
            +
                    input = {
         | 
| 199 | 
            +
                      config:           config,
         | 
| 200 | 
            +
                      properties:       properties,
         | 
| 201 | 
            +
                      api_name:         'DELETE Bucket Lifecycle',
         | 
| 202 | 
            +
                      request_method:   'DELETE',
         | 
| 203 | 
            +
                      request_uri:      '/<bucket-name>?lifecycle',
         | 
| 204 | 
            +
                      request_params:   {
         | 
| 205 | 
            +
                      },
         | 
| 206 | 
            +
                      request_headers:  {
         | 
| 207 | 
            +
                      },
         | 
| 208 | 
            +
                      request_elements: {
         | 
| 209 | 
            +
                      },
         | 
| 210 | 
            +
                      request_body:     nil,
         | 
| 211 | 
            +
             | 
| 212 | 
            +
                      status_code:      [
         | 
| 213 | 
            +
                        204
         | 
| 214 | 
            +
                      ]
         | 
| 215 | 
            +
                    }
         | 
| 216 | 
            +
             | 
| 217 | 
            +
                    delete_bucket_lifecycle_input_validate input
         | 
| 218 | 
            +
                    Request.new input
         | 
| 219 | 
            +
                  end
         | 
| 220 | 
            +
             | 
| 221 | 
            +
                  private
         | 
| 222 | 
            +
             | 
| 223 | 
            +
                  def delete_bucket_lifecycle_input_validate(input)
         | 
| 224 | 
            +
                    input.deep_stringify_keys!
         | 
| 225 | 
            +
                  end
         | 
| 226 | 
            +
             | 
| 227 | 
            +
                  public
         | 
| 228 | 
            +
             | 
| 229 | 
            +
                  # delete_bucket_logging: Delete bucket logging setting of the bucket.
         | 
| 230 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/logging/delete_logging.html
         | 
| 231 | 
            +
                  def delete_logging
         | 
| 232 | 
            +
                    request = delete_logging_request
         | 
| 233 | 
            +
                    request.send
         | 
| 234 | 
            +
                  end
         | 
| 235 | 
            +
             | 
| 236 | 
            +
                  def delete_logging_request
         | 
| 237 | 
            +
                    input = {
         | 
| 238 | 
            +
                      config:           config,
         | 
| 239 | 
            +
                      properties:       properties,
         | 
| 240 | 
            +
                      api_name:         'DELETE Bucket Logging',
         | 
| 241 | 
            +
                      request_method:   'DELETE',
         | 
| 242 | 
            +
                      request_uri:      '/<bucket-name>?logging',
         | 
| 243 | 
            +
                      request_params:   {
         | 
| 244 | 
            +
                      },
         | 
| 245 | 
            +
                      request_headers:  {
         | 
| 246 | 
            +
                      },
         | 
| 247 | 
            +
                      request_elements: {
         | 
| 248 | 
            +
                      },
         | 
| 249 | 
            +
                      request_body:     nil,
         | 
| 250 | 
            +
             | 
| 251 | 
            +
                      status_code:      [
         | 
| 252 | 
            +
                        204
         | 
| 253 | 
            +
                      ]
         | 
| 254 | 
            +
                    }
         | 
| 255 | 
            +
             | 
| 256 | 
            +
                    delete_bucket_logging_input_validate input
         | 
| 257 | 
            +
                    Request.new input
         | 
| 258 | 
            +
                  end
         | 
| 259 | 
            +
             | 
| 260 | 
            +
                  private
         | 
| 261 | 
            +
             | 
| 262 | 
            +
                  def delete_bucket_logging_input_validate(input)
         | 
| 263 | 
            +
                    input.deep_stringify_keys!
         | 
| 264 | 
            +
                  end
         | 
| 265 | 
            +
             | 
| 266 | 
            +
                  public
         | 
| 267 | 
            +
             | 
| 268 | 
            +
                  # delete_bucket_notification: Delete Notification information of the bucket.
         | 
| 269 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/notification/delete_notification.html
         | 
| 270 | 
            +
                  def delete_notification
         | 
| 271 | 
            +
                    request = delete_notification_request
         | 
| 272 | 
            +
                    request.send
         | 
| 273 | 
            +
                  end
         | 
| 274 | 
            +
             | 
| 275 | 
            +
                  def delete_notification_request
         | 
| 276 | 
            +
                    input = {
         | 
| 277 | 
            +
                      config:           config,
         | 
| 278 | 
            +
                      properties:       properties,
         | 
| 279 | 
            +
                      api_name:         'DELETE Bucket Notification',
         | 
| 280 | 
            +
                      request_method:   'DELETE',
         | 
| 281 | 
            +
                      request_uri:      '/<bucket-name>?notification',
         | 
| 282 | 
            +
                      request_params:   {
         | 
| 283 | 
            +
                      },
         | 
| 284 | 
            +
                      request_headers:  {
         | 
| 285 | 
            +
                      },
         | 
| 286 | 
            +
                      request_elements: {
         | 
| 287 | 
            +
                      },
         | 
| 288 | 
            +
                      request_body:     nil,
         | 
| 289 | 
            +
             | 
| 290 | 
            +
                      status_code:      [
         | 
| 291 | 
            +
                        204
         | 
| 292 | 
            +
                      ]
         | 
| 293 | 
            +
                    }
         | 
| 294 | 
            +
             | 
| 295 | 
            +
                    delete_bucket_notification_input_validate input
         | 
| 296 | 
            +
                    Request.new input
         | 
| 297 | 
            +
                  end
         | 
| 298 | 
            +
             | 
| 299 | 
            +
                  private
         | 
| 300 | 
            +
             | 
| 301 | 
            +
                  def delete_bucket_notification_input_validate(input)
         | 
| 302 | 
            +
                    input.deep_stringify_keys!
         | 
| 303 | 
            +
                  end
         | 
| 304 | 
            +
             | 
| 305 | 
            +
                  public
         | 
| 306 | 
            +
             | 
| 143 307 | 
             
                  # delete_bucket_policy: Delete policy information of the bucket.
         | 
| 144 308 | 
             
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/policy/delete_policy.html
         | 
| 145 309 | 
             
                  def delete_policy
         | 
| @@ -161,9 +325,10 @@ module QingStor | |
| 161 325 | 
             
                      request_elements: {
         | 
| 162 326 | 
             
                      },
         | 
| 163 327 | 
             
                      request_body:     nil,
         | 
| 328 | 
            +
             | 
| 164 329 | 
             
                      status_code:      [
         | 
| 165 | 
            -
                        204 | 
| 166 | 
            -
                      ] | 
| 330 | 
            +
                        204
         | 
| 331 | 
            +
                      ]
         | 
| 167 332 | 
             
                    }
         | 
| 168 333 |  | 
| 169 334 | 
             
                    delete_bucket_policy_input_validate input
         | 
| @@ -178,6 +343,45 @@ module QingStor | |
| 178 343 |  | 
| 179 344 | 
             
                  public
         | 
| 180 345 |  | 
| 346 | 
            +
                  # delete_bucket_replication: Delete Replication information of the bucket.
         | 
| 347 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/replication/delete_replication.html
         | 
| 348 | 
            +
                  def delete_replication
         | 
| 349 | 
            +
                    request = delete_replication_request
         | 
| 350 | 
            +
                    request.send
         | 
| 351 | 
            +
                  end
         | 
| 352 | 
            +
             | 
| 353 | 
            +
                  def delete_replication_request
         | 
| 354 | 
            +
                    input = {
         | 
| 355 | 
            +
                      config:           config,
         | 
| 356 | 
            +
                      properties:       properties,
         | 
| 357 | 
            +
                      api_name:         'DELETE Bucket Replication',
         | 
| 358 | 
            +
                      request_method:   'DELETE',
         | 
| 359 | 
            +
                      request_uri:      '/<bucket-name>?replication',
         | 
| 360 | 
            +
                      request_params:   {
         | 
| 361 | 
            +
                      },
         | 
| 362 | 
            +
                      request_headers:  {
         | 
| 363 | 
            +
                      },
         | 
| 364 | 
            +
                      request_elements: {
         | 
| 365 | 
            +
                      },
         | 
| 366 | 
            +
                      request_body:     nil,
         | 
| 367 | 
            +
             | 
| 368 | 
            +
                      status_code:      [
         | 
| 369 | 
            +
                        204
         | 
| 370 | 
            +
                      ]
         | 
| 371 | 
            +
                    }
         | 
| 372 | 
            +
             | 
| 373 | 
            +
                    delete_bucket_replication_input_validate input
         | 
| 374 | 
            +
                    Request.new input
         | 
| 375 | 
            +
                  end
         | 
| 376 | 
            +
             | 
| 377 | 
            +
                  private
         | 
| 378 | 
            +
             | 
| 379 | 
            +
                  def delete_bucket_replication_input_validate(input)
         | 
| 380 | 
            +
                    input.deep_stringify_keys!
         | 
| 381 | 
            +
                  end
         | 
| 382 | 
            +
             | 
| 383 | 
            +
                  public
         | 
| 384 | 
            +
             | 
| 181 385 | 
             
                  # delete_multiple_objects: Delete multiple objects from the bucket.
         | 
| 182 386 | 
             
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/delete_multiple.html
         | 
| 183 387 | 
             
                  def delete_multiple_objects(objects: [],
         | 
| @@ -201,12 +405,13 @@ module QingStor | |
| 201 405 | 
             
                      },
         | 
| 202 406 | 
             
                      request_elements: {
         | 
| 203 407 | 
             
                        'objects' => objects,
         | 
| 204 | 
            -
                        'quiet'   => quiet | 
| 408 | 
            +
                        'quiet'   => quiet
         | 
| 205 409 | 
             
                      },
         | 
| 206 410 | 
             
                      request_body:     nil,
         | 
| 411 | 
            +
             | 
| 207 412 | 
             
                      status_code:      [
         | 
| 208 | 
            -
                        200 | 
| 209 | 
            -
                      ] | 
| 413 | 
            +
                        200
         | 
| 414 | 
            +
                      ]
         | 
| 210 415 | 
             
                    }
         | 
| 211 416 |  | 
| 212 417 | 
             
                    delete_multiple_objects_input_validate input
         | 
| @@ -218,7 +423,7 @@ module QingStor | |
| 218 423 | 
             
                  def delete_multiple_objects_input_validate(input)
         | 
| 219 424 | 
             
                    input.deep_stringify_keys!
         | 
| 220 425 |  | 
| 221 | 
            -
                    unless !input['request_elements']['objects'].nil? && !input['request_elements']['objects']. | 
| 426 | 
            +
                    unless !input['request_elements']['objects'].nil? && !input['request_elements']['objects'].empty?
         | 
| 222 427 | 
             
                      raise ParameterRequiredError.new('objects', 'DeleteMultipleObjectsInput')
         | 
| 223 428 | 
             
                    end
         | 
| 224 429 |  | 
| @@ -249,9 +454,10 @@ module QingStor | |
| 249 454 | 
             
                      request_elements: {
         | 
| 250 455 | 
             
                      },
         | 
| 251 456 | 
             
                      request_body:     nil,
         | 
| 457 | 
            +
             | 
| 252 458 | 
             
                      status_code:      [
         | 
| 253 | 
            -
                        200 | 
| 254 | 
            -
                      ] | 
| 459 | 
            +
                        200
         | 
| 460 | 
            +
                      ]
         | 
| 255 461 | 
             
                    }
         | 
| 256 462 |  | 
| 257 463 | 
             
                    get_bucket_acl_input_validate input
         | 
| @@ -266,6 +472,57 @@ module QingStor | |
| 266 472 |  | 
| 267 473 | 
             
                  public
         | 
| 268 474 |  | 
| 475 | 
            +
                  # get_bucket_cname: Get bucket CNAME setting of the bucket.
         | 
| 476 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cname/get_cname.html
         | 
| 477 | 
            +
                  def get_cname(type: '')
         | 
| 478 | 
            +
                    request = get_cname_request type: type
         | 
| 479 | 
            +
                    request.send
         | 
| 480 | 
            +
                  end
         | 
| 481 | 
            +
             | 
| 482 | 
            +
                  def get_cname_request(type: '')
         | 
| 483 | 
            +
                    input = {
         | 
| 484 | 
            +
                      config:           config,
         | 
| 485 | 
            +
                      properties:       properties,
         | 
| 486 | 
            +
                      api_name:         'GET Bucket CNAME',
         | 
| 487 | 
            +
                      request_method:   'GET',
         | 
| 488 | 
            +
                      request_uri:      '/<bucket-name>?cname',
         | 
| 489 | 
            +
                      request_params:   {
         | 
| 490 | 
            +
                        'type' => type
         | 
| 491 | 
            +
                      },
         | 
| 492 | 
            +
                      request_headers:  {
         | 
| 493 | 
            +
                      },
         | 
| 494 | 
            +
                      request_elements: {
         | 
| 495 | 
            +
                      },
         | 
| 496 | 
            +
                      request_body:     nil,
         | 
| 497 | 
            +
             | 
| 498 | 
            +
                      status_code:      [
         | 
| 499 | 
            +
                        200
         | 
| 500 | 
            +
                      ]
         | 
| 501 | 
            +
                    }
         | 
| 502 | 
            +
             | 
| 503 | 
            +
                    get_bucket_cname_input_validate input
         | 
| 504 | 
            +
                    Request.new input
         | 
| 505 | 
            +
                  end
         | 
| 506 | 
            +
             | 
| 507 | 
            +
                  private
         | 
| 508 | 
            +
             | 
| 509 | 
            +
                  def get_bucket_cname_input_validate(input)
         | 
| 510 | 
            +
                    input.deep_stringify_keys!
         | 
| 511 | 
            +
             | 
| 512 | 
            +
                    if input['request_params']['type'] && !input['request_params']['type'].to_s.empty?
         | 
| 513 | 
            +
                      type_valid_values = %w[website normal]
         | 
| 514 | 
            +
                      unless type_valid_values.include? input['request_params']['type'].to_s
         | 
| 515 | 
            +
                        raise ParameterValueNotAllowedError.new(
         | 
| 516 | 
            +
                          'type',
         | 
| 517 | 
            +
                          input['request_params']['type'],
         | 
| 518 | 
            +
                          type_valid_values,
         | 
| 519 | 
            +
                        )
         | 
| 520 | 
            +
                      end
         | 
| 521 | 
            +
                    end
         | 
| 522 | 
            +
                  end
         | 
| 523 | 
            +
             | 
| 524 | 
            +
                  public
         | 
| 525 | 
            +
             | 
| 269 526 | 
             
                  # get_bucket_cors: Get CORS information of the bucket.
         | 
| 270 527 | 
             
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cors/get_cors.html
         | 
| 271 528 | 
             
                  def get_cors
         | 
| @@ -287,9 +544,10 @@ module QingStor | |
| 287 544 | 
             
                      request_elements: {
         | 
| 288 545 | 
             
                      },
         | 
| 289 546 | 
             
                      request_body:     nil,
         | 
| 547 | 
            +
             | 
| 290 548 | 
             
                      status_code:      [
         | 
| 291 | 
            -
                        200 | 
| 292 | 
            -
                      ] | 
| 549 | 
            +
                        200
         | 
| 550 | 
            +
                      ]
         | 
| 293 551 | 
             
                    }
         | 
| 294 552 |  | 
| 295 553 | 
             
                    get_bucket_cors_input_validate input
         | 
| @@ -325,9 +583,10 @@ module QingStor | |
| 325 583 | 
             
                      request_elements: {
         | 
| 326 584 | 
             
                      },
         | 
| 327 585 | 
             
                      request_body:     nil,
         | 
| 586 | 
            +
             | 
| 328 587 | 
             
                      status_code:      [
         | 
| 329 | 
            -
                        200 | 
| 330 | 
            -
                      ] | 
| 588 | 
            +
                        200
         | 
| 589 | 
            +
                      ]
         | 
| 331 590 | 
             
                    }
         | 
| 332 591 |  | 
| 333 592 | 
             
                    get_bucket_external_mirror_input_validate input
         | 
| @@ -342,6 +601,123 @@ module QingStor | |
| 342 601 |  | 
| 343 602 | 
             
                  public
         | 
| 344 603 |  | 
| 604 | 
            +
                  # get_bucket_lifecycle: Get Lifecycle information of the bucket.
         | 
| 605 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/lifecycle/get_lifecycle.html
         | 
| 606 | 
            +
                  def get_lifecycle
         | 
| 607 | 
            +
                    request = get_lifecycle_request
         | 
| 608 | 
            +
                    request.send
         | 
| 609 | 
            +
                  end
         | 
| 610 | 
            +
             | 
| 611 | 
            +
                  def get_lifecycle_request
         | 
| 612 | 
            +
                    input = {
         | 
| 613 | 
            +
                      config:           config,
         | 
| 614 | 
            +
                      properties:       properties,
         | 
| 615 | 
            +
                      api_name:         'GET Bucket Lifecycle',
         | 
| 616 | 
            +
                      request_method:   'GET',
         | 
| 617 | 
            +
                      request_uri:      '/<bucket-name>?lifecycle',
         | 
| 618 | 
            +
                      request_params:   {
         | 
| 619 | 
            +
                      },
         | 
| 620 | 
            +
                      request_headers:  {
         | 
| 621 | 
            +
                      },
         | 
| 622 | 
            +
                      request_elements: {
         | 
| 623 | 
            +
                      },
         | 
| 624 | 
            +
                      request_body:     nil,
         | 
| 625 | 
            +
             | 
| 626 | 
            +
                      status_code:      [
         | 
| 627 | 
            +
                        200
         | 
| 628 | 
            +
                      ]
         | 
| 629 | 
            +
                    }
         | 
| 630 | 
            +
             | 
| 631 | 
            +
                    get_bucket_lifecycle_input_validate input
         | 
| 632 | 
            +
                    Request.new input
         | 
| 633 | 
            +
                  end
         | 
| 634 | 
            +
             | 
| 635 | 
            +
                  private
         | 
| 636 | 
            +
             | 
| 637 | 
            +
                  def get_bucket_lifecycle_input_validate(input)
         | 
| 638 | 
            +
                    input.deep_stringify_keys!
         | 
| 639 | 
            +
                  end
         | 
| 640 | 
            +
             | 
| 641 | 
            +
                  public
         | 
| 642 | 
            +
             | 
| 643 | 
            +
                  # get_bucket_logging: Get bucket logging setting of the bucket.
         | 
| 644 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/logging/get_logging.html
         | 
| 645 | 
            +
                  def get_logging
         | 
| 646 | 
            +
                    request = get_logging_request
         | 
| 647 | 
            +
                    request.send
         | 
| 648 | 
            +
                  end
         | 
| 649 | 
            +
             | 
| 650 | 
            +
                  def get_logging_request
         | 
| 651 | 
            +
                    input = {
         | 
| 652 | 
            +
                      config:           config,
         | 
| 653 | 
            +
                      properties:       properties,
         | 
| 654 | 
            +
                      api_name:         'GET Bucket Logging',
         | 
| 655 | 
            +
                      request_method:   'GET',
         | 
| 656 | 
            +
                      request_uri:      '/<bucket-name>?logging',
         | 
| 657 | 
            +
                      request_params:   {
         | 
| 658 | 
            +
                      },
         | 
| 659 | 
            +
                      request_headers:  {
         | 
| 660 | 
            +
                      },
         | 
| 661 | 
            +
                      request_elements: {
         | 
| 662 | 
            +
                      },
         | 
| 663 | 
            +
                      request_body:     nil,
         | 
| 664 | 
            +
             | 
| 665 | 
            +
                      status_code:      [
         | 
| 666 | 
            +
                        200
         | 
| 667 | 
            +
                      ]
         | 
| 668 | 
            +
                    }
         | 
| 669 | 
            +
             | 
| 670 | 
            +
                    get_bucket_logging_input_validate input
         | 
| 671 | 
            +
                    Request.new input
         | 
| 672 | 
            +
                  end
         | 
| 673 | 
            +
             | 
| 674 | 
            +
                  private
         | 
| 675 | 
            +
             | 
| 676 | 
            +
                  def get_bucket_logging_input_validate(input)
         | 
| 677 | 
            +
                    input.deep_stringify_keys!
         | 
| 678 | 
            +
                  end
         | 
| 679 | 
            +
             | 
| 680 | 
            +
                  public
         | 
| 681 | 
            +
             | 
| 682 | 
            +
                  # get_bucket_notification: Get Notification information of the bucket.
         | 
| 683 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/notification/get_notification.html
         | 
| 684 | 
            +
                  def get_notification
         | 
| 685 | 
            +
                    request = get_notification_request
         | 
| 686 | 
            +
                    request.send
         | 
| 687 | 
            +
                  end
         | 
| 688 | 
            +
             | 
| 689 | 
            +
                  def get_notification_request
         | 
| 690 | 
            +
                    input = {
         | 
| 691 | 
            +
                      config:           config,
         | 
| 692 | 
            +
                      properties:       properties,
         | 
| 693 | 
            +
                      api_name:         'GET Bucket Notification',
         | 
| 694 | 
            +
                      request_method:   'GET',
         | 
| 695 | 
            +
                      request_uri:      '/<bucket-name>?notification',
         | 
| 696 | 
            +
                      request_params:   {
         | 
| 697 | 
            +
                      },
         | 
| 698 | 
            +
                      request_headers:  {
         | 
| 699 | 
            +
                      },
         | 
| 700 | 
            +
                      request_elements: {
         | 
| 701 | 
            +
                      },
         | 
| 702 | 
            +
                      request_body:     nil,
         | 
| 703 | 
            +
             | 
| 704 | 
            +
                      status_code:      [
         | 
| 705 | 
            +
                        200
         | 
| 706 | 
            +
                      ]
         | 
| 707 | 
            +
                    }
         | 
| 708 | 
            +
             | 
| 709 | 
            +
                    get_bucket_notification_input_validate input
         | 
| 710 | 
            +
                    Request.new input
         | 
| 711 | 
            +
                  end
         | 
| 712 | 
            +
             | 
| 713 | 
            +
                  private
         | 
| 714 | 
            +
             | 
| 715 | 
            +
                  def get_bucket_notification_input_validate(input)
         | 
| 716 | 
            +
                    input.deep_stringify_keys!
         | 
| 717 | 
            +
                  end
         | 
| 718 | 
            +
             | 
| 719 | 
            +
                  public
         | 
| 720 | 
            +
             | 
| 345 721 | 
             
                  # get_bucket_policy: Get policy information of the bucket.
         | 
| 346 722 | 
             
                  # Documentation URL: https://https://docs.qingcloud.com/qingstor/api/bucket/policy/get_policy.html
         | 
| 347 723 | 
             
                  def get_policy
         | 
| @@ -349,13 +725,52 @@ module QingStor | |
| 349 725 | 
             
                    request.send
         | 
| 350 726 | 
             
                  end
         | 
| 351 727 |  | 
| 352 | 
            -
                  def get_policy_request
         | 
| 728 | 
            +
                  def get_policy_request
         | 
| 729 | 
            +
                    input = {
         | 
| 730 | 
            +
                      config:           config,
         | 
| 731 | 
            +
                      properties:       properties,
         | 
| 732 | 
            +
                      api_name:         'GET Bucket Policy',
         | 
| 733 | 
            +
                      request_method:   'GET',
         | 
| 734 | 
            +
                      request_uri:      '/<bucket-name>?policy',
         | 
| 735 | 
            +
                      request_params:   {
         | 
| 736 | 
            +
                      },
         | 
| 737 | 
            +
                      request_headers:  {
         | 
| 738 | 
            +
                      },
         | 
| 739 | 
            +
                      request_elements: {
         | 
| 740 | 
            +
                      },
         | 
| 741 | 
            +
                      request_body:     nil,
         | 
| 742 | 
            +
             | 
| 743 | 
            +
                      status_code:      [
         | 
| 744 | 
            +
                        200
         | 
| 745 | 
            +
                      ]
         | 
| 746 | 
            +
                    }
         | 
| 747 | 
            +
             | 
| 748 | 
            +
                    get_bucket_policy_input_validate input
         | 
| 749 | 
            +
                    Request.new input
         | 
| 750 | 
            +
                  end
         | 
| 751 | 
            +
             | 
| 752 | 
            +
                  private
         | 
| 753 | 
            +
             | 
| 754 | 
            +
                  def get_bucket_policy_input_validate(input)
         | 
| 755 | 
            +
                    input.deep_stringify_keys!
         | 
| 756 | 
            +
                  end
         | 
| 757 | 
            +
             | 
| 758 | 
            +
                  public
         | 
| 759 | 
            +
             | 
| 760 | 
            +
                  # get_bucket_replication: Get Replication information of the bucket.
         | 
| 761 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/replication/get_replication.html
         | 
| 762 | 
            +
                  def get_replication
         | 
| 763 | 
            +
                    request = get_replication_request
         | 
| 764 | 
            +
                    request.send
         | 
| 765 | 
            +
                  end
         | 
| 766 | 
            +
             | 
| 767 | 
            +
                  def get_replication_request
         | 
| 353 768 | 
             
                    input = {
         | 
| 354 769 | 
             
                      config:           config,
         | 
| 355 770 | 
             
                      properties:       properties,
         | 
| 356 | 
            -
                      api_name:         'GET Bucket  | 
| 771 | 
            +
                      api_name:         'GET Bucket Replication',
         | 
| 357 772 | 
             
                      request_method:   'GET',
         | 
| 358 | 
            -
                      request_uri:      '/<bucket-name>? | 
| 773 | 
            +
                      request_uri:      '/<bucket-name>?replication',
         | 
| 359 774 | 
             
                      request_params:   {
         | 
| 360 775 | 
             
                      },
         | 
| 361 776 | 
             
                      request_headers:  {
         | 
| @@ -363,18 +778,19 @@ module QingStor | |
| 363 778 | 
             
                      request_elements: {
         | 
| 364 779 | 
             
                      },
         | 
| 365 780 | 
             
                      request_body:     nil,
         | 
| 781 | 
            +
             | 
| 366 782 | 
             
                      status_code:      [
         | 
| 367 | 
            -
                        200 | 
| 368 | 
            -
                      ] | 
| 783 | 
            +
                        200
         | 
| 784 | 
            +
                      ]
         | 
| 369 785 | 
             
                    }
         | 
| 370 786 |  | 
| 371 | 
            -
                     | 
| 787 | 
            +
                    get_bucket_replication_input_validate input
         | 
| 372 788 | 
             
                    Request.new input
         | 
| 373 789 | 
             
                  end
         | 
| 374 790 |  | 
| 375 791 | 
             
                  private
         | 
| 376 792 |  | 
| 377 | 
            -
                  def  | 
| 793 | 
            +
                  def get_bucket_replication_input_validate(input)
         | 
| 378 794 | 
             
                    input.deep_stringify_keys!
         | 
| 379 795 | 
             
                  end
         | 
| 380 796 |  | 
| @@ -401,9 +817,10 @@ module QingStor | |
| 401 817 | 
             
                      request_elements: {
         | 
| 402 818 | 
             
                      },
         | 
| 403 819 | 
             
                      request_body:     nil,
         | 
| 820 | 
            +
             | 
| 404 821 | 
             
                      status_code:      [
         | 
| 405 | 
            -
                        200 | 
| 406 | 
            -
                      ] | 
| 822 | 
            +
                        200
         | 
| 823 | 
            +
                      ]
         | 
| 407 824 | 
             
                    }
         | 
| 408 825 |  | 
| 409 826 | 
             
                    get_bucket_statistics_input_validate input
         | 
| @@ -439,9 +856,10 @@ module QingStor | |
| 439 856 | 
             
                      request_elements: {
         | 
| 440 857 | 
             
                      },
         | 
| 441 858 | 
             
                      request_body:     nil,
         | 
| 859 | 
            +
             | 
| 442 860 | 
             
                      status_code:      [
         | 
| 443 | 
            -
                        200 | 
| 444 | 
            -
                      ] | 
| 861 | 
            +
                        200
         | 
| 862 | 
            +
                      ]
         | 
| 445 863 | 
             
                    }
         | 
| 446 864 |  | 
| 447 865 | 
             
                    head_bucket_input_validate input
         | 
| @@ -459,20 +877,23 @@ module QingStor | |
| 459 877 | 
             
                  # list_multipart_uploads: List multipart uploads in the bucket.
         | 
| 460 878 | 
             
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/list_multipart_uploads.html
         | 
| 461 879 | 
             
                  def list_multipart_uploads(delimiter: '',
         | 
| 880 | 
            +
                                             key_marker: '',
         | 
| 462 881 | 
             
                                             limit: nil,
         | 
| 463 | 
            -
                                              | 
| 464 | 
            -
                                              | 
| 465 | 
            -
                    request = list_multipart_uploads_request delimiter: | 
| 466 | 
            -
                                                              | 
| 467 | 
            -
                                                              | 
| 468 | 
            -
                                                             prefix: | 
| 882 | 
            +
                                             prefix: '',
         | 
| 883 | 
            +
                                             upload_id_marker: '')
         | 
| 884 | 
            +
                    request = list_multipart_uploads_request delimiter:        delimiter,
         | 
| 885 | 
            +
                                                             key_marker:       key_marker,
         | 
| 886 | 
            +
                                                             limit:            limit,
         | 
| 887 | 
            +
                                                             prefix:           prefix,
         | 
| 888 | 
            +
                                                             upload_id_marker: upload_id_marker
         | 
| 469 889 | 
             
                    request.send
         | 
| 470 890 | 
             
                  end
         | 
| 471 891 |  | 
| 472 892 | 
             
                  def list_multipart_uploads_request(delimiter: '',
         | 
| 893 | 
            +
                                                     key_marker: '',
         | 
| 473 894 | 
             
                                                     limit: nil,
         | 
| 474 | 
            -
                                                      | 
| 475 | 
            -
                                                      | 
| 895 | 
            +
                                                     prefix: '',
         | 
| 896 | 
            +
                                                     upload_id_marker: '')
         | 
| 476 897 | 
             
                    input = {
         | 
| 477 898 | 
             
                      config:           config,
         | 
| 478 899 | 
             
                      properties:       properties,
         | 
| @@ -480,19 +901,21 @@ module QingStor | |
| 480 901 | 
             
                      request_method:   'GET',
         | 
| 481 902 | 
             
                      request_uri:      '/<bucket-name>?uploads',
         | 
| 482 903 | 
             
                      request_params:   {
         | 
| 483 | 
            -
                        'delimiter' | 
| 484 | 
            -
                        ' | 
| 485 | 
            -
                        ' | 
| 486 | 
            -
                        'prefix' | 
| 904 | 
            +
                        'delimiter'        => delimiter,
         | 
| 905 | 
            +
                        'key_marker'       => key_marker,
         | 
| 906 | 
            +
                        'limit'            => limit,
         | 
| 907 | 
            +
                        'prefix'           => prefix,
         | 
| 908 | 
            +
                        'upload_id_marker' => upload_id_marker
         | 
| 487 909 | 
             
                      },
         | 
| 488 910 | 
             
                      request_headers:  {
         | 
| 489 911 | 
             
                      },
         | 
| 490 912 | 
             
                      request_elements: {
         | 
| 491 913 | 
             
                      },
         | 
| 492 914 | 
             
                      request_body:     nil,
         | 
| 915 | 
            +
             | 
| 493 916 | 
             
                      status_code:      [
         | 
| 494 | 
            -
                        200 | 
| 495 | 
            -
                      ] | 
| 917 | 
            +
                        200
         | 
| 918 | 
            +
                      ]
         | 
| 496 919 | 
             
                    }
         | 
| 497 920 |  | 
| 498 921 | 
             
                    list_multipart_uploads_input_validate input
         | 
| @@ -534,16 +957,17 @@ module QingStor | |
| 534 957 | 
             
                        'delimiter' => delimiter,
         | 
| 535 958 | 
             
                        'limit'     => limit,
         | 
| 536 959 | 
             
                        'marker'    => marker,
         | 
| 537 | 
            -
                        'prefix'    => prefix | 
| 960 | 
            +
                        'prefix'    => prefix
         | 
| 538 961 | 
             
                      },
         | 
| 539 962 | 
             
                      request_headers:  {
         | 
| 540 963 | 
             
                      },
         | 
| 541 964 | 
             
                      request_elements: {
         | 
| 542 965 | 
             
                      },
         | 
| 543 966 | 
             
                      request_body:     nil,
         | 
| 967 | 
            +
             | 
| 544 968 | 
             
                      status_code:      [
         | 
| 545 | 
            -
                        200 | 
| 546 | 
            -
                      ] | 
| 969 | 
            +
                        200
         | 
| 970 | 
            +
                      ]
         | 
| 547 971 | 
             
                    }
         | 
| 548 972 |  | 
| 549 973 | 
             
                    list_objects_input_validate input
         | 
| @@ -579,9 +1003,10 @@ module QingStor | |
| 579 1003 | 
             
                      request_elements: {
         | 
| 580 1004 | 
             
                      },
         | 
| 581 1005 | 
             
                      request_body:     nil,
         | 
| 1006 | 
            +
             | 
| 582 1007 | 
             
                      status_code:      [
         | 
| 583 | 
            -
                        201 | 
| 584 | 
            -
                      ] | 
| 1008 | 
            +
                        201
         | 
| 1009 | 
            +
                      ]
         | 
| 585 1010 | 
             
                    }
         | 
| 586 1011 |  | 
| 587 1012 | 
             
                    put_bucket_input_validate input
         | 
| @@ -615,12 +1040,13 @@ module QingStor | |
| 615 1040 | 
             
                      request_headers:  {
         | 
| 616 1041 | 
             
                      },
         | 
| 617 1042 | 
             
                      request_elements: {
         | 
| 618 | 
            -
                        'acl' => acl | 
| 1043 | 
            +
                        'acl' => acl
         | 
| 619 1044 | 
             
                      },
         | 
| 620 1045 | 
             
                      request_body:     nil,
         | 
| 1046 | 
            +
             | 
| 621 1047 | 
             
                      status_code:      [
         | 
| 622 | 
            -
                        200 | 
| 623 | 
            -
                      ] | 
| 1048 | 
            +
                        200
         | 
| 1049 | 
            +
                      ]
         | 
| 624 1050 | 
             
                    }
         | 
| 625 1051 |  | 
| 626 1052 | 
             
                    put_bucket_acl_input_validate input
         | 
| @@ -632,7 +1058,7 @@ module QingStor | |
| 632 1058 | 
             
                  def put_bucket_acl_input_validate(input)
         | 
| 633 1059 | 
             
                    input.deep_stringify_keys!
         | 
| 634 1060 |  | 
| 635 | 
            -
                    unless !input['request_elements']['acl'].nil? && !input['request_elements']['acl']. | 
| 1061 | 
            +
                    unless !input['request_elements']['acl'].nil? && !input['request_elements']['acl'].empty?
         | 
| 636 1062 | 
             
                      raise ParameterRequiredError.new('acl', 'PutBucketACLInput')
         | 
| 637 1063 | 
             
                    end
         | 
| 638 1064 |  | 
| @@ -644,7 +1070,7 @@ module QingStor | |
| 644 1070 | 
             
                        end
         | 
| 645 1071 |  | 
| 646 1072 | 
             
                        if x['grantee']['type'] && !x['grantee']['type'].to_s.empty?
         | 
| 647 | 
            -
                          type_valid_values = %w | 
| 1073 | 
            +
                          type_valid_values = %w[user group]
         | 
| 648 1074 | 
             
                          unless type_valid_values.include? x['grantee']['type'].to_s
         | 
| 649 1075 | 
             
                            raise ParameterValueNotAllowedError.new(
         | 
| 650 1076 | 
             
                              'type',
         | 
| @@ -656,15 +1082,19 @@ module QingStor | |
| 656 1082 |  | 
| 657 1083 | 
             
                      end
         | 
| 658 1084 |  | 
| 659 | 
            -
                       | 
| 1085 | 
            +
                      if x['grantee'].nil?
         | 
| 1086 | 
            +
                        raise ParameterRequiredError.new('grantee', 'acl')
         | 
| 1087 | 
            +
                      end
         | 
| 660 1088 |  | 
| 661 1089 | 
             
                      unless !x['permission'].nil? && !x['permission'].to_s.empty?
         | 
| 662 1090 | 
             
                        raise ParameterRequiredError.new('permission', 'acl')
         | 
| 663 1091 | 
             
                      end
         | 
| 664 1092 |  | 
| 665 1093 | 
             
                      next unless x['permission'] && !x['permission'].to_s.empty?
         | 
| 666 | 
            -
             | 
| 1094 | 
            +
             | 
| 1095 | 
            +
                      permission_valid_values = %w[READ WRITE FULL_CONTROL]
         | 
| 667 1096 | 
             
                      next if permission_valid_values.include? x['permission'].to_s
         | 
| 1097 | 
            +
             | 
| 668 1098 | 
             
                      raise ParameterValueNotAllowedError.new(
         | 
| 669 1099 | 
             
                        'permission',
         | 
| 670 1100 | 
             
                        x['permission'],
         | 
| @@ -675,6 +1105,65 @@ module QingStor | |
| 675 1105 |  | 
| 676 1106 | 
             
                  public
         | 
| 677 1107 |  | 
| 1108 | 
            +
                  # put_bucket_cname: Set bucket CNAME of the bucket.
         | 
| 1109 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cname/put_cname.html
         | 
| 1110 | 
            +
                  def put_cname(domain: '',
         | 
| 1111 | 
            +
                                type: '')
         | 
| 1112 | 
            +
                    request = put_cname_request domain: domain,
         | 
| 1113 | 
            +
                                                type:   type
         | 
| 1114 | 
            +
                    request.send
         | 
| 1115 | 
            +
                  end
         | 
| 1116 | 
            +
             | 
| 1117 | 
            +
                  def put_cname_request(domain: '',
         | 
| 1118 | 
            +
                                        type: '')
         | 
| 1119 | 
            +
                    input = {
         | 
| 1120 | 
            +
                      config:           config,
         | 
| 1121 | 
            +
                      properties:       properties,
         | 
| 1122 | 
            +
                      api_name:         'PUT Bucket CNAME',
         | 
| 1123 | 
            +
                      request_method:   'PUT',
         | 
| 1124 | 
            +
                      request_uri:      '/<bucket-name>?cname',
         | 
| 1125 | 
            +
                      request_params:   {
         | 
| 1126 | 
            +
                      },
         | 
| 1127 | 
            +
                      request_headers:  {
         | 
| 1128 | 
            +
                      },
         | 
| 1129 | 
            +
                      request_elements: {
         | 
| 1130 | 
            +
                        'domain' => domain,
         | 
| 1131 | 
            +
                        'type'   => type
         | 
| 1132 | 
            +
                      },
         | 
| 1133 | 
            +
                      request_body:     nil,
         | 
| 1134 | 
            +
             | 
| 1135 | 
            +
                      status_code:      [
         | 
| 1136 | 
            +
                        200
         | 
| 1137 | 
            +
                      ]
         | 
| 1138 | 
            +
                    }
         | 
| 1139 | 
            +
             | 
| 1140 | 
            +
                    put_bucket_cname_input_validate input
         | 
| 1141 | 
            +
                    Request.new input
         | 
| 1142 | 
            +
                  end
         | 
| 1143 | 
            +
             | 
| 1144 | 
            +
                  private
         | 
| 1145 | 
            +
             | 
| 1146 | 
            +
                  def put_bucket_cname_input_validate(input)
         | 
| 1147 | 
            +
                    input.deep_stringify_keys!
         | 
| 1148 | 
            +
             | 
| 1149 | 
            +
                    unless !input['request_elements']['domain'].nil? && !input['request_elements']['domain'].to_s.empty?
         | 
| 1150 | 
            +
                      raise ParameterRequiredError.new('domain', 'PutBucketCNAMEInput')
         | 
| 1151 | 
            +
                    end
         | 
| 1152 | 
            +
             | 
| 1153 | 
            +
                    if input['request_elements']['type'] && !input['request_elements']['type'].to_s.empty?
         | 
| 1154 | 
            +
                      type_valid_values = %w[normal website]
         | 
| 1155 | 
            +
                      unless type_valid_values.include? input['request_elements']['type'].to_s
         | 
| 1156 | 
            +
                        raise ParameterValueNotAllowedError.new(
         | 
| 1157 | 
            +
                          'type',
         | 
| 1158 | 
            +
                          input['request_elements']['type'],
         | 
| 1159 | 
            +
                          type_valid_values,
         | 
| 1160 | 
            +
                        )
         | 
| 1161 | 
            +
                      end
         | 
| 1162 | 
            +
                    end
         | 
| 1163 | 
            +
                  end
         | 
| 1164 | 
            +
             | 
| 1165 | 
            +
                  public
         | 
| 1166 | 
            +
             | 
| 678 1167 | 
             
                  # put_bucket_cors: Set CORS information of the bucket.
         | 
| 679 1168 | 
             
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cors/put_cors.html
         | 
| 680 1169 | 
             
                  def put_cors(cors_rules: [])
         | 
| @@ -694,12 +1183,13 @@ module QingStor | |
| 694 1183 | 
             
                      request_headers:  {
         | 
| 695 1184 | 
             
                      },
         | 
| 696 1185 | 
             
                      request_elements: {
         | 
| 697 | 
            -
                        'cors_rules' => cors_rules | 
| 1186 | 
            +
                        'cors_rules' => cors_rules
         | 
| 698 1187 | 
             
                      },
         | 
| 699 1188 | 
             
                      request_body:     nil,
         | 
| 1189 | 
            +
             | 
| 700 1190 | 
             
                      status_code:      [
         | 
| 701 | 
            -
                        200 | 
| 702 | 
            -
                      ] | 
| 1191 | 
            +
                        200
         | 
| 1192 | 
            +
                      ]
         | 
| 703 1193 | 
             
                    }
         | 
| 704 1194 |  | 
| 705 1195 | 
             
                    put_bucket_cors_input_validate input
         | 
| @@ -711,12 +1201,12 @@ module QingStor | |
| 711 1201 | 
             
                  def put_bucket_cors_input_validate(input)
         | 
| 712 1202 | 
             
                    input.deep_stringify_keys!
         | 
| 713 1203 |  | 
| 714 | 
            -
                    unless !input['request_elements']['cors_rules'].nil? && !input['request_elements']['cors_rules']. | 
| 1204 | 
            +
                    unless !input['request_elements']['cors_rules'].nil? && !input['request_elements']['cors_rules'].empty?
         | 
| 715 1205 | 
             
                      raise ParameterRequiredError.new('cors_rules', 'PutBucketCORSInput')
         | 
| 716 1206 | 
             
                    end
         | 
| 717 1207 |  | 
| 718 1208 | 
             
                    input['request_elements']['cors_rules'].each do |x|
         | 
| 719 | 
            -
                      unless !x['allowed_methods'].nil? && !x['allowed_methods']. | 
| 1209 | 
            +
                      unless !x['allowed_methods'].nil? && !x['allowed_methods'].empty?
         | 
| 720 1210 | 
             
                        raise ParameterRequiredError.new('allowed_methods', 'cors_rule')
         | 
| 721 1211 | 
             
                      end
         | 
| 722 1212 |  | 
| @@ -747,12 +1237,13 @@ module QingStor | |
| 747 1237 | 
             
                      request_headers:  {
         | 
| 748 1238 | 
             
                      },
         | 
| 749 1239 | 
             
                      request_elements: {
         | 
| 750 | 
            -
                        'source_site' => source_site | 
| 1240 | 
            +
                        'source_site' => source_site
         | 
| 751 1241 | 
             
                      },
         | 
| 752 1242 | 
             
                      request_body:     nil,
         | 
| 1243 | 
            +
             | 
| 753 1244 | 
             
                      status_code:      [
         | 
| 754 | 
            -
                        200 | 
| 755 | 
            -
                      ] | 
| 1245 | 
            +
                        200
         | 
| 1246 | 
            +
                      ]
         | 
| 756 1247 | 
             
                    }
         | 
| 757 1248 |  | 
| 758 1249 | 
             
                    put_bucket_external_mirror_input_validate input
         | 
| @@ -771,6 +1262,230 @@ module QingStor | |
| 771 1262 |  | 
| 772 1263 | 
             
                  public
         | 
| 773 1264 |  | 
| 1265 | 
            +
                  # put_bucket_lifecycle: Set Lifecycle information of the bucket.
         | 
| 1266 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/lifecycle/put_lifecycle.html
         | 
| 1267 | 
            +
                  def put_lifecycle(rule: [])
         | 
| 1268 | 
            +
                    request = put_lifecycle_request rule: rule
         | 
| 1269 | 
            +
                    request.send
         | 
| 1270 | 
            +
                  end
         | 
| 1271 | 
            +
             | 
| 1272 | 
            +
                  def put_lifecycle_request(rule: [])
         | 
| 1273 | 
            +
                    input = {
         | 
| 1274 | 
            +
                      config:           config,
         | 
| 1275 | 
            +
                      properties:       properties,
         | 
| 1276 | 
            +
                      api_name:         'PUT Bucket Lifecycle',
         | 
| 1277 | 
            +
                      request_method:   'PUT',
         | 
| 1278 | 
            +
                      request_uri:      '/<bucket-name>?lifecycle',
         | 
| 1279 | 
            +
                      request_params:   {
         | 
| 1280 | 
            +
                      },
         | 
| 1281 | 
            +
                      request_headers:  {
         | 
| 1282 | 
            +
                      },
         | 
| 1283 | 
            +
                      request_elements: {
         | 
| 1284 | 
            +
                        'rule' => rule
         | 
| 1285 | 
            +
                      },
         | 
| 1286 | 
            +
                      request_body:     nil,
         | 
| 1287 | 
            +
             | 
| 1288 | 
            +
                      status_code:      [
         | 
| 1289 | 
            +
                        200
         | 
| 1290 | 
            +
                      ]
         | 
| 1291 | 
            +
                    }
         | 
| 1292 | 
            +
             | 
| 1293 | 
            +
                    put_bucket_lifecycle_input_validate input
         | 
| 1294 | 
            +
                    Request.new input
         | 
| 1295 | 
            +
                  end
         | 
| 1296 | 
            +
             | 
| 1297 | 
            +
                  private
         | 
| 1298 | 
            +
             | 
| 1299 | 
            +
                  def put_bucket_lifecycle_input_validate(input)
         | 
| 1300 | 
            +
                    input.deep_stringify_keys!
         | 
| 1301 | 
            +
             | 
| 1302 | 
            +
                    unless !input['request_elements']['rule'].nil? && !input['request_elements']['rule'].empty?
         | 
| 1303 | 
            +
                      raise ParameterRequiredError.new('rule', 'PutBucketLifecycleInput')
         | 
| 1304 | 
            +
                    end
         | 
| 1305 | 
            +
             | 
| 1306 | 
            +
                    input['request_elements']['rule'].each do |x|
         | 
| 1307 | 
            +
                      unless x['abort_incomplete_multipart_upload'].nil?
         | 
| 1308 | 
            +
             | 
| 1309 | 
            +
                        unless !x['abort_incomplete_multipart_upload']['days_after_initiation'].nil? && !x['abort_incomplete_multipart_upload']['days_after_initiation'].to_s.empty?
         | 
| 1310 | 
            +
                          raise ParameterRequiredError.new('days_after_initiation', 'abort_incomplete_multipart_upload')
         | 
| 1311 | 
            +
                        end
         | 
| 1312 | 
            +
             | 
| 1313 | 
            +
                      end
         | 
| 1314 | 
            +
             | 
| 1315 | 
            +
                      unless x['expiration'].nil?
         | 
| 1316 | 
            +
             | 
| 1317 | 
            +
                      end
         | 
| 1318 | 
            +
             | 
| 1319 | 
            +
                      unless x['filter'].nil?
         | 
| 1320 | 
            +
             | 
| 1321 | 
            +
                        unless !x['filter']['prefix'].nil? && !x['filter']['prefix'].to_s.empty?
         | 
| 1322 | 
            +
                          raise ParameterRequiredError.new('prefix', 'filter')
         | 
| 1323 | 
            +
                          end
         | 
| 1324 | 
            +
             | 
| 1325 | 
            +
                      end
         | 
| 1326 | 
            +
             | 
| 1327 | 
            +
                      if x['filter'].nil?
         | 
| 1328 | 
            +
                        raise ParameterRequiredError.new('filter', 'rule')
         | 
| 1329 | 
            +
                      end
         | 
| 1330 | 
            +
             | 
| 1331 | 
            +
                      unless !x['id'].nil? && !x['id'].to_s.empty?
         | 
| 1332 | 
            +
                        raise ParameterRequiredError.new('id', 'rule')
         | 
| 1333 | 
            +
                      end
         | 
| 1334 | 
            +
             | 
| 1335 | 
            +
                      unless !x['status'].nil? && !x['status'].to_s.empty?
         | 
| 1336 | 
            +
                        raise ParameterRequiredError.new('status', 'rule')
         | 
| 1337 | 
            +
                      end
         | 
| 1338 | 
            +
             | 
| 1339 | 
            +
                      if x['status'] && !x['status'].to_s.empty?
         | 
| 1340 | 
            +
                        status_valid_values = %w[enabled disabled]
         | 
| 1341 | 
            +
                        unless status_valid_values.include? x['status'].to_s
         | 
| 1342 | 
            +
                          raise ParameterValueNotAllowedError.new(
         | 
| 1343 | 
            +
                            'status',
         | 
| 1344 | 
            +
                            x['status'],
         | 
| 1345 | 
            +
                            status_valid_values,
         | 
| 1346 | 
            +
                          )
         | 
| 1347 | 
            +
                        end
         | 
| 1348 | 
            +
                      end
         | 
| 1349 | 
            +
             | 
| 1350 | 
            +
                      next if x['transition'].nil?
         | 
| 1351 | 
            +
             | 
| 1352 | 
            +
                      unless !x['transition']['storage_class'].nil? && !x['transition']['storage_class'].to_s.empty?
         | 
| 1353 | 
            +
                        raise ParameterRequiredError.new('storage_class', 'transition')
         | 
| 1354 | 
            +
                      end
         | 
| 1355 | 
            +
                    end
         | 
| 1356 | 
            +
                  end
         | 
| 1357 | 
            +
             | 
| 1358 | 
            +
                  public
         | 
| 1359 | 
            +
             | 
| 1360 | 
            +
                  # put_bucket_logging: Set bucket logging of the bucket.
         | 
| 1361 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/logging/put_logging.html
         | 
| 1362 | 
            +
                  def put_logging(target_bucket: '',
         | 
| 1363 | 
            +
                                  target_prefix: '')
         | 
| 1364 | 
            +
                    request = put_logging_request target_bucket: target_bucket,
         | 
| 1365 | 
            +
                                                  target_prefix: target_prefix
         | 
| 1366 | 
            +
                    request.send
         | 
| 1367 | 
            +
                  end
         | 
| 1368 | 
            +
             | 
| 1369 | 
            +
                  def put_logging_request(target_bucket: '',
         | 
| 1370 | 
            +
                                          target_prefix: '')
         | 
| 1371 | 
            +
                    input = {
         | 
| 1372 | 
            +
                      config:           config,
         | 
| 1373 | 
            +
                      properties:       properties,
         | 
| 1374 | 
            +
                      api_name:         'PUT Bucket Logging',
         | 
| 1375 | 
            +
                      request_method:   'PUT',
         | 
| 1376 | 
            +
                      request_uri:      '/<bucket-name>?logging',
         | 
| 1377 | 
            +
                      request_params:   {
         | 
| 1378 | 
            +
                      },
         | 
| 1379 | 
            +
                      request_headers:  {
         | 
| 1380 | 
            +
                      },
         | 
| 1381 | 
            +
                      request_elements: {
         | 
| 1382 | 
            +
                        'target_bucket' => target_bucket,
         | 
| 1383 | 
            +
                        'target_prefix' => target_prefix
         | 
| 1384 | 
            +
                      },
         | 
| 1385 | 
            +
                      request_body:     nil,
         | 
| 1386 | 
            +
             | 
| 1387 | 
            +
                      status_code:      [
         | 
| 1388 | 
            +
                        200
         | 
| 1389 | 
            +
                      ]
         | 
| 1390 | 
            +
                    }
         | 
| 1391 | 
            +
             | 
| 1392 | 
            +
                    put_bucket_logging_input_validate input
         | 
| 1393 | 
            +
                    Request.new input
         | 
| 1394 | 
            +
                  end
         | 
| 1395 | 
            +
             | 
| 1396 | 
            +
                  private
         | 
| 1397 | 
            +
             | 
| 1398 | 
            +
                  def put_bucket_logging_input_validate(input)
         | 
| 1399 | 
            +
                    input.deep_stringify_keys!
         | 
| 1400 | 
            +
             | 
| 1401 | 
            +
                    unless !input['request_elements']['target_bucket'].nil? && !input['request_elements']['target_bucket'].to_s.empty?
         | 
| 1402 | 
            +
                      raise ParameterRequiredError.new('target_bucket', 'PutBucketLoggingInput')
         | 
| 1403 | 
            +
                    end
         | 
| 1404 | 
            +
             | 
| 1405 | 
            +
                    unless !input['request_elements']['target_prefix'].nil? && !input['request_elements']['target_prefix'].to_s.empty?
         | 
| 1406 | 
            +
                      raise ParameterRequiredError.new('target_prefix', 'PutBucketLoggingInput')
         | 
| 1407 | 
            +
                    end
         | 
| 1408 | 
            +
                  end
         | 
| 1409 | 
            +
             | 
| 1410 | 
            +
                  public
         | 
| 1411 | 
            +
             | 
| 1412 | 
            +
                  # put_bucket_notification: Set Notification information of the bucket.
         | 
| 1413 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/notification/put_notification.html
         | 
| 1414 | 
            +
                  def put_notification(notifications: [])
         | 
| 1415 | 
            +
                    request = put_notification_request notifications: notifications
         | 
| 1416 | 
            +
                    request.send
         | 
| 1417 | 
            +
                  end
         | 
| 1418 | 
            +
             | 
| 1419 | 
            +
                  def put_notification_request(notifications: [])
         | 
| 1420 | 
            +
                    input = {
         | 
| 1421 | 
            +
                      config:           config,
         | 
| 1422 | 
            +
                      properties:       properties,
         | 
| 1423 | 
            +
                      api_name:         'PUT Bucket Notification',
         | 
| 1424 | 
            +
                      request_method:   'PUT',
         | 
| 1425 | 
            +
                      request_uri:      '/<bucket-name>?notification',
         | 
| 1426 | 
            +
                      request_params:   {
         | 
| 1427 | 
            +
                      },
         | 
| 1428 | 
            +
                      request_headers:  {
         | 
| 1429 | 
            +
                      },
         | 
| 1430 | 
            +
                      request_elements: {
         | 
| 1431 | 
            +
                        'notifications' => notifications
         | 
| 1432 | 
            +
                      },
         | 
| 1433 | 
            +
                      request_body:     nil,
         | 
| 1434 | 
            +
             | 
| 1435 | 
            +
                      status_code:      [
         | 
| 1436 | 
            +
                        200
         | 
| 1437 | 
            +
                      ]
         | 
| 1438 | 
            +
                    }
         | 
| 1439 | 
            +
             | 
| 1440 | 
            +
                    put_bucket_notification_input_validate input
         | 
| 1441 | 
            +
                    Request.new input
         | 
| 1442 | 
            +
                  end
         | 
| 1443 | 
            +
             | 
| 1444 | 
            +
                  private
         | 
| 1445 | 
            +
             | 
| 1446 | 
            +
                  def put_bucket_notification_input_validate(input)
         | 
| 1447 | 
            +
                    input.deep_stringify_keys!
         | 
| 1448 | 
            +
             | 
| 1449 | 
            +
                    unless !input['request_elements']['notifications'].nil? && !input['request_elements']['notifications'].empty?
         | 
| 1450 | 
            +
                      raise ParameterRequiredError.new('notifications', 'PutBucketNotificationInput')
         | 
| 1451 | 
            +
                    end
         | 
| 1452 | 
            +
             | 
| 1453 | 
            +
                    input['request_elements']['notifications'].each do |x|
         | 
| 1454 | 
            +
                      unless !x['cloudfunc'].nil? && !x['cloudfunc'].to_s.empty?
         | 
| 1455 | 
            +
                        raise ParameterRequiredError.new('cloudfunc', 'notification')
         | 
| 1456 | 
            +
                      end
         | 
| 1457 | 
            +
             | 
| 1458 | 
            +
                      if x['cloudfunc'] && !x['cloudfunc'].to_s.empty?
         | 
| 1459 | 
            +
                        cloudfunc_valid_values = %w[tupu-porn notifier image]
         | 
| 1460 | 
            +
                        unless cloudfunc_valid_values.include? x['cloudfunc'].to_s
         | 
| 1461 | 
            +
                          raise ParameterValueNotAllowedError.new(
         | 
| 1462 | 
            +
                            'cloudfunc',
         | 
| 1463 | 
            +
                            x['cloudfunc'],
         | 
| 1464 | 
            +
                            cloudfunc_valid_values,
         | 
| 1465 | 
            +
                          )
         | 
| 1466 | 
            +
                        end
         | 
| 1467 | 
            +
                      end
         | 
| 1468 | 
            +
             | 
| 1469 | 
            +
                      unless x['cloudfunc_args'].nil?
         | 
| 1470 | 
            +
             | 
| 1471 | 
            +
                        unless !x['cloudfunc_args']['action'].nil? && !x['cloudfunc_args']['action'].to_s.empty?
         | 
| 1472 | 
            +
                          raise ParameterRequiredError.new('action', 'cloudfunc_args')
         | 
| 1473 | 
            +
                          end
         | 
| 1474 | 
            +
             | 
| 1475 | 
            +
                      end
         | 
| 1476 | 
            +
             | 
| 1477 | 
            +
                      unless !x['event_types'].nil? && !x['event_types'].empty?
         | 
| 1478 | 
            +
                        raise ParameterRequiredError.new('event_types', 'notification')
         | 
| 1479 | 
            +
                      end
         | 
| 1480 | 
            +
             | 
| 1481 | 
            +
                      unless !x['id'].nil? && !x['id'].to_s.empty?
         | 
| 1482 | 
            +
                        raise ParameterRequiredError.new('id', 'notification')
         | 
| 1483 | 
            +
                      end
         | 
| 1484 | 
            +
                    end
         | 
| 1485 | 
            +
                  end
         | 
| 1486 | 
            +
             | 
| 1487 | 
            +
                  public
         | 
| 1488 | 
            +
             | 
| 774 1489 | 
             
                  # put_bucket_policy: Set policy information of the bucket.
         | 
| 775 1490 | 
             
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/policy/put_policy.html
         | 
| 776 1491 | 
             
                  def put_policy(statement: [])
         | 
| @@ -790,12 +1505,13 @@ module QingStor | |
| 790 1505 | 
             
                      request_headers:  {
         | 
| 791 1506 | 
             
                      },
         | 
| 792 1507 | 
             
                      request_elements: {
         | 
| 793 | 
            -
                        'statement' => statement | 
| 1508 | 
            +
                        'statement' => statement
         | 
| 794 1509 | 
             
                      },
         | 
| 795 1510 | 
             
                      request_body:     nil,
         | 
| 1511 | 
            +
             | 
| 796 1512 | 
             
                      status_code:      [
         | 
| 797 | 
            -
                        200 | 
| 798 | 
            -
                      ] | 
| 1513 | 
            +
                        200
         | 
| 1514 | 
            +
                      ]
         | 
| 799 1515 | 
             
                    }
         | 
| 800 1516 |  | 
| 801 1517 | 
             
                    put_bucket_policy_input_validate input
         | 
| @@ -807,12 +1523,12 @@ module QingStor | |
| 807 1523 | 
             
                  def put_bucket_policy_input_validate(input)
         | 
| 808 1524 | 
             
                    input.deep_stringify_keys!
         | 
| 809 1525 |  | 
| 810 | 
            -
                    unless !input['request_elements']['statement'].nil? && !input['request_elements']['statement']. | 
| 1526 | 
            +
                    unless !input['request_elements']['statement'].nil? && !input['request_elements']['statement'].empty?
         | 
| 811 1527 | 
             
                      raise ParameterRequiredError.new('statement', 'PutBucketPolicyInput')
         | 
| 812 1528 | 
             
                    end
         | 
| 813 1529 |  | 
| 814 1530 | 
             
                    input['request_elements']['statement'].each do |x|
         | 
| 815 | 
            -
                      unless !x['action'].nil? && !x['action']. | 
| 1531 | 
            +
                      unless !x['action'].nil? && !x['action'].empty?
         | 
| 816 1532 | 
             
                        raise ParameterRequiredError.new('action', 'statement')
         | 
| 817 1533 | 
             
                      end
         | 
| 818 1534 |  | 
| @@ -845,7 +1561,7 @@ module QingStor | |
| 845 1561 | 
             
                      end
         | 
| 846 1562 |  | 
| 847 1563 | 
             
                      if x['effect'] && !x['effect'].to_s.empty?
         | 
| 848 | 
            -
                        effect_valid_values = %w | 
| 1564 | 
            +
                        effect_valid_values = %w[allow deny]
         | 
| 849 1565 | 
             
                        unless effect_valid_values.include? x['effect'].to_s
         | 
| 850 1566 | 
             
                          raise ParameterValueNotAllowedError.new(
         | 
| 851 1567 | 
             
                            'effect',
         | 
| @@ -859,13 +1575,112 @@ module QingStor | |
| 859 1575 | 
             
                        raise ParameterRequiredError.new('id', 'statement')
         | 
| 860 1576 | 
             
                      end
         | 
| 861 1577 |  | 
| 862 | 
            -
                      unless !x[' | 
| 863 | 
            -
                        raise ParameterRequiredError.new(' | 
| 1578 | 
            +
                      unless !x['user'].nil? && !x['user'].empty?
         | 
| 1579 | 
            +
                        raise ParameterRequiredError.new('user', 'statement')
         | 
| 864 1580 | 
             
                      end
         | 
| 1581 | 
            +
                    end
         | 
| 1582 | 
            +
                  end
         | 
| 865 1583 |  | 
| 866 | 
            -
             | 
| 867 | 
            -
             | 
| 1584 | 
            +
                  public
         | 
| 1585 | 
            +
             | 
| 1586 | 
            +
                  # put_bucket_replication: Set Replication information of the bucket.
         | 
| 1587 | 
            +
                  # Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/replication/put_replication.html
         | 
| 1588 | 
            +
                  def put_replication(rules: [])
         | 
| 1589 | 
            +
                    request = put_replication_request rules: rules
         | 
| 1590 | 
            +
                    request.send
         | 
| 1591 | 
            +
                  end
         | 
| 1592 | 
            +
             | 
| 1593 | 
            +
                  def put_replication_request(rules: [])
         | 
| 1594 | 
            +
                    input = {
         | 
| 1595 | 
            +
                      config:           config,
         | 
| 1596 | 
            +
                      properties:       properties,
         | 
| 1597 | 
            +
                      api_name:         'PUT Bucket Replication',
         | 
| 1598 | 
            +
                      request_method:   'PUT',
         | 
| 1599 | 
            +
                      request_uri:      '/<bucket-name>?replication',
         | 
| 1600 | 
            +
                      request_params:   {
         | 
| 1601 | 
            +
                      },
         | 
| 1602 | 
            +
                      request_headers:  {
         | 
| 1603 | 
            +
                      },
         | 
| 1604 | 
            +
                      request_elements: {
         | 
| 1605 | 
            +
                        'rules' => rules
         | 
| 1606 | 
            +
                      },
         | 
| 1607 | 
            +
                      request_body:     nil,
         | 
| 1608 | 
            +
             | 
| 1609 | 
            +
                      status_code:      [
         | 
| 1610 | 
            +
                        200
         | 
| 1611 | 
            +
                      ]
         | 
| 1612 | 
            +
                    }
         | 
| 1613 | 
            +
             | 
| 1614 | 
            +
                    put_bucket_replication_input_validate input
         | 
| 1615 | 
            +
                    Request.new input
         | 
| 1616 | 
            +
                  end
         | 
| 1617 | 
            +
             | 
| 1618 | 
            +
                  private
         | 
| 1619 | 
            +
             | 
| 1620 | 
            +
                  def put_bucket_replication_input_validate(input)
         | 
| 1621 | 
            +
                    input.deep_stringify_keys!
         | 
| 1622 | 
            +
             | 
| 1623 | 
            +
                    unless !input['request_elements']['rules'].nil? && !input['request_elements']['rules'].empty?
         | 
| 1624 | 
            +
                      raise ParameterRequiredError.new('rules', 'PutBucketReplicationInput')
         | 
| 1625 | 
            +
                    end
         | 
| 1626 | 
            +
             | 
| 1627 | 
            +
                    input['request_elements']['rules'].each do |x|
         | 
| 1628 | 
            +
                      if x['delete_marker'] && !x['delete_marker'].to_s.empty?
         | 
| 1629 | 
            +
                        delete_marker_valid_values = %w[enabled disabled]
         | 
| 1630 | 
            +
                        unless delete_marker_valid_values.include? x['delete_marker'].to_s
         | 
| 1631 | 
            +
                          raise ParameterValueNotAllowedError.new(
         | 
| 1632 | 
            +
                            'delete_marker',
         | 
| 1633 | 
            +
                            x['delete_marker'],
         | 
| 1634 | 
            +
                            delete_marker_valid_values,
         | 
| 1635 | 
            +
                          )
         | 
| 1636 | 
            +
                        end
         | 
| 1637 | 
            +
                      end
         | 
| 1638 | 
            +
             | 
| 1639 | 
            +
                      unless x['destination'].nil?
         | 
| 1640 | 
            +
             | 
| 1641 | 
            +
                        unless !x['destination']['bucket'].nil? && !x['destination']['bucket'].to_s.empty?
         | 
| 1642 | 
            +
                          raise ParameterRequiredError.new('bucket', 'destination')
         | 
| 1643 | 
            +
                          end
         | 
| 1644 | 
            +
             | 
| 1645 | 
            +
                      end
         | 
| 1646 | 
            +
             | 
| 1647 | 
            +
                      if x['destination'].nil?
         | 
| 1648 | 
            +
                        raise ParameterRequiredError.new('destination', 'rules')
         | 
| 1649 | 
            +
                      end
         | 
| 1650 | 
            +
             | 
| 1651 | 
            +
                      unless x['filters'].nil?
         | 
| 1652 | 
            +
             | 
| 1653 | 
            +
                      end
         | 
| 1654 | 
            +
             | 
| 1655 | 
            +
                      if x['filters'].nil?
         | 
| 1656 | 
            +
                        raise ParameterRequiredError.new('filters', 'rules')
         | 
| 1657 | 
            +
                      end
         | 
| 1658 | 
            +
             | 
| 1659 | 
            +
                      unless !x['id'].nil? && !x['id'].to_s.empty?
         | 
| 1660 | 
            +
                        raise ParameterRequiredError.new('id', 'rules')
         | 
| 1661 | 
            +
                      end
         | 
| 1662 | 
            +
             | 
| 1663 | 
            +
                      if x['status'] && !x['status'].to_s.empty?
         | 
| 1664 | 
            +
                        status_valid_values = %w[enabled disabled]
         | 
| 1665 | 
            +
                        unless status_valid_values.include? x['status'].to_s
         | 
| 1666 | 
            +
                          raise ParameterValueNotAllowedError.new(
         | 
| 1667 | 
            +
                            'status',
         | 
| 1668 | 
            +
                            x['status'],
         | 
| 1669 | 
            +
                            status_valid_values,
         | 
| 1670 | 
            +
                          )
         | 
| 1671 | 
            +
                        end
         | 
| 868 1672 | 
             
                      end
         | 
| 1673 | 
            +
             | 
| 1674 | 
            +
                      next unless x['sync_marker'] && !x['sync_marker'].to_s.empty?
         | 
| 1675 | 
            +
             | 
| 1676 | 
            +
                      sync_marker_valid_values = %w[enabled disabled]
         | 
| 1677 | 
            +
                      next if sync_marker_valid_values.include? x['sync_marker'].to_s
         | 
| 1678 | 
            +
             | 
| 1679 | 
            +
                      raise ParameterValueNotAllowedError.new(
         | 
| 1680 | 
            +
                        'sync_marker',
         | 
| 1681 | 
            +
                        x['sync_marker'],
         | 
| 1682 | 
            +
                        sync_marker_valid_values,
         | 
| 1683 | 
            +
                      )
         | 
| 869 1684 | 
             
                    end
         | 
| 870 1685 | 
             
                  end
         | 
| 871 1686 |  |