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
request_get_to(controller, params = nil, headers = nil, config_request = nil)
Alias for: get

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