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:
22 # The default discovery configuration values. These may be overrided
23 # simply by passing in the same key to the constructor.
28 # A set of default configuration values specific to each service. These
29 # may be overrided simply by passing in the same key to the constructor.
34 # Creates a new API discovery handler.
36 # @param [Hash] options
37 # <code>:service</code>::
38 # The name of the service.
39 # <code>:service_version</code>::
40 # The version of the service.
41 # <code>:discovery_uri</code>::
42 # The URI of the discovery document.
44 # @return [Google::APIClient::Discovery] The API discovery handler.
45 def initialize(options={})
46 if options[:service] && SERVICE_DEFAULTS[options[:service]]
47 @options = DEFAULTS.merge(SERVICE_DEFAULTS[options[:service]])
49 @options = DEFAULTS.clone
51 @options.merge!(options)
52 if @options[:service] && !@options[:discovery_uri]
53 service_id = @options[:service]
54 service_version = @options[:service_version] || "1.0"
55 @options[:discovery_uri] =
56 "http://www.googleapis.com/discovery/0.1/describe" +
57 "?api=#{service_id}&apiVersion=#{service_version}"
59 unless @options[:discovery_uri]
61 "Missing required configuration value, :discovery_uri."
63 # Handle any remaining configuration here
67 # Returns the configuration of the handler. Configuration options that
68 # are not recognized by the handler are ignored.
70 # @return [Hash] The configuration options.