class JSONAPI::Consumer::Query::Requestor

Attributes

klass[R]
path[R]

Public Class Methods

new(klass, path = nil) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 7
def initialize(klass, path = nil)
  @klass = klass
  @path = path
end

Public Instance Methods

create(record) click to toggle source

expects a record

# File lib/jsonapi/consumer/query/requestor.rb, line 13
def create(record)
  request(:post, klass.path(record.attributes), {
    data: record.as_json_api
  })
end
custom(method_name, options, params) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 39
def custom(method_name, options, params)
  path = resource_path(params)
  params.delete(klass.primary_key)
  path = File.join(path, method_name.to_s)

  request(options.fetch(:request_method, :get), path, params)
end
destroy(record) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 31
def destroy(record)
  request(:delete, resource_path(record.attributes), {})
end
get(params = {}) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 25
def get(params = {})
  path = resource_path(params)
  params.delete(klass.primary_key)
  request(:get, path, params)
end
linked(path) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 35
def linked(path)
  request(:get, path, {})
end
update(record) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 19
def update(record)
  request(:patch, resource_path(record.attributes), {
    data: record.as_json_api
  })
end

Protected Instance Methods

request(type, path, params) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 61
def request(type, path, params)
  klass.parser.parse(klass, connection.run(type, path, params, klass.custom_headers))
end
resource_path(parameters) click to toggle source
# File lib/jsonapi/consumer/query/requestor.rb, line 52
def resource_path(parameters)
  base_path = path || klass.path(parameters)
  if resource_id = parameters[klass.primary_key]
    File.join(base_path, encode_part(resource_id))
  else
    base_path
  end
end