Added support for xoauth_requestor_id.

git-svn-id: https://google-api-ruby-client.googlecode.com/svn/trunk@100 c1d61fac-ed7f-fcc1-18f7-ff78120a04ef
This commit is contained in:
Bob Aman 2010-10-22 19:15:05 +00:00
parent d6ed864b0a
commit b0846efa4a
1 changed files with 19 additions and 2 deletions

View File

@ -137,6 +137,11 @@ HTML
"Sets the HTTP method to use for the request") do |m| "Sets the HTTP method to use for the request") do |m|
options[:http_method] = m options[:http_method] = m
end end
opts.on(
"--requestor-id <email>", String,
"Sets the email address of the requestor") do |e|
options[:requestor_id] = e
end
opts.on("-v", "--verbose", "Run verbosely") do |v| opts.on("-v", "--verbose", "Run verbosely") do |v|
options[:verbose] = v options[:verbose] = v
@ -277,6 +282,7 @@ HTML
require 'yaml' require 'yaml'
config_file = File.expand_path('~/.google-api.yaml') config_file = File.expand_path('~/.google-api.yaml')
signed = File.exist?(config_file) signed = File.exist?(config_file)
authorization_type = :oauth_1
# Setup HTTP request data # Setup HTTP request data
request_body = '' request_body = ''
@ -307,6 +313,9 @@ HTML
config["token_credential_key"] config["token_credential_key"]
client.authorization.token_credential_secret = client.authorization.token_credential_secret =
config["token_credential_secret"] config["token_credential_secret"]
if client.authorization.token_credential == nil
authorization_type = :two_legged_oauth_1
end
end end
if options[:uri] if options[:uri]
@ -316,10 +325,15 @@ HTML
STDERR.puts('URI may not be relative.') STDERR.puts('URI may not be relative.')
exit(1) exit(1)
end end
if options[:requestor_id]
uri.query_values = uri.query_values.merge(
'xoauth_requestor_id' => options[:requestor_id]
)
end
method = options[:http_method] method = options[:http_method]
method ||= request_body == '' ? 'GET' : 'POST' method ||= request_body == '' ? 'GET' : 'POST'
method.upcase! method.upcase!
client = Google::APIClient.new(:authorization => :two_legged_oauth_1) client = Google::APIClient.new(:authorization => authorization_type)
configure_authorization.call(client) if signed configure_authorization.call(client) if signed
request = [method, uri.to_str, headers, [request_body]] request = [method, uri.to_str, headers, [request_body]]
request = client.sign_request(request) request = client.sign_request(request)
@ -337,7 +351,7 @@ HTML
options[:service_name] || self.rpcname[/^([^\.]+)\./, 1] options[:service_name] || self.rpcname[/^([^\.]+)\./, 1]
client = Google::APIClient.new( client = Google::APIClient.new(
:service => service_name, :service => service_name,
:authorization => :oauth_1 :authorization => authorization_type
) )
configure_authorization.call(client) if signed configure_authorization.call(client) if signed
service_version = service_version =
@ -357,6 +371,9 @@ HTML
accu[name] = value accu[name] = value
accu accu
end end
if options[:requestor_id]
parameters['xoauth_requestor_id'] = options[:requestor_id]
end
begin begin
response = client.execute( response = client.execute(
method, parameters, request_body, headers, {:signed => signed} method, parameters, request_body, headers, {:signed => signed}