class InstanceId::Request

Public Class Methods

new(*args, **options) { |connector| ... } click to toggle source
# File lib/instance_id/request.rb, line 3
def initialize(*args, **options)
  yield(connector) if block_given?
end

Public Instance Methods

endpoint() click to toggle source
# File lib/instance_id/request.rb, line 14
def endpoint
  raise NotImplementedError, "concrete classes should implement #{__method__}."
end
invoke() { |request| ... } click to toggle source
# File lib/instance_id/request.rb, line 7
def invoke
  response = connector.send(method, endpoint) do |request|
    yield(request) if block_given?
  end
  parse response
end
method() click to toggle source
# File lib/instance_id/request.rb, line 18
def method
  raise NotImplementedError, "concrete classes should implement #{__method__}, returning one of #{%i(get post put patch delete)}."
end
response_class() click to toggle source
# File lib/instance_id/request.rb, line 22
def response_class
  raise NotImplementedError, "concrete classes should implement #{__method__}, returning concrete class of InstanceId::Response"
end

Private Instance Methods

connector() click to toggle source
# File lib/instance_id/request.rb, line 32
def connector
  @connector ||= Faraday.new(url: InstanceId.configure.base_url, headers: InstanceId.configure.headers) do |faraday|
    faraday.request :url_encoded            # form-encode POST params
    faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
    faraday.response :logger                # log requests to STDOUT
    faraday.use :instrumentation
  end
end
parse(response) click to toggle source
# File lib/instance_id/request.rb, line 28
def parse(response)
  response_class.new(status: response.status, body: response.body, headers: response.headers)
end