class Interage::Request::Start

Attributes

headers[R]
klass[R]
params[R]
response[R]
ssl[R]
ssl?[R]
uri[R]

Public Class Methods

call(*args) click to toggle source
# File lib/interage/request/start.rb, line 8
def self.call(*args)
  new(*args).perform
end
new(klass, uri, params = {}, headers = {}, ssl = false) click to toggle source
# File lib/interage/request/start.rb, line 12
def initialize(klass, uri, params = {}, headers = {}, ssl = false)
  @klass = klass
  @uri = URI(uri.to_s)
  @params = params
  @headers = headers
  @ssl = ssl
end

Public Instance Methods

body() click to toggle source
# File lib/interage/request/start.rb, line 30
def body
  @body ||= JSON.parse(response_body, symbolize_names: true)
rescue JSON::ParserError
  {}
end
code() click to toggle source
# File lib/interage/request/start.rb, line 36
def code
  response_code.to_i
end
errors() click to toggle source
# File lib/interage/request/start.rb, line 44
def errors
  body[:errors] || {}
end
perform() click to toggle source
# File lib/interage/request/start.rb, line 20
def perform
  @response = Net::HTTP.start(uri.host, uri.port) do |http|
    http.use_ssl = true if ssl?

    http.request(request)
  end

  self
end
success?() click to toggle source
# File lib/interage/request/start.rb, line 40
def success?
  response_message == 'OK' && errors.blank?
end

Protected Instance Methods

request() click to toggle source
# File lib/interage/request/start.rb, line 57
def request
  @request ||= begin
    request = klass.new(uri)
    request.body = params.to_json
    request.content_type = 'application/json'
    headers.map { |key, value| request[key] = value }

    request
  end
end