1 # Copyright 2010 Google Inc.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
16 require "addressable/template"
18 module Google #:nodoc:
19 class APIClient #:nodoc:
21 # A discovery document handler.
24 # The default discovery configuration values. These may be overrided
25 # simply by passing in the same key to the constructor.
30 # A set of default configuration values specific to each service. These
31 # may be overrided simply by passing in the same key to the constructor.
36 # Creates a new API discovery handler.
38 # @param [Hash] options
39 # <code>:service</code>::
40 # The name of the service.
41 # <code>:service_version</code>::
42 # The version of the service.
43 # <code>:discovery_uri</code>::
44 # The URI of the discovery document.
46 # @return [Google::APIClient::Discovery] The API discovery handler.
47 def initialize(options={})
48 if options[:service] && SERVICE_DEFAULTS[options[:service]]
49 @options = DEFAULTS.merge(SERVICE_DEFAULTS[options[:service]])
51 @options = DEFAULTS.clone
53 @options.merge!(options)
54 if @options[:service] && !@options[:discovery_uri]
55 service_id = @options[:service]
56 service_version = @options[:service_version] || "1.0"
57 @options[:discovery_uri] =
58 "http://www.googleapis.com/discovery/0.1/describe" +
59 "?api=#{service_id}&apiVersion=#{service_version}"
61 unless @options[:discovery_uri]
63 "Missing required configuration value, :discovery_uri."
65 # Handle any remaining configuration here
69 # Returns the configuration of the handler. Configuration options that
70 # are not recognized by the handler are ignored.
72 # @return [Hash] The configuration options.