Class: ApimaticCalculator::FaradayClient
- Inherits:
-
HttpClient
- Object
- HttpClient
- ApimaticCalculator::FaradayClient
- Defined in:
- lib/apimatic_calculator/http/faraday_client.rb
Overview
An implementation of HttpClient.
Instance Method Summary collapse
-
#convert_response(response, http_request) ⇒ Object
Method overridden from HttpClient.
-
#create_connection(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, cache: false, verify: true) ⇒ Object
Method to initialize connection.
-
#execute_as_binary(http_request) ⇒ Object
Method overridden from HttpClient.
-
#execute_as_string(http_request) ⇒ Object
Method overridden from HttpClient.
-
#initialize(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, http_client_instance: nil, cache: false, verify: true) ⇒ FaradayClient
constructor
The constructor.
Methods inherited from HttpClient
#delete, #get, #head, #patch, #post, #put
Constructor Details
#initialize(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, http_client_instance: nil, cache: false, verify: true) ⇒ FaradayClient
The constructor.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/apimatic_calculator/http/faraday_client.rb', line 13 def initialize(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, http_client_instance: nil, cache: false, verify: true) if http_client_instance.nil? create_connection(timeout: timeout, max_retries: max_retries, retry_interval: retry_interval, backoff_factor: backoff_factor, retry_statuses: retry_statuses, retry_methods: retry_methods, cache: cache, verify: verify) else if http_client_instance.instance_variable_get('@connection').nil? raise ArgumentError, "`connection` cannot be nil in `#{self.class}`. Please specify a valid value." end @connection = http_client_instance.instance_variable_get('@connection') end end |
Instance Method Details
#convert_response(response, http_request) ⇒ Object
Method overridden from HttpClient.
84 85 86 87 |
# File 'lib/apimatic_calculator/http/faraday_client.rb', line 84 def convert_response(response, http_request) HttpResponse.new(response.status, response.reason_phrase, response.headers, response.body, http_request) end |
#create_connection(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, cache: false, verify: true) ⇒ Object
Method to initialize connection.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/apimatic_calculator/http/faraday_client.rb', line 31 def create_connection(timeout:, max_retries:, retry_interval:, backoff_factor:, retry_statuses:, retry_methods:, cache: false, verify: true) @connection = Faraday.new do |faraday| faraday.use Faraday::HttpCache, serializer: Marshal if cache faraday.use FaradayMiddleware::FollowRedirects faraday.use :gzip faraday.request :multipart faraday.request :url_encoded faraday.ssl[:ca_file] = Certifi.where faraday.ssl[:verify] = verify faraday.request :retry, max: max_retries, interval: retry_interval, backoff_factor: backoff_factor, retry_statuses: retry_statuses, methods: retry_methods faraday.adapter Faraday.default_adapter faraday.[:params_encoder] = Faraday::FlatParamsEncoder faraday.[:timeout] = timeout if timeout.positive? end @connection end |
#execute_as_binary(http_request) ⇒ Object
Method overridden from HttpClient.
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/apimatic_calculator/http/faraday_client.rb', line 69 def execute_as_binary(http_request) response = @connection.send( http_request.http_method.downcase, http_request.query_url ) do |request| request.headers = http_request.headers unless http_request.http_method == HttpMethodEnum::GET && http_request.parameters.empty? request.body = http_request.parameters end end convert_response(response, http_request) end |
#execute_as_string(http_request) ⇒ Object
Method overridden from HttpClient.
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/apimatic_calculator/http/faraday_client.rb', line 54 def execute_as_string(http_request) response = @connection.send( http_request.http_method.downcase, http_request.query_url ) do |request| request.headers = http_request.headers unless http_request.http_method == HttpMethodEnum::GET && http_request.parameters.empty? request.body = http_request.parameters end end convert_response(response, http_request) end |