module Airborne::RestClientRequester

Public Instance Methods

make_request(method, url, options = {}) click to toggle source
# File lib/airborne/rest_client_requester.rb, line 5
def make_request(method, url, options = {})
  headers = base_headers.merge(options[:headers] || {})
  verify_ssl = options.fetch(:verify_ssl, true)
  res = if method == :post || method == :patch || method == :put || method == :delete
    begin
      request_body = options[:body].nil? || is_empty(options[:body]) ? '' : options[:body]
      request_body = request_body.to_json if is_json_request(headers) && !is_empty(request_body)
      RestClient::Request.execute(
        method: method,
        url: get_url(url),
        payload: request_body,
        headers: headers,
        verify_ssl: verify_ssl
      ) { |response, request, result| response }
    rescue RestClient::Exception => e
      e.response ? e.response : e.original_exception
    end
  else
    begin
      RestClient::Request.execute(
        method: method,
        url: get_url(url),
        headers: headers,
        verify_ssl: verify_ssl
      ) { |response, request, result| response }
    rescue RestClient::Exception => e
      e.response ? e.response : e.original_exception
    end
  end
  res
end

Private Instance Methods

base_headers() click to toggle source
# File lib/airborne/rest_client_requester.rb, line 50
def base_headers
  { content_type: :json }.merge(Airborne.configuration.headers || {})
end
is_empty(body) click to toggle source
# File lib/airborne/rest_client_requester.rb, line 44
def is_empty(body)
  return body.empty? if body.respond_to?(:empty?)

  false
end
is_json_request(headers) click to toggle source
# File lib/airborne/rest_client_requester.rb, line 39
def is_json_request(headers)
  header = headers.fetch(:content_type)
  header == :json || /application\/([a-zA-Z0-9\.\_\-]*\+?)json/ =~ header
end