diff --git a/lib/fog/aws/requests/s3/put_object_url.rb b/lib/fog/aws/requests/s3/put_object_url.rb new file mode 100644 index 000000000..b274855d8 --- /dev/null +++ b/lib/fog/aws/requests/s3/put_object_url.rb @@ -0,0 +1,54 @@ +module Fog + module AWS + module S3 + class Real + + # Get an expiring object url from S3 for putting an object + # + # ==== Parameters + # * bucket_name<~String> - Name of bucket containing object + # * object_name<~String> - Name of object to get expiring url for + # * expires<~Time> - An expiry time for this url + # + # ==== Returns + # * response<~Excon::Response>: + # * body<~String> - url for object + # + def put_object_url(bucket_name, object_name, expires) + unless bucket_name + raise ArgumentError.new('bucket_name is required') + end + unless object_name + raise ArgumentError.new('object_name is required') + end + url({ + :headers => {}, + :host => "#{bucket_name}.#{@host}", + :method => 'PUT', + :path => CGI.escape(object_name) + }, expires) + end + + end + + class Mock + + def put_object_url(bucket_name, object_name, expires) + unless bucket_name + raise ArgumentError.new('bucket_name is required') + end + unless object_name + raise ArgumentError.new('object_name is required') + end + url({ + :headers => {}, + :host => "#{bucket_name}.#{@host}", + :method => 'PUT', + :path => CGI.escape(object_name) + }, expires) + end + + end + end + end +end diff --git a/lib/fog/aws/s3.rb b/lib/fog/aws/s3.rb index cb0b2a745..4e36a07ca 100644 --- a/lib/fog/aws/s3.rb +++ b/lib/fog/aws/s3.rb @@ -39,6 +39,7 @@ module Fog require 'fog/aws/requests/s3/put_bucket_logging' require 'fog/aws/requests/s3/put_bucket_versioning' require 'fog/aws/requests/s3/put_object' + require 'fog/aws/requests/s3/put_object_url' require 'fog/aws/requests/s3/put_request_payment' @required = true end