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
-
#client_version ⇒ String
Client library version.
-
#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.
-
#initialize(method, url, body: nil, client_version: nil) ⇒ ApiCommand
constructor
A new instance of ApiCommand.
-
#prepare!
Serialize the request body.
Methods inherited from HttpCommand
#apply_request_options, #authorization_refreshable?, #error, #execute, #process_response, #success
Methods included from Logging
Constructor Details
#initialize(method, url, body: nil, client_version: nil) ⇒ ApiCommand
Returns a new instance of ApiCommand.
61 62 63 64 |
# File 'lib/google/apis/core/api_command.rb', line 61 def initialize(method, url, body: nil, client_version: nil) super(method, url, body: body) self.client_version = client_version || Core::VERSION end |
Instance Attribute Details
#client_version ⇒ String
Client library version.
53 54 55 |
# File 'lib/google/apis/core/api_command.rb', line 53 def client_version @client_version end |
#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
140 141 142 |
# File 'lib/google/apis/core/api_command.rb', line 140 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
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/google/apis/core/api_command.rb', line 121 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
96 97 98 99 100 101 102 103 104 105 |
# File 'lib/google/apis/core/api_command.rb', line 96 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) body = "{}" if body.empty? 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
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/google/apis/core/api_command.rb', line 69 def prepare! set_api_client_header set_user_project_header 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 |