class Seriline::Request

Public Class Methods

get(uri, body = {}) click to toggle source
# File lib/seriline/request.rb, line 8
def get(uri, body = {})
  Request.new(uri).execute(body)
end
new(uri, method: "GET") click to toggle source
# File lib/seriline/request.rb, line 18
def initialize(uri, method: "GET")
  @method = method
  @uri = URI(uri)
end
post(uri, body = {}) click to toggle source
# File lib/seriline/request.rb, line 12
def post(uri, body = {})
  Request.new(uri, method: "POST")
         .execute(body)
end

Public Instance Methods

execute(body = {}) click to toggle source
# File lib/seriline/request.rb, line 23
def execute(body = {})
  response = http.request(request_object(body))
  evaluate_response(response)
  return parse_response(response)
end

Private Instance Methods

evaluate_response(response) click to toggle source
# File lib/seriline/request.rb, line 39
def evaluate_response(response)
  response.value
rescue
  raise Seriline::RequestFailedError.new(response)
end
http() click to toggle source
# File lib/seriline/request.rb, line 31
def http
  @http ||= Net::HTTP.new(@uri.host, @uri.port)
                     .tap do |http_instance|
    http_instance.use_ssl = true
    http_instance.verify_mode = OpenSSL::SSL::VERIFY_PEER
  end
end
parse_response(response) click to toggle source
# File lib/seriline/request.rb, line 45
def parse_response(response)
  return {} if response.body.empty?
  JSON.parse(response.body, {quirks_mode: true})
end
request_object(body) click to toggle source
# File lib/seriline/request.rb, line 50
def request_object(body)
  @request_object ||= case @method
                      when "GET"
                        @uri.query = URI.encode_www_form(body)
                        Net::HTTP::Get.new(@uri)
                      when "POST"
                        Net::HTTP::Post.new(@uri).tap do |req|
                          req.content_type = "application/json"
                          req.body = body.to_json
                        end
                      end
end