Sha256: 4c7898e95c5e801f73fd35119a123d45f327b26b2ef358462871c09f4b4541cd

Contents?: true

Size: 1.72 KB

Versions: 26

Compression:

Stored size: 1.72 KB

Contents

module Fog
  module Storage
    class AWS
      class Real

        # Change lifecycle configuration for an S3 bucket
        #
        # ==== Parameters
        # * bucket_name<~String> - name of bucket to set lifecycle configuration for
        # * lifecycle<~Hash>:
        #   * 'Rules'<~Array> - object expire rules
        #      * 'ID'<~String>       - Unique identifier for the rule
        #      * 'Prefix'<~String>   - Prefix identifying one or more objects to which the rule applies
        #      * 'Enabled'<~Boolean> - if rule is currently being applied
        #      * 'Days'<~Integer>    - lifetime, in days, of the objects that are subject to the rule
        # ==== See Also
        # http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html

        def put_bucket_lifecycle(bucket_name, lifecycle)
          builder = Nokogiri::XML::Builder.new do
            LifecycleConfiguration {
              lifecycle['Rules'].each do |rule|
                Rule {
                  ID rule['ID']
                  Prefix rule['Prefix']
                  Status rule['Enabled'] ? 'Enabled' : 'Disabled'
                  Expiration { Days rule['Days'] }
                }
              end
            }
          end

          body = builder.to_xml

          request({
                    :body     => body,
                    :expects  => 200,
                    :headers  => {'Content-MD5' => Base64.encode64(Digest::MD5.digest(body)).chomp!,
                      'Content-Type' => 'application/xml'},
                    :host     => "#{bucket_name}.#{@host}",
                    :method   => 'PUT',
                    :query    => {'lifecycle' => nil}
                  })
        end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 12 rubygems

Version Path
fog-nirvanix-1.8.2 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-nirvanix-1.8.1 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-parser-fix-1.6.1 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-test-again-1.6.0 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-parser-fix-1.6.0 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-maestrodev-1.8.0.20130114204828 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-maestrodev-1.8.0.20130111070250 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-maestrodev-1.8.0.20130109172219 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
ey-vendored-backup-3.0.27 vendor/gems/fog/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-sgonyea-1.8.1 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-1.8.0 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-maestrodev-1.7.0.20121114190951 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-1.7.0 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-1.6.0 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-1.5.0 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
rackspace-fog-1.4.2 lib/rackspace-fog/aws/requests/storage/put_bucket_lifecycle.rb
fog-1.4.0 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
brightbox-cli-0.18.1 lib/brightbox-cli/vendor/fog/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
michiels-fog-1.3.1 lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
ftl-0.2.0 vendor/bundle/gems/fog-1.3.1/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb