Sha256: a3a54bb1f17244fe36912f95727889b2eb408856bb1f55a031dc7332ec8ab63f

Contents?: true

Size: 1.9 KB

Versions: 39

Compression:

Stored size: 1.9 KB

Contents

module Fog
  module Storage
    class AWS
      class Real

        # Restore an object from Glacier to its original S3 path
        #
        # @param bucket_name [String] Name of bucket containing object
        # @param object_name [String] Name of object to restore
        # @option days [Integer] Number of days to restore object for. Defaults to 100000 (a very long time)
        #
        # @return [Excon::Response] response:
        #   * status [Integer] 200 (OK) Object is previously restored
        #   * status [Integer] 202 (Accepted) Object is not previously restored
        #   * status [Integer] 409 (Conflict) Restore is already in progress
        #
        # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPOSTrestore.html
        #
        def post_object_restore(bucket_name, object_name, days = 100000)
          raise ArgumentError.new('bucket_name is required') unless bucket_name
          raise ArgumentError.new('object_name is required') unless object_name

          data = '<RestoreRequest xmlns="http://s3.amazonaws.com/doc/2006-3-01"><Days>' + days.to_s + '</Days></RestoreRequest>'

          headers = {}
          headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
          headers['Content-Type'] = 'application/xml'
          headers['Date'] = Fog::Time.now.to_date_header

          request({
            :headers  => headers,
            :bucket_name => bucket_name,
            :expects  => [200, 202, 409],
            :body     => data,
            :method   => 'POST',
            :query    => {'restore' => nil},
            :path     => CGI.escape(object_name)
          })
        end

      end

      class Mock # :nodoc:all

        def post_object_restore(bucket_name, object_name, days = 100000)
          response = get_object(bucket_name, object_name)
          response.body = nil
          response
        end

      end
    end
  end
end

Version data entries

39 entries across 39 versions & 2 rubygems

Version Path
fog-1.22.0 lib/fog/aws/requests/storage/post_object_restore.rb
fog-1.21.0 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.20.0.20140305101839 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.20.0.20140305101305 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.19.0.20140212012611 lib/fog/aws/requests/storage/post_object_restore.rb
fog-1.20.0 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.19.0.20140110004459 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.19.0.20140110003812 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.19.0.20140109202555 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.19.0.20140107192102 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.19.0.20140107142106 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.19.0.20131219203941 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.18.0.20131219193542 lib/fog/aws/requests/storage/post_object_restore.rb
fog-1.19.0 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.18.0.20131219033443 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.18.0.20131219032002 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.18.0.20131219030716 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.18.0.20131219022322 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.18.0.20131218202447 lib/fog/aws/requests/storage/post_object_restore.rb
fog-maestrodev-1.18.0.20131209091424 lib/fog/aws/requests/storage/post_object_restore.rb