class ShadowCabinet::Client::Real::Request::Base

A request is an implementation of an HTTP verb in terms of the Engine Yard Core API. This is the base class for all Requests.

Attributes

connector[R]
data[R]
request_url[R]

Public Class Methods

new(connector:, request_url:, data: nil) click to toggle source
# File lib/shadow_cabinet/client/real/request/base.rb, line 16
def initialize(connector:, request_url:, data: nil)
  @connector = connector
  @request_url = request_url
  @data = data
end

Public Instance Methods

perform() click to toggle source
# File lib/shadow_cabinet/client/real/request/base.rb, line 22
def perform
  Result.new(
    error: Unimplemented.new(
      "that operation is not implemented"
    )
  )
end

Private Instance Methods

params() click to toggle source
# File lib/shadow_cabinet/client/real/request/base.rb, line 35
def params
  @params = request_url.query_values || {}
end
path() click to toggle source
# File lib/shadow_cabinet/client/real/request/base.rb, line 31
def path
  request_url.path
end
process_response(response) click to toggle source
# File lib/shadow_cabinet/client/real/request/base.rb, line 39
def process_response(response)
  body = response.body

  status = response.status.to_i

  if status < 200 || status > 299
    api_errors = 
      begin
        JSON.parse(body, symbolize_names: true)[:errors] || []
      rescue
        []
      end

    if api_errors.empty?
      return Result.new(
        error: TransportError.new(
          "API returned a #{status} status"
        )
      )
    else
      return Result.new(
        error: CoreError.new(
          "Could not process request. The following issues were identified:\n#{api_errors.map(&:to_s).join("\n")}"
        )
      )
    end
  end

  Result.new(body: body)
end