Skip to content

Commit

Permalink
Merge pull request #306 from nolith/delete_object_url
Browse files Browse the repository at this point in the history
Expose Storage pre-signed object delete url
  • Loading branch information
icco authored Mar 2, 2018
2 parents 5a5ac9c + a13d3ee commit 8ade854
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/fog/storage/google_json.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class GoogleJSON < Fog::Service
request :copy_object
request :delete_bucket
request :delete_object
request :delete_object_url
request :get_bucket
request :get_bucket_acl
request :get_object
Expand Down
39 changes: 39 additions & 0 deletions lib/fog/storage/google_json/requests/delete_object_url.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
module Fog
module Storage
class GoogleJSON
class Real
# Get an expiring object url from Google Storage for deleting an object
# https://cloud.google.com/storage/docs/access-control#Signed-URLs
#
# @param bucket_name [String] Name of bucket containing object
# @param object_name [String] Name of object to get expiring url for
# @param expires [Time] Expiry time for this URL
#
# @return [String] Expiring object https URL
def delete_object_url(bucket_name, object_name, expires)
raise ArgumentError.new("bucket_name is required") unless bucket_name
raise ArgumentError.new("object_name is required") unless object_name
https_url({
:headers => {},
:host => @host,
:method => "DELETE",
:path => "#{bucket_name}/#{object_name}"
}, expires)
end
end

class Mock
def delete_object_url(bucket_name, object_name, expires)
raise ArgumentError.new("bucket_name is required") unless bucket_name
raise ArgumentError.new("object_name is required") unless object_name
https_url({
:headers => {},
:host => @host,
:method => "DELETE",
:path => "#{bucket_name}/#{object_name}"
}, expires)
end
end
end
end
end
1 change: 1 addition & 0 deletions lib/fog/storage/google_xml.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class GoogleXML < Fog::Service
request :copy_object
request :delete_bucket
request :delete_object
request :delete_object_url
request :get_bucket
request :get_bucket_acl
request :get_object
Expand Down
42 changes: 42 additions & 0 deletions lib/fog/storage/google_xml/requests/delete_object_url.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
module Fog
module Storage
class GoogleXML
class Real
# Get an expiring object url from Google Storage for deleting 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 delete_object_url(bucket_name, object_name, expires)
raise ArgumentError.new("bucket_name is required") unless bucket_name
raise ArgumentError.new("object_name is required") unless object_name
https_url({
:headers => {},
:host => @host,
:method => "DELETE",
:path => "#{bucket_name}/#{object_name}"
}, expires)
end
end

class Mock
def delete_object_url(bucket_name, object_name, expires)
raise ArgumentError.new("bucket_name is required") unless bucket_name
raise ArgumentError.new("object_name is required") unless object_name
https_url({
:headers => {},
:host => @host,
:method => "DELETE",
:path => "#{bucket_name}/#{object_name}"
}, expires)
end
end
end
end
end

0 comments on commit 8ade854

Please sign in to comment.