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