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