class Zesty::Request

Attributes

headers[R]
params[R]
request_method[R]
url[R]

Public Class Methods

delete(url, params: {}, headers: {}) click to toggle source
# File lib/zesty/request.rb, line 24
def self.delete(url, params: {}, headers: {})
  Request.new(:delete, url, params, headers).perform
end
get(url, params: nil, headers: {}) click to toggle source
# File lib/zesty/request.rb, line 8
def self.get(url, params: nil, headers: {})
  Request.new(:get, url, params, headers).perform
end
new(request_method, url, params, headers) click to toggle source
# File lib/zesty/request.rb, line 28
def initialize(request_method, url, params, headers)
  @request_method = request_method
  @url = url
  @params = params
  @headers = headers
end
post(url, params: {}, headers: {}) click to toggle source
# File lib/zesty/request.rb, line 16
def self.post(url, params: {}, headers: {})
  Request.new(:post, url, params, headers).perform
end
post_form(url, params: {}, headers: {}) click to toggle source
# File lib/zesty/request.rb, line 12
def self.post_form(url, params: {}, headers: {})
  Request.new(:post_form, url, params, headers).perform
end
put(url, params: {}, headers: {}) click to toggle source
# File lib/zesty/request.rb, line 20
def self.put(url, params: {}, headers: {})
  Request.new(:put, url, params, headers).perform
end

Public Instance Methods

perform() click to toggle source
# File lib/zesty/request.rb, line 35
def perform
  response = send(@request_method)
  process_response(response)
end

Private Instance Methods

delete() click to toggle source
# File lib/zesty/request.rb, line 42
def delete
  http_client.delete(url, params: params)
end
get() click to toggle source
# File lib/zesty/request.rb, line 46
def get
  http_client.get(url, body: params)
end
http_client() click to toggle source
# File lib/zesty/request.rb, line 62
def http_client
  HTTP.headers({ accept: "application/json" }.merge(headers))
end
parse_response_body(body) click to toggle source
# File lib/zesty/request.rb, line 76
def parse_response_body(body)
  return nil if body.strip.empty?
  JSON.parse(body, symbolize_names: true)&.to_snake_case
rescue JSON::ParserError
end
post() click to toggle source
# File lib/zesty/request.rb, line 54
def post
  http_client.post(url, json: params)
end
post_form() click to toggle source
# File lib/zesty/request.rb, line 50
def post_form
  http_client.post(url, form: params.transform_values { |v| HTTP::FormData::Part.new(v) })
end
process_response(response) click to toggle source
# File lib/zesty/request.rb, line 66
def process_response(response)
  data = parse_response_body(response.to_s)

  if response.status.success?
    data
  else
    raise Error.from_response(data, response)
  end
end
put() click to toggle source
# File lib/zesty/request.rb, line 58
def put
  http_client.put(url, json: params)
end