Class: CoreLibrary::ApiCall
- Inherits:
-
Object
- Object
- CoreLibrary::ApiCall
- Defined in:
- lib/apimatic-core/api_call.rb
Overview
This class is responsible for executing an API call using HttpClient, RequestBuilder and ResponseHandler objects.
Instance Method Summary collapse
-
#endpoint_context(context_key, context_value) ⇒ ApiCall
The setter for the context for an endpoint call.
-
#execute ⇒ Object
Executes the API call using provided HTTP client, request builder and response handler objects.
-
#initialize(global_configuration) ⇒ ApiCall
constructor
Initializes a new instance of ApiCall.
- #initialize_api_logger(logging_config) ⇒ Object
-
#new_builder ⇒ ApiCall
Creates a new builder instance of the API call with pre-configured global and logging configurations.
-
#request(request_builder) ⇒ ApiCall
The setter for the request builder to be used for building the request of an API call.
-
#response(response_handler) ⇒ ApiCall
The setter for the response handler to be used for handling the response of an API call.
-
#update_http_callback(callable) ⇒ Object
Registers request and response with the provided http_callback.
Constructor Details
#initialize(global_configuration) ⇒ ApiCall
Initializes a new instance of ApiCall.
12 13 14 15 16 17 18 |
# File 'lib/apimatic-core/api_call.rb', line 12 def initialize(global_configuration) @global_configuration = global_configuration @request_builder = RequestBuilder.new @response_handler = ResponseHandler.new @endpoint_context = {} initialize_api_logger(@global_configuration.client_configuration.logging_configuration) end |
Instance Method Details
#endpoint_context(context_key, context_value) ⇒ ApiCall
The setter for the context for an endpoint call.
40 41 42 43 |
# File 'lib/apimatic-core/api_call.rb', line 40 def endpoint_context(context_key, context_value) @endpoint_context[context_key] = context_value self end |
#execute ⇒ Object
Executes the API call using provided HTTP client, request builder and response handler objects.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/apimatic-core/api_call.rb', line 47 def execute _client_configuration = @global_configuration.client_configuration begin if _client_configuration.http_client.nil? raise ArgumentError, 'An HTTP client instance is required to execute an Api call.' end _http_request = @request_builder.global_configuration(@global_configuration) .build(@endpoint_context) @logger.log_request(_http_request) _http_callback = _client_configuration.http_callback unless _http_callback.nil? update_http_callback(proc do _http_callback&.on_before_request(_http_request) end) end _http_response = _client_configuration.http_client.execute(_http_request) @logger.log_response(_http_response) unless _http_callback.nil? update_http_callback(proc do _http_callback&.on_after_response(_http_response) end) end _deserialized_response = @response_handler.handle(_http_response, @global_configuration.get_global_errors, @global_configuration.should_symbolize_hash) _deserialized_response rescue StandardError => e raise e end end |
#initialize_api_logger(logging_config) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/apimatic-core/api_call.rb', line 87 def initialize_api_logger(logging_config) @logger = if logging_config.nil? NilSdkLogger.new else SdkLogger.new(logging_config) end end |
#new_builder ⇒ ApiCall
Creates a new builder instance of the API call with pre-configured global and logging configurations.
6 7 8 |
# File 'lib/apimatic-core/api_call.rb', line 6 def new_builder ApiCall.new(@global_configuration) end |
#request(request_builder) ⇒ ApiCall
The setter for the request builder to be used for building the request of an API call.
23 24 25 26 |
# File 'lib/apimatic-core/api_call.rb', line 23 def request(request_builder) @request_builder = request_builder self end |
#response(response_handler) ⇒ ApiCall
The setter for the response handler to be used for handling the response of an API call.
31 32 33 34 |
# File 'lib/apimatic-core/api_call.rb', line 31 def response(response_handler) @response_handler = response_handler self end |
#update_http_callback(callable) ⇒ Object
Registers request and response with the provided http_callback
83 84 85 |
# File 'lib/apimatic-core/api_call.rb', line 83 def update_http_callback(callable) callable.call end |