Class: Badgeapi::BadgeapiObject
- Inherits:
-
Object
- Object
- Badgeapi::BadgeapiObject
show all
- Defined in:
- lib/badgeapi/badgeapi_object.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.all(params = {}) ⇒ Object
95
96
97
|
# File 'lib/badgeapi/badgeapi_object.rb', line 95
def all params = {}
request "get", "#{Badgeapi.api_url}/#{collection_path}", params
end
|
.collection_name ⇒ Object
Also known as:
collection_path
8
9
10
|
# File 'lib/badgeapi/badgeapi_object.rb', line 8
def collection_name
name.demodulize.pluralize.underscore
end
|
.create(params = {}) ⇒ Object
99
100
101
|
# File 'lib/badgeapi/badgeapi_object.rb', line 99
def create params={}
request "post", "#{Badgeapi.api_url}/#{collection_path}", member_name => params
end
|
.destroy(id) ⇒ Object
107
108
109
|
# File 'lib/badgeapi/badgeapi_object.rb', line 107
def destroy(id)
request "delete", "#{Badgeapi.api_url}/#{collection_path}/#{id}"
end
|
.find(id, params = {}) ⇒ Object
91
92
93
|
# File 'lib/badgeapi/badgeapi_object.rb', line 91
def find id, params ={}
request "get", "#{Badgeapi.api_url}/#{collection_path}/#{id}", params
end
|
.from_response(response) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/badgeapi/badgeapi_object.rb', line 27
def from_response response
attributes = JSON.parse(response.body)
if attributes.include?("error")
handle_api_error attributes
else
if attributes.class == Array
attributes.map do |attributes|
map_json_to_object(attributes)
end
else
map_json_to_object attributes
end
end
end
|
.map_json_to_object(attributes) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/badgeapi/badgeapi_object.rb', line 52
def map_json_to_object attributes
if attributes['object'] != nil
record = object_classes.fetch(attributes['object'].singularize).new
else
record = new
end
attributes.each do |name, value|
if object_classes.has_key?(name) || object_classes.has_key?(name.singularize)
child = map_related_object object_classes.fetch(name.singularize), value
record.instance_variable_set "@#{name}", child
else
record.instance_variable_set "@#{name}", value
end
end
record
end
|
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/badgeapi/badgeapi_object.rb', line 70
def map_related_object object, attributes
if attributes.class == Array
attributes.map do |attributes|
map_related_object object, attributes
end
else
record = object.new
attributes.each do |name, value|
if value.class == Array && value.count > 0
if object_classes.has_key?(name) || object_classes.has_key?(name.singularize)
child = map_related_object object_classes.fetch(name.singularize), value
record.instance_variable_set "@#{name}", child
end
else
record.instance_variable_set "@#{name}", value
end
end
record
end
end
|
.member_name ⇒ Object
13
14
15
|
# File 'lib/badgeapi/badgeapi_object.rb', line 13
def member_name
name.demodulize.underscore
end
|
.object_classes ⇒ Object
43
44
45
46
47
48
49
50
|
# File 'lib/badgeapi/badgeapi_object.rb', line 43
def object_classes
@object_classes ||= {
'recipient' => Recipient,
'collection' => Collection,
'badge'=> Badge,
'required_badge'=>Badge
}
end
|
.request(method, url, params = {}) ⇒ Object
17
18
19
20
21
22
23
24
25
|
# File 'lib/badgeapi/badgeapi_object.rb', line 17
def request method, url, params={}
connection = Faraday.new(:ssl => {
:ca_file => Badgeapi.ssl_ca_cert
})
connection.token_auth(Badgeapi.api_key)
from_response connection.send(method, url, params)
end
|
.update(id, params = {}) ⇒ Object
103
104
105
|
# File 'lib/badgeapi/badgeapi_object.rb', line 103
def update id, params = {}
request "patch", "#{Badgeapi.api_url}/#{collection_path}/#{id}", member_name => params
end
|
Instance Method Details
#inspect ⇒ Object
113
114
115
116
|
# File 'lib/badgeapi/badgeapi_object.rb', line 113
def inspect
id_as_string = (self.respond_to?(:id) && !self.id.nil?) ? " id=#{self.id}" : ""
"#<#{self.class}:0x#{self.object_id.to_s(16)}#{id_as_string}> JSON: " + self.to_json
end
|
#save ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/badgeapi/badgeapi_object.rb', line 118
def save
params = JSON.parse(self.to_json)
params.delete("id")
params.delete("created_at")
params.delete("updated_at")
params.delete("points")
params.delete("total_points_available")
params.delete("badge_count")
params.delete("object")
self.class.request "patch", "#{Badgeapi.api_url}/#{self.class.collection_path}/#{id}", self.class.member_name => params
end
|