From f159ab7285fe2bd15400a1d04785eba3161a0bff Mon Sep 17 00:00:00 2001 From: Bob Aman Date: Wed, 17 Aug 2011 21:42:03 -0400 Subject: [PATCH] Introduced the ability to pass in an API object instead of a raw body when making requests. --- lib/google/api_client/reference.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/google/api_client/reference.rb b/lib/google/api_client/reference.rb index 97d686709..5085e0b00 100644 --- a/lib/google/api_client/reference.rb +++ b/lib/google/api_client/reference.rb @@ -13,6 +13,7 @@ # limitations under the License. require 'stringio' +require 'json' require 'addressable/uri' require 'google/api_client/discovery' @@ -33,6 +34,17 @@ module Google self.body = options[:body] elsif options[:merged_body] self.merged_body = options[:merged_body] + elsif options[:body_object] + if options[:body_object].respond_to?(:to_json) + serialized_body = options[:body_object].to_json + elsif options[:body_object].respond_to?(:to_hash) + serialized_body = JSON.generate(options[:body_object].to_hash) + else + raise TypeError, + 'Could not convert body object to JSON.' + + 'Must respond to :to_json or :to_hash.' + end + self.merged_body = serialized_body else self.merged_body = '' end