google-ads-common 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ 0.5.4:
2
+ - Improved support for OAuth.
3
+ - Cleanups and better wsdl compatibility.
4
+
1
5
  0.5.3:
2
6
  - Ruby 1.9 compatibility hotfix.
3
7
 
@@ -26,7 +26,7 @@ module AdsCommon
26
26
  # Contains helper methods for loading and managing the available services.
27
27
  # This module is meant to be imported into API-specific modules.
28
28
  module ApiConfig
29
- ADS_COMMON_VERSION = '0.5.3'
29
+ ADS_COMMON_VERSION = '0.5.4'
30
30
 
31
31
  # Get the available API versions.
32
32
  #
@@ -98,13 +98,18 @@ module AdsCommon
98
98
  environment_config.keys
99
99
  end
100
100
 
101
+ # Get the API name.
102
+ def api_name
103
+ raise NotImplementedError, 'api_name not overriden.'
104
+ end
105
+
101
106
  # Get the default environment.
102
107
  #
103
108
  # Returns:
104
109
  # Default environment (as a string)
105
110
  #
106
111
  def default_environment
107
- nil
112
+ raise NotImplementedError, 'default_environment not overriden.'
108
113
  end
109
114
 
110
115
  # Get the default filename for the config file.
@@ -160,29 +165,37 @@ module AdsCommon
160
165
  return auth_server_url
161
166
  end
162
167
 
163
- # Perform the loading of the necessary source files for a version
168
+ # Perform the loading of the necessary source files for a version.
164
169
  #
165
170
  # Args:
166
- # - version: the API version (as an integer)
171
+ # - version: the API version (as a symbol)
172
+ # - service: service name (as a symbol)
173
+ #
174
+ # Returns:
175
+ # The filename that was loaded.
167
176
  #
168
177
  def do_require(version, service)
169
- eval("require '#{api_path}/#{version}/#{service}Wrapper.rb'")
178
+ filename = "%s/%s/%s" %
179
+ [api_name.to_s.snakecase, version.to_s, service.to_s.snakecase]
180
+ require filename
181
+ return filename
170
182
  end
171
183
 
172
- # Returns the full module name for a given service
184
+ # Returns the full module name for a given service.
173
185
  #
174
186
  # Args:
175
- # - version: the API version (as an integer)
176
- # - service: the service name (as a string)
187
+ # - version: the API version (as a symbol)
188
+ # - service: the service name (as a symbol)
177
189
  #
178
190
  # Returns:
179
- # The full module name for the given service (as a string)
191
+ # The full module name for the given service (as a string).
180
192
  #
181
193
  def module_name(version, service)
182
- return "#{api_name}::#{version.to_s.upcase}::#{service}"
194
+ return "%s::%s::%s" %
195
+ [api_name, version.to_s.upcase, service.to_s]
183
196
  end
184
197
 
185
- # Returns the full interface class name for a given service
198
+ # Returns the full interface class name for a given service.
186
199
  #
187
200
  # Args:
188
201
  # - version: the API version (as an integer)
@@ -192,7 +205,7 @@ module AdsCommon
192
205
  # The full interface class name for the given service (as a string)
193
206
  #
194
207
  def interface_name(version, service)
195
- return module_name(version, service) + "::#{service}Interface"
208
+ return module_name(version, service) + "::" + service.to_s
196
209
  end
197
210
 
198
211
  # Returns the full wrapper class name for a given service
@@ -237,7 +250,7 @@ module AdsCommon
237
250
  # the base URL via environmental variable.
238
251
  #
239
252
  # Args:
240
- # - environment: environment to use like SANDBOX or PRODUCTION
253
+ # - environment: environment to use like :SANDBOX or :PRODUCTION
241
254
  # - version: the API version.
242
255
  #
243
256
  # Returns:
@@ -63,9 +63,14 @@ module AdsCommon
63
63
  return @token
64
64
  end
65
65
 
66
- # Creates authorization token. Needs to be overriden.
66
+ # Creates authorization token. Needs to be overridden.
67
67
  def create_token(credentials)
68
- raise NotImplementedError, 'create_token not overriden.'
68
+ raise NotImplementedError, 'create_token not overridden.'
69
+ end
70
+
71
+ # Returns authorization string. Needs to be overridden.
72
+ def auth_string(credentials, request)
73
+ raise NotImplementedError, 'auth_string not overridden.'
69
74
  end
70
75
  end
71
76
  end
@@ -76,6 +76,11 @@ module AdsCommon
76
76
  return result
77
77
  end
78
78
 
79
+ # Returns authorization string.
80
+ def auth_string(credentials, request)
81
+ return ("GoogleLogin auth=%s" % get_token(credentials))
82
+ end
83
+
79
84
  private
80
85
 
81
86
  # Auxiliary method to validate the credentials for token generation.
@@ -98,6 +98,31 @@ module AdsCommon
98
98
  return @consumer
99
99
  end
100
100
 
101
+ # Returns authorization string.
102
+ def auth_string(credentials, request)
103
+ if request.nil?
104
+ raise AdsCommon::Errors::AuthError,
105
+ 'Request is required for OAuth generator.'
106
+ end
107
+ return generate_oauth_parameters_string(credentials, request)
108
+ end
109
+
110
+ # Generates auth string for OAuth method of authentication.
111
+ #
112
+ # Args:
113
+ # - credentials: credentials set for authorization
114
+ # - request: a HTTPI Request to generate headers for
115
+ #
116
+ # Returns:
117
+ # - Authentication string
118
+ #
119
+ def generate_oauth_parameters_string(credentials, request)
120
+ oauth_params = {:consumer => @consumer,
121
+ :token => get_token(credentials)}
122
+ oauth_helper = OAuth::Client::Helper.new(request, oauth_params)
123
+ return oauth_helper.header
124
+ end
125
+
101
126
  private
102
127
 
103
128
  # Auxiliary method to validate the credentials for token generation.
@@ -84,11 +84,11 @@ module AdsCommon
84
84
 
85
85
  # Generates User-Agent text for HTTP request.
86
86
  def generate_user_agent_string()
87
- credentials = @credential_handler.credentials
88
- app_name = credentials[:user_agent]
87
+ credentials = @credential_handler.credentials(@version)
88
+ app_name = credentials[:userAgent] || credentials[:useragent]
89
89
  # We don't know the library version here. A breaking change needs to be
90
90
  # introduced. This is scheduled for 0.6.0, using Common version for now.
91
- lib_version = '0.5.3'
91
+ lib_version = '0.5.4'
92
92
  soap_user_agent = "Common-Ruby-%s; %s" % [lib_version, app_name]
93
93
  return "Savon/%s (%s)" % [Savon::Version, soap_user_agent]
94
94
  end
@@ -19,8 +19,6 @@
19
19
  #
20
20
  # Handles SOAP headers and namespaces definition for OAuth type header.
21
21
 
22
- require 'oauth'
23
-
24
22
  require 'ads_common/savon_headers/base_header_handler'
25
23
  require 'ads_common/savon_headers/httpi_request_proxy'
26
24
 
@@ -57,11 +55,14 @@ module AdsCommon
57
55
  # - Hash containing a header with filled in credentials
58
56
  #
59
57
  def generate_headers(request, soap)
60
- headers = @auth_handler.headers(@credential_handler.credentials)
58
+ credentials = @credential_handler.credentials
59
+ headers = @auth_handler.headers(credentials)
61
60
  request_header = headers.inject({}) do |request_header, (header, value)|
62
61
  if header == :access_token
62
+ request.url = soap.endpoint
63
63
  request.headers['Authorization'] =
64
- generate_oauth_parameters_string(request, value, soap.endpoint)
64
+ @auth_handler.generate_oauth_parameters_string(credentials,
65
+ request)
65
66
  else
66
67
  request_header[prepend_namespace(header)] = value
67
68
  end
@@ -69,24 +70,6 @@ module AdsCommon
69
70
  end
70
71
  soap.header[prepend_namespace(@element_name)] = request_header
71
72
  end
72
-
73
- # Generates auth string for OAuth method of authentication.
74
- #
75
- # Args:
76
- # - request: a HTTPI::Request to sign
77
- # - access_token: an initialized OAuth AccessToken
78
- # - url: request URL to generate auth string for
79
- #
80
- # Returns:
81
- # - Authentication string
82
- #
83
- def generate_oauth_parameters_string(request, access_token, url)
84
- request.url = url
85
- oauth_params = {:consumer => @auth_handler.get_oauth_consumer(),
86
- :token => access_token}
87
- oauth_helper = OAuth::Client::Helper.new(request, oauth_params)
88
- return oauth_helper.header
89
- end
90
73
  end
91
74
  end
92
75
  end
@@ -54,11 +54,9 @@ module AdsCommon
54
54
  # - Hash containing a header with filled in credentials
55
55
  #
56
56
  def generate_request_header()
57
- headers = @auth_handler.headers(@credential_handler.credentials)
58
- return headers.inject({}) do |request_header, (header, value)|
59
- request_header[prepend_namespace(header)] = value
60
- request_header
61
- end
57
+ headers = @auth_handler.headers(
58
+ @credential_handler.credentials(@version))
59
+ return headers[@element_name]
62
60
  end
63
61
  end
64
62
  end
@@ -319,7 +319,7 @@ module AdsCommon
319
319
  def normalize_output(output_data, method_definition)
320
320
  fields_list = method_definition[:output][:fields]
321
321
  result = normalize_output_field(output_data, fields_list, :rval)
322
- return result[:rval]
322
+ return result[:rval] || result
323
323
  end
324
324
 
325
325
  # Normalizes one field of a given data recursively.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-ads-common
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 3
10
- version: 0.5.3
9
+ - 4
10
+ version: 0.5.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sergio Gomes
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-10-21 00:00:00 +04:00
19
+ date: 2011-11-01 00:00:00 +04:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency