class MyTargetApi::Resource

Reflects api resource

Attributes

api[R]
path[R]

Public Class Methods

new(api, path) click to toggle source
# File lib/my_target_api/resource.rb, line 7
def initialize(api, path)
  @api = api
  @path = path
end

Public Instance Methods

create(params = {}) click to toggle source
# File lib/my_target_api/resource.rb, line 12
def create(params = {})
  with_prepared_params(params) do |prepared|
    api.post_request("#{path}.json", prepared)
  end
end
delete(params = {}) click to toggle source
# File lib/my_target_api/resource.rb, line 34
def delete(params = {})
  with_id_and_prepared_params(params, assert_id_existence: true) do |id, prepared|
    api.delete_request("#{path}/#{id}.json", prepared)
  end
end
read(params = {}) click to toggle source
# File lib/my_target_api/resource.rb, line 18
def read(params = {})
  with_id_and_prepared_params(params) do |id, prepared|
    if id
      api.get_request("#{path}/#{id}.json", prepared)
    else
      api.get_request("#{path}.json", prepared)
    end
  end
end
resource(relative_path) click to toggle source
# File lib/my_target_api/resource.rb, line 46
def resource(relative_path)
  MyTargetApi::Resource.new(api, "#{path}/#{relative_path}")
end
update(params = {}) click to toggle source
# File lib/my_target_api/resource.rb, line 28
def update(params = {})
  with_id_and_prepared_params(params, assert_id_existence: true) do |id, prepared|
    api.post_request("#{path}/#{id}.json", prepared)
  end
end
upload(content, params = {}) click to toggle source
# File lib/my_target_api/resource.rb, line 40
def upload(content, params = {})
  with_prepared_params(params) do |prepared|
    api.upload_request("#{path}.json", content, prepared)
  end
end

Private Instance Methods

with_id_and_prepared_params(params, assert_id_existence: false) { |id, dup| ... } click to toggle source
# File lib/my_target_api/resource.rb, line 64
def with_id_and_prepared_params(params, assert_id_existence: false)
  with_prepared_params(params) do |prepared|
    id_key_param = prepared.delete(:id_param_key) || :id
    id = prepared.delete(id_key_param.to_sym)
    raise ArgumentError, ':id is required' if assert_id_existence && id.nil?

    yield id, prepared.dup
  end
end
with_prepared_params(params) { |prepared| ... } click to toggle source
# File lib/my_target_api/resource.rb, line 54
def with_prepared_params(params)
  raise ArgumentError, 'Params must be a Hash' unless params.is_a? Hash

  prepared = params.map do |param, value|
    [param.to_sym, value]
  end.to_h

  yield prepared
end