From a13d3eec756b461cd931a6d71899070abaa04594 Mon Sep 17 00:00:00 2001 From: Alessio Caiazza Date: Wed, 21 Feb 2018 15:28:38 +0100 Subject: [PATCH] Expose Storage pre-signed object delete url --- lib/fog/storage/google_json.rb | 1 + .../google_json/requests/delete_object_url.rb | 39 +++++++++++++++++ lib/fog/storage/google_xml.rb | 1 + .../google_xml/requests/delete_object_url.rb | 42 +++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 lib/fog/storage/google_json/requests/delete_object_url.rb create mode 100644 lib/fog/storage/google_xml/requests/delete_object_url.rb diff --git a/lib/fog/storage/google_json.rb b/lib/fog/storage/google_json.rb index 6a784ae212..691a5d560d 100644 --- a/lib/fog/storage/google_json.rb +++ b/lib/fog/storage/google_json.rb @@ -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 diff --git a/lib/fog/storage/google_json/requests/delete_object_url.rb b/lib/fog/storage/google_json/requests/delete_object_url.rb new file mode 100644 index 0000000000..f3d19c8107 --- /dev/null +++ b/lib/fog/storage/google_json/requests/delete_object_url.rb @@ -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 diff --git a/lib/fog/storage/google_xml.rb b/lib/fog/storage/google_xml.rb index 780180e6df..7805410348 100644 --- a/lib/fog/storage/google_xml.rb +++ b/lib/fog/storage/google_xml.rb @@ -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 diff --git a/lib/fog/storage/google_xml/requests/delete_object_url.rb b/lib/fog/storage/google_xml/requests/delete_object_url.rb new file mode 100644 index 0000000000..567be17980 --- /dev/null +++ b/lib/fog/storage/google_xml/requests/delete_object_url.rb @@ -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