class JsonApiClient::Query::Requestor
Attributes
klass[R]
Public Class Methods
new(klass)
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 7 def initialize(klass) @klass = klass end
Public Instance Methods
create(record)
click to toggle source
expects a record
# File lib/json_api_client/query/requestor.rb, line 12 def create(record) request( :post, klass.path(record.path_attributes), body: { data: record.as_json_api }, params: record.request_params.to_params ) end
custom(method_name, options, params)
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 44 def custom(method_name, options, params) path = resource_path(params) params.delete(klass.primary_key) path = File.join(path, method_name.to_s) request_method = options.fetch(:request_method, :get).to_sym query_params, body_params = [:get, :delete].include?(request_method) ? [params, nil] : [nil, params] request(request_method, path, params: query_params, body: body_params) end
destroy(record)
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 36 def destroy(record) request(:delete, resource_path(record.path_attributes)) end
get(params = {})
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 30 def get(params = {}) path = resource_path(params) params.delete(klass.primary_key) request(:get, path, params: params) end
linked(path)
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 40 def linked(path) request(:get, path) end
update(record)
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 21 def update(record) request( :patch, resource_path(record.path_attributes), body: { data: record.as_json_api }, params: record.request_params.to_params ) end
Protected Instance Methods
request(type, path, params: nil, body: nil)
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 66 def request(type, path, params: nil, body: nil) response = connection.run(type, path, params: params, body: body, headers: klass.custom_headers) klass.parser.parse(klass, response) end
resource_path(parameters)
click to toggle source
# File lib/json_api_client/query/requestor.rb, line 58 def resource_path(parameters) if resource_id = parameters[klass.primary_key] File.join(klass.path(parameters), encode_part(resource_id)) else klass.path(parameters) end end