Merge branch 'master' of github.com:sporkmonger/google-api-ruby-client

This commit is contained in:
Bob Aman 2012-02-27 11:29:16 +01:00
commit af61568cbe
4 changed files with 29 additions and 31 deletions

View File

@ -47,8 +47,8 @@ module Google
# <li><code>:oauth_1</code></li> # <li><code>:oauth_1</code></li>
# <li><code>:oauth_2</code></li> # <li><code>:oauth_2</code></li>
# </ul> # </ul>
# @option options [String] :host ("www.googleapis.com") # @option options [String] :baseURI ("https://www.googleapis.com/discovery/v1")
# The API hostname used by the client. This rarely needs to be changed. # The base API URI used by the client. This rarely needs to be changed.
# @option options [String] :application_name # @option options [String] :application_name
# The name of the application using the client. # The name of the application using the client.
# @option options [String] :application_version # @option options [String] :application_version
@ -63,8 +63,9 @@ module Google
accu[key.to_s] = value accu[key.to_s] = value
accu accu
end end
# Almost all API usage will have a host of 'www.googleapis.com'. # Almost all API usage will have this base URI
self.host = options["host"] || 'www.googleapis.com' self.baseURI = options["baseURI"] || "https://www.googleapis.com/discovery/v1"
# Most developers will want to leave this value alone and use the # Most developers will want to leave this value alone and use the
# application_name option. # application_name option.
application_string = ( application_string = (
@ -80,7 +81,7 @@ module Google
).strip ).strip
# The writer method understands a few Symbols and will generate useful # The writer method understands a few Symbols and will generate useful
# default authentication mechanisms. # default authentication mechanisms.
self.authorization = options["authorization"] || :oauth_2 self.authorization = options.key?("authorization") ? options["authorization"] : :oauth_2
self.key = options["key"] self.key = options["key"]
self.user_ip = options["user_ip"] self.user_ip = options["user_ip"]
@discovery_uris = {} @discovery_uris = {}
@ -165,7 +166,7 @@ module Google
# #
# @return [String] # @return [String]
# The API hostname. Should almost always be 'www.googleapis.com'. # The API hostname. Should almost always be 'www.googleapis.com'.
attr_accessor :host attr_accessor :baseURI
## ##
# The user agent used by the client. # The user agent used by the client.
@ -173,16 +174,17 @@ module Google
# @return [String] # @return [String]
# The user agent string used in the User-Agent header. # The user agent string used in the User-Agent header.
attr_accessor :user_agent attr_accessor :user_agent
def relative_uri(path, expand={})
Addressable::Template.new(baseURI+path).expand(expand)
end
## ##
# Returns the URI for the directory document. # Returns the URI for the directory document.
# #
# @return [Addressable::URI] The URI of the directory document. # @return [Addressable::URI] The URI of the directory document.
def directory_uri def directory_uri
template = Addressable::Template.new( relative_uri('/apis')
"https://{host}/discovery/v1/apis"
)
return template.expand({"host" => self.host})
end end
## ##
@ -208,15 +210,7 @@ module Google
api = api.to_s api = api.to_s
version = version || 'v1' version = version || 'v1'
return @discovery_uris["#{api}:#{version}"] ||= (begin return @discovery_uris["#{api}:#{version}"] ||= (begin
template = Addressable::Template.new( relative_uri("/apis/{api}/{version}/rest", 'api' => api, 'version' => version)
"https://{host}/discovery/v1/apis/" +
"{api}/{version}/rest"
)
template.expand({
"host" => self.host,
"api" => api,
"version" => version
})
end) end)
end end
@ -596,7 +590,7 @@ module Google
unless headers.kind_of?(Enumerable) unless headers.kind_of?(Enumerable)
# We need to use some Enumerable methods, relying on the presence of # We need to use some Enumerable methods, relying on the presence of
# the #each method. # the #each method.
class <<headers class << headers
include Enumerable include Enumerable
end end
end end

View File

@ -43,7 +43,7 @@ module Google
def initialize(document_base, discovery_document) def initialize(document_base, discovery_document)
@document_base = Addressable::URI.parse(document_base) @document_base = Addressable::URI.parse(document_base)
@discovery_document = discovery_document @discovery_document = discovery_document
metaclass = (class <<self; self; end) metaclass = (class << self; self; end)
self.discovered_resources.each do |resource| self.discovered_resources.each do |resource|
method_name = Google::INFLECTOR.underscore(resource.name).to_sym method_name = Google::INFLECTOR.underscore(resource.name).to_sym
if !self.respond_to?(method_name) if !self.respond_to?(method_name)

View File

@ -47,7 +47,7 @@ module Google
# and excess object creation, but this hopefully shouldn't be an # and excess object creation, but this hopefully shouldn't be an
# issue since it should only be called only once per schema per # issue since it should only be called only once per schema per
# process. # process.
if data.kind_of?(Hash) && data['$ref'] if data.kind_of?(Hash) && data['$ref'].is_a?(String)
reference = data['$ref'] reference = data['$ref']
reference = '#' + reference if reference[0..0] != '#' reference = '#' + reference if reference[0..0] != '#'
data.merge({ data.merge({

View File

@ -16,15 +16,19 @@
module Google module Google
class APIClient class APIClient
module ENV module ENV
OS_VERSION = if RUBY_PLATFORM =~ /mswin|win32|mingw|bccwin|cygwin/ OS_VERSION = begin
# TODO(bobaman) if RUBY_PLATFORM =~ /mswin|win32|mingw|bccwin|cygwin/
# Confirm that all of these Windows environments actually have access # TODO(bobaman)
# to the `ver` command. # Confirm that all of these Windows environments actually have access
`ver`.sub(/\s*\[Version\s*/, '/').sub(']', '').strip # to the `ver` command.
elsif RUBY_PLATFORM =~ /darwin/i `ver`.sub(/\s*\[Version\s*/, '/').sub(']', '').strip
"Mac OS X/#{`sw_vers -productVersion`}" elsif RUBY_PLATFORM =~ /darwin/i
else "Mac OS X/#{`sw_vers -productVersion`}"
`uname -sr`.sub(' ', '/') else
`uname -sr`.sub(' ', '/')
end
rescue Exception
RUBY_PLATFORM
end end
end end
end end