diff --git a/.travis.yml b/.travis.yml index 65ec7dbe0..57023b0cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ language: ruby rvm: + - 2.3.0 - 2.2 - 2.0.0 - 2.1 diff --git a/README.md b/README.md index a9b5af95f..f3fa5b32f 100644 --- a/README.md +++ b/README.md @@ -220,8 +220,8 @@ Samples for versions 0.9 and onward can be found in the `samples` directory. Contributions for additional samples are welcome. See [CONTRIBUTING](CONTRIBUTING.md). Samples for previous versions can be found in the -[google-api-ruby-client-samples](https://github.com/google/google-api-ruby-client-samples) -repository. +[samples](samples) +folder. ## Generating APIs diff --git a/bin/generate-api b/bin/generate-api index 621f9329c..c16b6f957 100755 --- a/bin/generate-api +++ b/bin/generate-api @@ -6,7 +6,6 @@ require 'thor' require 'open-uri' require 'google/apis/discovery_v1' require 'google/apis/generator' -require 'multi_json' require 'logger' module Google diff --git a/google-api-client.gemspec b/google-api-client.gemspec index ae510cd1e..3d94d5d23 100644 --- a/google-api-client.gemspec +++ b/google-api-client.gemspec @@ -18,7 +18,6 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib', 'generated', 'third_party'] spec.add_runtime_dependency 'representable', '~> 2.3.0' - spec.add_runtime_dependency 'multi_json', '~> 1.11' spec.add_runtime_dependency 'retriable', '~> 2.0' spec.add_runtime_dependency 'activesupport', '>= 3.2' spec.add_runtime_dependency 'addressable', '~> 2.3' diff --git a/lib/google/api_client/client_secrets.rb b/lib/google/api_client/client_secrets.rb index 5bb195393..64515efeb 100644 --- a/lib/google/api_client/client_secrets.rb +++ b/lib/google/api_client/client_secrets.rb @@ -12,8 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. - -require 'compat/multi_json' +require 'json' module Google @@ -71,7 +70,7 @@ module Google search_path = File.expand_path(File.join(search_path, '..')) end end - data = File.open(filename, 'r') { |file| MultiJson.load(file.read) } + data = File.open(filename, 'r') { |file| JSON.load(file.read) } return self.new(data) end @@ -119,7 +118,7 @@ module Google # @return [String] # JSON def to_json - return MultiJson.dump(to_hash) + return Json.dump(to_hash) end def to_hash diff --git a/lib/google/apis/core/api_command.rb b/lib/google/apis/core/api_command.rb index 61ac0d853..2733ae13c 100644 --- a/lib/google/apis/core/api_command.rb +++ b/lib/google/apis/core/api_command.rb @@ -17,7 +17,7 @@ require 'addressable/uri' require 'addressable/template' require 'google/apis/core/http_command' require 'google/apis/errors' -require 'multi_json' +require 'json' require 'retriable' module Google @@ -113,7 +113,7 @@ module Google # HTTP response body # @return [Hash] def parse_error(body) - hash = MultiJson.load(body) + hash = JSON.load(body) hash['error']['errors'].first rescue nil diff --git a/lib/google/apis/core/http_command.rb b/lib/google/apis/core/http_command.rb index b83693884..aad907d26 100644 --- a/lib/google/apis/core/http_command.rb +++ b/lib/google/apis/core/http_command.rb @@ -303,6 +303,7 @@ module Google end req.header.update(header) req.options.timeout = options.timeout_sec + req.options.open_timeout = options.open_timeout_sec end private diff --git a/lib/google/apis/core/json_representation.rb b/lib/google/apis/core/json_representation.rb index 843038a02..ab28e04e1 100644 --- a/lib/google/apis/core/json_representation.rb +++ b/lib/google/apis/core/json_representation.rb @@ -38,8 +38,8 @@ module Google def getter_fn(name) ivar_name = "@#{name}".to_sym lambda do |_| - if respond_to?(:[]) - self[name] || instance_variable_get(ivar_name) + if respond_to?(:fetch) + fetch(name, instance_variable_get(ivar_name)) else instance_variable_get(ivar_name) end diff --git a/lib/google/apis/generator/annotator.rb b/lib/google/apis/generator/annotator.rb index 1614cdddb..7105728d4 100644 --- a/lib/google/apis/generator/annotator.rb +++ b/lib/google/apis/generator/annotator.rb @@ -15,7 +15,7 @@ require 'logger' require 'erb' require 'yaml' -require 'multi_json' +require 'json' require 'active_support/inflector' require 'google/apis/core/logging' require 'google/apis/generator/template' diff --git a/spec/google/api_client/client_secrets_spec.rb b/spec/google/api_client/client_secrets_spec.rb index 247004cfa..8964c7d94 100644 --- a/spec/google/api_client/client_secrets_spec.rb +++ b/spec/google/api_client/client_secrets_spec.rb @@ -23,7 +23,7 @@ FIXTURES_PATH = File.expand_path('../../../fixtures', __FILE__) RSpec.describe Google::APIClient::ClientSecrets do describe '::new' do let(:filename) { File.join(FIXTURES_PATH, 'files', 'client_secrets.json') } - let(:data) { File.open(filename, 'r') { |file| MultiJson.load(file.read) } } + let(:data) { File.open(filename, 'r') { |file| JSON.load(file.read) } } context 'without options' do subject { Google::APIClient::ClientSecrets.new(data) } @@ -367,7 +367,7 @@ RSpec.describe Google::APIClient::ClientSecrets do context 'with invalid JSON file' do it 'should raise exception' do file = File.join(FIXTURES_PATH, 'files', 'invalid.json') - expect { Google::APIClient::ClientSecrets.load(file) }.to raise_exception(MultiJson::ParseError) + expect { Google::APIClient::ClientSecrets.load(file) }.to raise_exception(JSON::ParserError) end end diff --git a/spec/google/apis/core/json_representation_spec.rb b/spec/google/apis/core/json_representation_spec.rb index ebbe3e681..644a5ac0b 100644 --- a/spec/google/apis/core/json_representation_spec.rb +++ b/spec/google/apis/core/json_representation_spec.rb @@ -28,7 +28,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do attr_accessor :nil_value attr_accessor :numeric_value attr_accessor :string_value - attr_accessor :boolean_value + attr_accessor :boolean_value_true + attr_accessor :boolean_value_false attr_accessor :date_value attr_accessor :bytes_value attr_accessor :items @@ -44,7 +45,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do property :nil_value, as: 'nilValue' property :numeric_value, as: 'numericValue' property :string_value, as: 'stringValue' - property :boolean_value, as: 'booleanValue' + property :boolean_value_true, as: 'booleanValueTrue' + property :boolean_value_false, as: 'booleanValueFalse' property :date_value, as: 'dateValue', type: DateTime property :bytes_value, as: 'bytesValue', base64: true property :items @@ -75,7 +77,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do end it 'serializes boolean values' do - expect(json).to be_json_eql(%(true)).at_path('booleanValue') + expect(json).to be_json_eql(%(true)).at_path('booleanValueTrue') + expect(json).to be_json_eql(%(false)).at_path('booleanValueFalse') end it 'serializes date values' do @@ -107,7 +110,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do model.numeric_value = 123 model.string_value = 'test' model.date_value = DateTime.new(2015, 5, 1, 12) - model.boolean_value = true + model.boolean_value_true = true + model.boolean_value_false = false model.bytes_value = 'Hello world' model.items = [1, 2, 3] model.child = child_class.new @@ -127,7 +131,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do string_value: 'test', numeric_value: 123, date_value: DateTime.new(2015, 5, 1, 12), - boolean_value: true, + boolean_value_true: true, + boolean_value_false: false, bytes_value: 'Hello world', items: [1, 2, 3], child: { @@ -146,7 +151,8 @@ RSpec.describe Google::Apis::Core::JsonRepresentation do json = <