class Croesus::WebClient

Public Class Methods

internal_request(request, timeout) click to toggle source
# File lib/croesus/web_client/web_client.rb, line 34
def self.internal_request(request, timeout)
  HTTP_HEADERS.each { |key, value| request.add_header(key, value) }
  response = nil

  begin
    case request.method
    when :get
      response = RestClient::Request.execute(
        method: :get,
        url:     request.url,
        headers: request.headers,
        timeout: timeout
      )
    when :post
      response = RestClient::Request.execute(
        method: :post,
        url:     request.url,
        payload: request.body,
        headers: request.headers,
        timeout: timeout
      )
    when :delete
      response = RestClient::Request.execute(
        method: :delete,
        url:     request.url,
        payload: request.body,
        headers: request.headers,
        timeout: timeout
      )
    end
  rescue RestClient::RequestTimeout
    raise 'Request Timeout'
  rescue RestClient::Exception => e
    response = e.response
  end

  Croesus::WebResponse.new(response)
end
request(method, url, headers, body, timeout, &callback) click to toggle source
# File lib/croesus/web_client/web_client.rb, line 22
def self.request(method, url, headers, body, timeout, &callback)
  request = Croesus::WebRequest.new(method, url, headers, body)

  if callback
    Thread.new do
      callback.call(self.internal_request(request, timeout))
    end
  else
    self.internal_request(request, timeout)
  end
end