class Restspec::Endpoints::Endpoint

Attributes

internal_payload[RW]
last_request[RW]
last_response[RW]
method[RW]
namespace[RW]
path[RW]
raw_url_params[RW]

Public Instance Methods

add_url_param_block(param, &block) click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 52
def add_url_param_block(param, &block)
  raw_url_params[param] = Proc.new(&block)
end
execute(body: {}, url_params: {}, query_params: {}) click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 11
def execute(body: {}, url_params: {}, query_params: {})
  url = URLBuilder.new(full_path, self.url_params.merge(url_params), query_params).full_url
  request = Request.new(method, url, full_headers, body || payload)

  Network.request(request).tap do |response|
    self.last_request = inject_self_into(response, :endpoint)
    self.last_request = inject_self_into(request, :endpoint)
  end
end
execute_once(body: {}, url_params: {}, query_params: {}, before: ->{ } click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 21
def execute_once(body: {}, url_params: {}, query_params: {}, before: ->{ })
  @executed_response ||= begin
    before.call
    execute(body: body, url_params: url_params, query_params: query_params)
  end
end
executed_url() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 56
def executed_url
  last_request.url
end
full_name() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 28
def full_name
  [namespace.try(:name), name].compact.join("/")
end
full_path() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 32
def full_path
  if namespace && in_member_or_collection?
    "#{namespace.full_base_path}#{path}"
  else
    path
  end
end
headers() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 40
def headers
  @headers ||= {}
end
payload() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 44
def payload
  @payload ||= internal_payload
end
url_params() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 48
def url_params
  @url_params ||= URLBuilder.new(full_path, raw_url_params).url_params
end

Private Instance Methods

config_headers() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 90
def config_headers
  Restspec.config.try(:request).try(:headers) || {}
end
full_headers() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 86
def full_headers
  config_headers.merge(headers)
end
in_member_or_collection?() click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 82
def in_member_or_collection?
  namespace.anonymous?
end
inject_self_into(object, property) click to toggle source
# File lib/restspec/endpoints/endpoint.rb, line 74
def inject_self_into(object, property)
  object.tap { object.send(:"#{property}=", self) }
end