Class: FsApi::Service::BaseService
- Inherits:
-
Object
- Object
- FsApi::Service::BaseService
show all
- Defined in:
- lib/fs_api/service/base_service.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(api_client) ⇒ BaseService
Returns a new instance of BaseService.
7
8
9
|
# File 'lib/fs_api/service/base_service.rb', line 7
def initialize(api_client)
@api_client = api_client
end
|
Instance Attribute Details
#api_client ⇒ Object
Returns the value of attribute api_client.
5
6
7
|
# File 'lib/fs_api/service/base_service.rb', line 5
def api_client
@api_client
end
|
#command_class=(value) ⇒ Object
Sets the attribute command_class
4
5
6
|
# File 'lib/fs_api/service/base_service.rb', line 4
def command_class=(value)
@command_class = value
end
|
Instance Method Details
#all(params = {}) ⇒ Object
77
78
79
80
81
82
83
84
85
86
87
|
# 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) ⇒ Object
46
47
48
49
|
# File 'lib/fs_api/service/base_service.rb', line 46
def build(attributes)
instance = collection_class.new(attributes)
instance
end
|
#create(attributes) ⇒ Object
40
41
42
43
44
|
# File 'lib/fs_api/service/base_service.rb', line 40
def create(attributes)
instance = build(attributes)
save(instance)
instance
end
|
#create_success_status_code ⇒ Object
89
90
91
|
# File 'lib/fs_api/service/base_service.rb', line 89
def create_success_status_code
201
end
|
#delete(instance) ⇒ Object
51
52
53
54
55
56
57
|
# 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) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
|
# 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)
return nil if json_response.is_a? Array
collection_class.new(json_response[resource_type].merge(from_api: true))
end
end
end
|
#instance_path(instance) ⇒ Object
23
24
25
|
# File 'lib/fs_api/service/base_service.rb', line 23
def instance_path(instance)
[path, instance.path].join
end
|
#path ⇒ Object
19
20
21
|
# File 'lib/fs_api/service/base_service.rb', line 19
def path
"/#{resource_type_plural}"
end
|
#resource_type ⇒ Object
11
12
13
|
# File 'lib/fs_api/service/base_service.rb', line 11
def resource_type
self.class.name.split('::').last.downcase
end
|
#resource_type_plural ⇒ Object
15
16
17
|
# File 'lib/fs_api/service/base_service.rb', line 15
def resource_type_plural
"#{resource_type}s"
end
|
#save(instance) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# 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 ⇒ Object
93
94
95
|
# File 'lib/fs_api/service/base_service.rb', line 93
def success_status_code
200
end
|