class FsApi::Service::BaseService
Attributes
api_client[R]
command_class[W]
Public Class Methods
new(api_client)
click to toggle source
# File lib/fs_api/service/base_service.rb, line 7 def initialize(api_client) @api_client = api_client end
Public Instance Methods
all(params = {})
click to toggle source
# File lib/fs_api/service/base_service.rb, line 77 def all(params = {}) query_path = params.empty? ? path : "#{path}?#{URI.encode_www_form(params)}" if response = api_client.get(query_path) if response.code.to_i == success_status_code JSON.parse(response.body).map do |attributes| collection_class.new(attributes.merge(from_api: true)) end end end end
build(attributes)
click to toggle source
# File lib/fs_api/service/base_service.rb, line 46 def build(attributes) instance = collection_class.new(attributes) instance end
create(attributes)
click to toggle source
# File lib/fs_api/service/base_service.rb, line 40 def create(attributes) instance = build(attributes) save(instance) instance end
create_success_status_code()
click to toggle source
# File lib/fs_api/service/base_service.rb, line 89 def create_success_status_code 201 end
delete(instance)
click to toggle source
# File lib/fs_api/service/base_service.rb, line 51 def delete(instance) @api_client.delete(instance_path(instance)) if api_client._last_response.code.to_i != success_status_code instance.errors = api_client._last_response.body return false end end
find(id)
click to toggle source
# File lib/fs_api/service/base_service.rb, line 27 def find(id) if response = @api_client.get([path,id].join('/')) if response.code.to_i == success_status_code json_response = JSON.parse(response.body) # Weird case when nothing is found all clients are returned # #find should only return a single record return nil if json_response.is_a? Array # Return instance collection_class.new(json_response[resource_type].merge(from_api: true)) end end end
instance_path(instance)
click to toggle source
# File lib/fs_api/service/base_service.rb, line 23 def instance_path(instance) [path, instance.path].join end
path()
click to toggle source
# File lib/fs_api/service/base_service.rb, line 19 def path "/#{resource_type_plural}" end
resource_type()
click to toggle source
# File lib/fs_api/service/base_service.rb, line 11 def resource_type self.class.name.split('::').last.downcase end
resource_type_plural()
click to toggle source
# File lib/fs_api/service/base_service.rb, line 15 def resource_type_plural "#{resource_type}s" end
save(instance)
click to toggle source
# File lib/fs_api/service/base_service.rb, line 59 def save(instance) return false if instance.persisted? && !instance.updateable? if instance.persisted? @api_client.put(instance_path(instance), instance.to_json) if api_client._last_response.code.to_i != success_status_code instance.errors = api_client._last_response return false end else @api_client.post(instance_path(instance), instance.to_json) if api_client._last_response.code.to_i != create_success_status_code instance.errors = api_client._last_response.body return false end end true end
success_status_code()
click to toggle source
# File lib/fs_api/service/base_service.rb, line 93 def success_status_code 200 end