lib/fog/google/storage.rb in fog-1.22.0 vs lib/fog/google/storage.rb in fog-1.22.1
- old
+ new
@@ -1,13 +1,12 @@
require 'fog/google/core'
module Fog
module Storage
class Google < Fog::Service
-
requires :google_storage_access_key_id, :google_storage_secret_access_key
- recognizes :host, :port, :scheme, :persistent
+ recognizes :host, :port, :scheme, :persistent, :path_style
model_path 'fog/google/models/storage'
collection :directories
model :directory
collection :files
@@ -32,12 +31,10 @@
request :put_object
request :put_object_acl
request :put_object_url
module Utils
-
-
def http_url(params, expires)
"http://" << host_path_query(params, expires)
end
def https_url(params, expires)
@@ -61,23 +58,24 @@
"#{params[:host]}/#{params[:path]}?#{query.join('&')}"
end
def request_params(params)
subdomain = params[:host].split(".#{@host}").first
- unless subdomain =~ /^(?!goog)(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
+ if @path_style or subdomain !~ /^(?!goog)(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
if subdomain =~ /_/
# https://github.com/fog/fog/pull/1258#issuecomment-10248620.
Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not DNS compliant (only characters a through z, digits 0 through 9, and the hyphen).")
else
# - Bucket names must contain only lowercase letters, numbers, dashes (-), underscores (_), and dots (.). Names containing dots require verification.
# - Bucket names must start and end with a number or letter.
# - Bucket names must contain 3 to 63 characters. Names containing dots can contain up to 222 characters, but each dot-separated component can be no longer than 63 characters.
# - Bucket names cannot be represented as an IP address in dotted-decimal notation (for example, 192.168.5.4).
# - Bucket names cannot begin with the "goog" prefix.
# - Also, for DNS compliance, you should not have a period adjacent to another period or dash. For example, ".." or "-." or ".-" are not acceptable.
- Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not a valid dns name. See: https://developers.google.com/storage/docs/bucketnaming")
+ Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not a valid dns name. See: https://developers.google.com/storage/docs/bucketnaming") unless @path_style
end
+
params[:host] = params[:host].split("#{subdomain}.")[-1]
if params[:path]
params[:path] = "#{subdomain}/#{params[:path]}"
else
params[:path] = "#{subdomain}"
@@ -91,11 +89,10 @@
params[:scheme] ||= @scheme
params[:port] ||= @port
params
end
-
end
class Mock
include Utils
@@ -189,14 +186,12 @@
end
def signature(params)
"foo"
end
-
end
-
class Real
include Utils
# Initialize connection to Google Storage
#
@@ -224,9 +219,10 @@
@hmac = Fog::HMAC.new('sha1', @google_storage_secret_access_key)
@host = options[:host] || 'storage.googleapis.com'
@persistent = options.fetch(:persistent, true)
@port = options[:port] || 443
@scheme = options[:scheme] || 'https'
+ @path_style = options[:path_style] || false
end
def reload
@connection.reset if @connection
end