class Veeqo::Request

Public Class Methods

new(http_method, path, attributes = {}) click to toggle source
# File lib/veeqo/request.rb, line 8
def initialize(http_method, path, attributes = {})
  @path = path
  @http_method = http_method
  @attributes = attributes
end

Public Instance Methods

parse() click to toggle source
# File lib/veeqo/request.rb, line 18
def parse
  Response.new(run).parse
end
run() click to toggle source
# File lib/veeqo/request.rb, line 14
def run
  valid_response || raise_response_error
end

Private Instance Methods

build_net_http_request() click to toggle source
# File lib/veeqo/request.rb, line 54
def build_net_http_request
  request = constantize_net_http_class.new(uri)
  set_request_headers!(request)
  set_request_body!(request)
  request
end
constantize_net_http_class() click to toggle source
# File lib/veeqo/request.rb, line 68
def constantize_net_http_class
  Object.const_get("Net::HTTP::#{@http_method.to_s.capitalize}")
end
net_http_options() click to toggle source
# File lib/veeqo/request.rb, line 50
def net_http_options
  [uri.host, uri.port, use_ssl: true]
end
raise_response_error() click to toggle source
# File lib/veeqo/request.rb, line 30
def raise_response_error
  raise response_error
end
response() click to toggle source
# File lib/veeqo/request.rb, line 38
def response
  @response ||= send_http_request
rescue *server_errors => error
  @response ||= error
end
response_error() click to toggle source
# File lib/veeqo/request.rb, line 87
def response_error
  Veeqo::Errors.error_klass_for(response)
end
send_http_request() click to toggle source
# File lib/veeqo/request.rb, line 44
def send_http_request
  Net::HTTP.start(*net_http_options) do |http|
    http.request(build_net_http_request)
  end
end
server_errors() click to toggle source
# File lib/veeqo/request.rb, line 83
def server_errors
  Veeqo::Errors.server_errors
end
set_request_body!(request) click to toggle source
# File lib/veeqo/request.rb, line 72
def set_request_body!(request)
  request.body = @attributes.to_json
end
set_request_headers!(request) click to toggle source
# File lib/veeqo/request.rb, line 76
def set_request_headers!(request)
  request.initialize_http_header(
    "Content-Type" => "application/json",
    "x-api-key" => Veeqo.configuration.api_key,
  )
end
uri() click to toggle source
# File lib/veeqo/request.rb, line 61
def uri
  @uri ||= URI::HTTPS.build(
    host: Veeqo.configuration.api_host,
    path: ["", @path].join("/").squeeze("/"),
  )
end
valid_response() click to toggle source
# File lib/veeqo/request.rb, line 24
def valid_response
  if valid_response?
    response
  end
end
valid_response?() click to toggle source
# File lib/veeqo/request.rb, line 34
def valid_response?
  response.is_a?(Net::HTTPSuccess)
end