diff --git a/lib/fog/aws/models/s3/file.rb b/lib/fog/aws/models/s3/file.rb index 457deb08e..1c627ec5e 100644 --- a/lib/fog/aws/models/s3/file.rb +++ b/lib/fog/aws/models/s3/file.rb @@ -66,6 +66,11 @@ module Fog true end + def url(expires) + requires :key + collection.get_url(key, expires) + end + private def directory=(new_directory) diff --git a/spec/aws/models/s3/file_spec.rb b/spec/aws/models/s3/file_spec.rb index e3aad929b..46492c19f 100644 --- a/spec/aws/models/s3/file_spec.rb +++ b/spec/aws/models/s3/file_spec.rb @@ -103,4 +103,19 @@ describe 'Fog::AWS::S3::File' do end + describe "#url" do + + it "should return a signed expiring url" do + data = File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r') + file = @directory.files.create(:key => 'fogfilename', :body => data) + url = file.url(Time.now + 60 * 10) + url.should include("fogfilename", "Expires") + unless Fog.mocking? + open(url).read.should == File.open(File.dirname(__FILE__) + '/../../../lorem.txt', 'r').read + end + file.destroy + end + + end + end