Merge branch 'master' of https://github.com/sqrrrl/google-api-ruby-client into sqrrrl-master

This commit is contained in:
Steve Bazyl 2017-04-03 12:31:20 -07:00
commit 48916bfce7
5 changed files with 40 additions and 4 deletions

View File

@ -164,10 +164,10 @@ module Google
batch_command.options = request_options.merge(options)
apply_command_defaults(batch_command)
begin
Thread.current[:google_api_batch] = batch_command
start_batch(batch_command)
yield self
ensure
Thread.current[:google_api_batch] = nil
end_batch
end
batch_command.execute(client)
end
@ -196,10 +196,10 @@ module Google
batch_command.options = request_options.merge(options)
apply_command_defaults(batch_command)
begin
Thread.current[:google_api_batch] = batch_command
start_batch(batch_command)
yield self
ensure
Thread.current[:google_api_batch] = nil
end_batch
end
batch_command.execute(client)
end
@ -347,6 +347,7 @@ module Google
def execute_or_queue_command(command, &callback)
batch_command = current_batch
if batch_command
fail "Can not combine services in a batch" if Thread.current[:google_api_batch_service] != self
batch_command.add(command, &callback)
nil
else
@ -374,6 +375,20 @@ module Google
!current_batch.nil?
end
# Start a new thread-local batch context
# @param [Google::Apis::Core::BatchCommand] cmd
def start_batch(cmd)
fail "Batch already in progress" if batch?
Thread.current[:google_api_batch] = cmd
Thread.current[:google_api_batch_service] = self
end
# Clear thread-local batch context
def end_batch
Thread.current[:google_api_batch] = nil
Thread.current[:google_api_batch_service] = nil
end
# Create a new HTTP client
# @return [HTTPClient]
def new_client

View File

@ -42,6 +42,7 @@ module Google
<% end -%>
def initialize
super('<%= api.root_url %>', '<%= api.service_path %>')
@batch_path = '<%= api.batch_path %>'
end
<% for api_method in api.all_methods -%>
<%= indent(include('method', :api_method => api_method, :api => api), 8) -%>

View File

@ -7,6 +7,7 @@
"basePath": "/test/",
"rootUrl": "https://www.googleapis.com/",
"servicePath": "test/v1/",
"batchPath": "batch/test/v1",
"rpcPath": "/rpc",
"auth": {
"oauth2": {

View File

@ -196,6 +196,20 @@ EOF
end
end.to raise_error(Google::Apis::ClientError)
end
it 'should prevent mixing services in batch' do
expect do |b|
service.batch do |service|
command = service.send(:make_simple_command, :get, 'zoo/animals', {})
service.send(:execute_or_queue_command, command, &b)
service2 = service.dup
command2 = service.send(:make_simple_command, :get, 'zoo/animals', {})
service2.send(:execute_or_queue_command, command2, &b)
end
end.to raise_error
end
end
context 'with batch uploads' do

View File

@ -30,6 +30,7 @@ RSpec.describe Google::Apis::Generator do
puts generator.dump_api_names
tempdir = Dir.mktmpdir
generated_files.each do |key, content|
puts content
path = File.join(tempdir, key)
FileUtils.mkdir_p(File.dirname(path))
File.open(path, 'w') do |f|
@ -47,6 +48,10 @@ RSpec.describe Google::Apis::Generator do
expect(service.root_url.to_s).to eql('https://www.googleapis.com/')
end
it 'should set the batch path' do
expect(service.batch_path).to eql('batch/test/v1')
end
it 'should define global methods from discovery' do
expect(service.method(:query)).to_not be_nil
end