class ManagerRemoteHttp
Constants
- DEFAULT_REDIRECT_LIMIT
- DEFAULT_TIMEOUT_OPEN
- DEFAULT_TIMEOUT_READ
- METHODS
Public Class Methods
new(options = {})
click to toggle source
methods
# File lib/mrpin/core/remote/http/manager_remote_http.rb, line 12 def initialize(options = {}) url = options.assert_property!(:url) faraday_options = { request: { timeout: options[:read_timeout] || DEFAULT_TIMEOUT_READ, open_timeout: options[:open_timeout] || DEFAULT_TIMEOUT_OPEN } } redirect_limit = options[:redirect_limit] || DEFAULT_REDIRECT_LIMIT @connection = Faraday.new(url, faraday_options) do |builder| builder.request :url_encoded # for POST/PUT params builder.request :retry, {max: 3, interval: 0.2, interval_randomness: 0, backoff_factor: 1.5} # [0.2 0.3 0.45] intervals between retries if redirect_limit > 0 builder.use FaradayMiddleware::FollowRedirects, {limit: redirect_limit} end builder.adapter :net_http end end
Public Instance Methods
get(controller, params = nil, headers = nil, config_request = nil)
click to toggle source
# File lib/mrpin/core/remote/http/manager_remote_http.rb, line 39 def get(controller, params = nil, headers = nil, config_request = nil) run_request(:get, controller, params, headers, config_request) end
Also aliased as: request_get_to
json_to(controller, params = {}, method = :post)
click to toggle source
# File lib/mrpin/core/remote/http/manager_remote_http.rb, line 86 def json_to(controller, params = {}, method = :post) result = nil begin unless METHODS.include?(method) raise ArgumentError, "Not supported method: #{method}" end response = @connection.send(method) do |req| req.url controller req.headers['Content-Type'] = 'application/json' req.body = params.to_json end if response.success? response_json = JSON.parse(response.body, {symbolize_names: true}) result = { status: response.body, response: response_json } else result = { status: EResponseType::ERT_ERROR, code: response.status, response: response.body } end rescue Exception => e result = {status: EResponseType::ERT_ERROR, response: e.message} end result end
post(controller, params = nil, headers = nil, config_request = nil)
click to toggle source
# File lib/mrpin/core/remote/http/manager_remote_http.rb, line 46 def post(controller, params = nil, headers = nil, config_request = nil) run_request(:post, controller, params, headers, config_request) end
Private Instance Methods
run_request(method, controller, params = nil, headers = nil, config_request = nil)
click to toggle source
# File lib/mrpin/core/remote/http/manager_remote_http.rb, line 51 def run_request(method, controller, params = nil, headers = nil, config_request = nil) result = nil begin response = @connection.send(method, controller, params, headers) do |request| unless config_request.nil? config_request.call(request) end end if response.success? result = { status: EResponseType::ERT_OK, response: response.body } else result = { status: EResponseType::ERT_ERROR, code: response.status, response: response.body } end rescue Exception => e result = {status: EResponseType::ERT_ERROR, response: e.message} end result end