class Recruitee::APIResource
Attributes
client[R]
resource_klass[R]
Public Class Methods
new(client, resource_klass)
click to toggle source
# File lib/recruitee/api_resource.rb, line 7 def initialize(client, resource_klass) if client.nil? || resource_klass.nil? raise ArgumentError, 'client & resource class must be provided' end @client = client @resource_klass = resource_klass end
Public Instance Methods
create(data = {})
click to toggle source
# File lib/recruitee/api_resource.rb, line 16 def create(data = {}) body = namespaced_body(data) payload = request(:post, resource_url, body: body) initialize_from(payload[resource_name]) end
destroy(id, params = {})
click to toggle source
# File lib/recruitee/api_resource.rb, line 23 def destroy(id, params = {}) payload = request(:delete, "#{resource_url}/#{id}", params: params) initialize_from(payload[resource_name]) end
find(id, params = {})
click to toggle source
# File lib/recruitee/api_resource.rb, line 29 def find(id, params = {}) payload = request(:get, "#{resource_url}/#{id}", params: params) initialize_from(payload[resource_name]) end
list(params = {})
click to toggle source
# File lib/recruitee/api_resource.rb, line 35 def list(params = {}) payload = request(:get, resource_url, params: params) payload["#{resource_name}s"].map { |props| initialize_from(props) } end
resource_name()
click to toggle source
# File lib/recruitee/api_resource.rb, line 48 def resource_name Util.underscore(resource_klass.name.split('::').last) end
resource_url()
click to toggle source
# File lib/recruitee/api_resource.rb, line 52 def resource_url "/#{resource_name}s" end
update(id, data = {})
click to toggle source
# File lib/recruitee/api_resource.rb, line 41 def update(id, data = {}) body = namespaced_body(data) payload = request(:patch, "#{resource_url}/#{id}", body: body) initialize_from(payload[resource_name]) end
Private Instance Methods
initialize_from(properties)
click to toggle source
# File lib/recruitee/api_resource.rb, line 58 def initialize_from(properties) resource_klass.new(client, properties) end
namespaced_body(data)
click to toggle source
# File lib/recruitee/api_resource.rb, line 62 def namespaced_body(data) data[resource_name.to_sym] ? data : { "#{resource_name}": data } end
request(*args)
click to toggle source
# File lib/recruitee/api_resource.rb, line 66 def request(*args) response = client.request(*args) if response.status_code < 200 || response.status_code >= 400 raise response.to_s end response.body end