Class: Google::Apis::Core::ApiCommand
- Inherits:
-
HttpCommand
- Object
- HttpCommand
- Google::Apis::Core::ApiCommand
- Defined in:
- lib/google/apis/core/api_command.rb
Overview
Command for executing most basic API request with JSON requests/responses
Direct Known Subclasses
Constant Summary collapse
- JSON_CONTENT_TYPE =
'application/json'
- FIELDS_PARAM =
'fields'
- ERROR_REASON_MAPPING =
{ 'rateLimitExceeded' => Google::Apis::RateLimitError, 'userRateLimitExceeded' => Google::Apis::RateLimitError, 'projectNotLinked' => Google::Apis::ProjectNotLinkedError }
Constants inherited from HttpCommand
Instance Attribute Summary collapse
-
#request_object ⇒ Object
Request body to serialize.
-
#request_representation ⇒ Google::Apis::Core::JsonRepresentation
JSON serializer for request objects.
-
#response_class ⇒ Object
Class to instantiate when de-serializing responses.
-
#response_representation ⇒ Google::Apis::Core::JsonRepresentation
JSON serializer for response objects.
Attributes inherited from HttpCommand
#body, #connection, #header, #method, #options, #params, #query, #url
Instance Method Summary collapse
- #allow_form_encoding? ⇒ Boolean
-
#check_status(status, header = nil, body = nil, message = nil)
Check the response and raise error if needed.
-
#decode_response_body(content_type, body) ⇒ Object
Deserialize the response body if present.
-
#prepare!
Serialize the request body.
Methods inherited from HttpCommand
#apply_request_options, #authorization_refreshable?, #error, #execute, #initialize, #process_response, #success
Methods included from Logging
Constructor Details
This class inherits a constructor from Google::Apis::Core::HttpCommand
Instance Attribute Details
#request_object ⇒ Object
Request body to serialize
41 42 43 |
# File 'lib/google/apis/core/api_command.rb', line 41 def request_object @request_object end |
#request_representation ⇒ Google::Apis::Core::JsonRepresentation
JSON serializer for request objects
37 38 39 |
# File 'lib/google/apis/core/api_command.rb', line 37 def request_representation @request_representation end |
#response_class ⇒ Object
Class to instantiate when de-serializing responses
49 50 51 |
# File 'lib/google/apis/core/api_command.rb', line 49 def response_class @response_class end |
#response_representation ⇒ Google::Apis::Core::JsonRepresentation
JSON serializer for response objects
45 46 47 |
# File 'lib/google/apis/core/api_command.rb', line 45 def response_representation @response_representation end |
Instance Method Details
#allow_form_encoding? ⇒ Boolean
123 124 125 |
# File 'lib/google/apis/core/api_command.rb', line 123 def allow_form_encoding? request_representation.nil? && super end |
#check_status(status, header = nil, body = nil, message = nil)
This method returns an undefined value.
Check the response and raise error if needed
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/google/apis/core/api_command.rb', line 104 def check_status(status, header = nil, body = nil, = nil) case status when 400, 402...500 reason, = parse_error(body) if reason = sprintf('%s: %s', reason, ) raise ERROR_REASON_MAPPING[reason].new( , status_code: status, header: header, body: body ) if ERROR_REASON_MAPPING.key?(reason) end super(status, header, body, ) else super(status, header, body, ) end end |
#decode_response_body(content_type, body) ⇒ Object
Deserialize the response body if present
noinspection RubyUnusedLocalVariable
80 81 82 83 84 85 86 87 88 |
# File 'lib/google/apis/core/api_command.rb', line 80 def decode_response_body(content_type, body) return super unless response_representation return super if && .skip_deserialization return super if content_type.nil? return nil unless content_type.start_with?(JSON_CONTENT_TYPE) instance = response_class.new response_representation.new(instance).from_json(body, unwrap: response_class) instance end |
#prepare!
This method returns an undefined value.
Serialize the request body
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/google/apis/core/api_command.rb', line 54 def prepare! set_xgac if && .api_format_version header['X-Goog-Api-Format-Version'] = .api_format_version.to_s end query[FIELDS_PARAM] = normalize_fields_param(query[FIELDS_PARAM]) if query.key?(FIELDS_PARAM) if request_representation && request_object header['Content-Type'] ||= JSON_CONTENT_TYPE if && .skip_serialization self.body = request_object else self.body = request_representation.new(request_object).to_json(user_options: { skip_undefined: true }) end end super end |