kentaa-api 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +11 -11
  4. data/lib/kentaa/api.rb +4 -2
  5. data/lib/kentaa/api/client.rb +4 -0
  6. data/lib/kentaa/api/clients/actions.rb +14 -1
  7. data/lib/kentaa/api/clients/donations.rb +4 -1
  8. data/lib/kentaa/api/clients/manual_donations.rb +39 -0
  9. data/lib/kentaa/api/clients/newsletter_subscriptions.rb +4 -1
  10. data/lib/kentaa/api/clients/projects.rb +4 -1
  11. data/lib/kentaa/api/clients/segments.rb +4 -1
  12. data/lib/kentaa/api/clients/teams.rb +4 -1
  13. data/lib/kentaa/api/clients/users.rb +14 -1
  14. data/lib/kentaa/api/exception.rb +4 -0
  15. data/lib/kentaa/api/request.rb +41 -6
  16. data/lib/kentaa/api/resources/action.rb +25 -9
  17. data/lib/kentaa/api/resources/actions.rb +7 -4
  18. data/lib/kentaa/api/resources/activity.rb +11 -1
  19. data/lib/kentaa/api/resources/address.rb +7 -1
  20. data/lib/kentaa/api/resources/banner.rb +21 -1
  21. data/lib/kentaa/api/resources/base.rb +2 -2
  22. data/lib/kentaa/api/resources/consent.rb +7 -1
  23. data/lib/kentaa/api/resources/contact.rb +7 -1
  24. data/lib/kentaa/api/resources/donation.rb +6 -6
  25. data/lib/kentaa/api/resources/donations.rb +2 -4
  26. data/lib/kentaa/api/resources/error.rb +23 -0
  27. data/lib/kentaa/api/resources/list.rb +17 -0
  28. data/lib/kentaa/api/resources/location.rb +7 -1
  29. data/lib/kentaa/api/resources/manual_donation.rb +112 -0
  30. data/lib/kentaa/api/resources/manual_donations.rb +40 -0
  31. data/lib/kentaa/api/resources/newsletter_subscription.rb +3 -3
  32. data/lib/kentaa/api/resources/newsletter_subscriptions.rb +2 -4
  33. data/lib/kentaa/api/resources/photo.rb +21 -1
  34. data/lib/kentaa/api/resources/project.rb +16 -8
  35. data/lib/kentaa/api/resources/projects.rb +2 -4
  36. data/lib/kentaa/api/resources/question.rb +11 -1
  37. data/lib/kentaa/api/resources/registration_fee.rb +1 -1
  38. data/lib/kentaa/api/resources/resource.rb +31 -0
  39. data/lib/kentaa/api/resources/reward.rb +11 -1
  40. data/lib/kentaa/api/resources/segment.rb +11 -3
  41. data/lib/kentaa/api/resources/segments.rb +2 -4
  42. data/lib/kentaa/api/resources/site.rb +11 -3
  43. data/lib/kentaa/api/resources/team.rb +13 -5
  44. data/lib/kentaa/api/resources/teams.rb +2 -4
  45. data/lib/kentaa/api/resources/user.rb +11 -3
  46. data/lib/kentaa/api/resources/users.rb +7 -4
  47. data/lib/kentaa/api/resources/video.rb +21 -1
  48. data/lib/kentaa/api/response.rb +16 -2
  49. data/lib/kentaa/api/version.rb +1 -1
  50. metadata +11 -8
  51. data/lib/kentaa/api/clients/all.rb +0 -26
@@ -1,9 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'time'
4
+
3
5
  module Kentaa
4
6
  module Api
5
7
  module Resources
6
- class Photo < Resource
8
+ class Photo
9
+ attr_reader :data
10
+
11
+ def initialize(data)
12
+ @data = data
13
+ end
14
+
15
+ def id
16
+ data[:id]
17
+ end
18
+
19
+ def created_at
20
+ Time.parse(data[:created_at]) if data[:created_at]
21
+ end
22
+
23
+ def updated_at
24
+ Time.parse(data[:updated_at]) if data[:updated_at]
25
+ end
26
+
7
27
  def url
8
28
  data[:url]
9
29
  end
@@ -84,7 +84,7 @@ module Kentaa
84
84
  end
85
85
 
86
86
  def location
87
- @location ||= Kentaa::Api::Resources::Location.new(config, data: data[:location])
87
+ @location ||= Kentaa::Api::Resources::Location.new(data[:location]) if data[:location]
88
88
  end
89
89
 
90
90
  def photos
@@ -93,7 +93,7 @@ module Kentaa
93
93
 
94
94
  if data[:photos]
95
95
  data[:photos].each do |photo|
96
- photos << Kentaa::Api::Resources::Photo.new(config, data: photo)
96
+ photos << Kentaa::Api::Resources::Photo.new(photo)
97
97
  end
98
98
  end
99
99
 
@@ -107,7 +107,7 @@ module Kentaa
107
107
 
108
108
  if data[:videos]
109
109
  data[:videos].each do |video|
110
- videos << Kentaa::Api::Resources::Video.new(config, data: video)
110
+ videos << Kentaa::Api::Resources::Video.new(video)
111
111
  end
112
112
  end
113
113
 
@@ -121,7 +121,7 @@ module Kentaa
121
121
 
122
122
  if data[:questions]
123
123
  data[:questions].each do |question|
124
- questions << Kentaa::Api::Resources::Question.new(config, data: question)
124
+ questions << Kentaa::Api::Resources::Question.new(question)
125
125
  end
126
126
  end
127
127
 
@@ -130,20 +130,28 @@ module Kentaa
130
130
  end
131
131
 
132
132
  def consent
133
- @consent ||= Kentaa::Api::Resources::Consent.new(config, data: data[:consent]) if data[:consent]
133
+ @consent ||= Kentaa::Api::Resources::Consent.new(data[:consent]) if data[:consent]
134
134
  end
135
135
 
136
136
  def contact
137
- @contact ||= Kentaa::Api::Resources::Contact.new(config, data: data[:contact]) if data[:contact]
137
+ @contact ||= Kentaa::Api::Resources::Contact.new(data[:contact]) if data[:contact]
138
138
  end
139
139
 
140
140
  def external_reference
141
141
  data[:external_reference]
142
142
  end
143
143
 
144
- protected
144
+ def donations
145
+ @donations ||= Kentaa::Api::Resources::Donations.new(config, project_id: id)
146
+ end
147
+
148
+ def manual_donations
149
+ @manual_donations ||= Kentaa::Api::Resources::ManualDonations.new(config, project_id: id)
150
+ end
151
+
152
+ private
145
153
 
146
- def load_resource(options)
154
+ def load_resource
147
155
  request.get("/projects/#{id}", options)
148
156
  end
149
157
  end
@@ -10,14 +10,12 @@ module Kentaa
10
10
  projects.each(&block)
11
11
  end
12
12
 
13
- protected
13
+ private
14
14
 
15
- def load_resource(options)
15
+ def load_resource
16
16
  request.get("/projects", options)
17
17
  end
18
18
 
19
- private
20
-
21
19
  def projects
22
20
  @projects ||= begin
23
21
  projects = []
@@ -3,7 +3,17 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Question < Resource
6
+ class Question
7
+ attr_reader :data
8
+
9
+ def initialize(data)
10
+ @data = data
11
+ end
12
+
13
+ def id
14
+ data[:id]
15
+ end
16
+
7
17
  def question
8
18
  data[:question]
9
19
  end
@@ -3,7 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class RegistrationFee < Resource
6
+ class RegistrationFee
7
7
  def amount
8
8
  data[:amount]
9
9
  end
@@ -26,6 +26,23 @@ module Kentaa
26
26
  self
27
27
  end
28
28
 
29
+ def save(attributes)
30
+ if id
31
+ @response = update_resource(attributes)
32
+ else
33
+ @response = create_resource(attributes)
34
+ @id = data.fetch(:id) if data.key?(:id)
35
+ end
36
+
37
+ self
38
+ end
39
+
40
+ def delete
41
+ delete_resource
42
+
43
+ self
44
+ end
45
+
29
46
  def created_at
30
47
  Time.parse(data[:created_at]) if data[:created_at]
31
48
  end
@@ -33,6 +50,20 @@ module Kentaa
33
50
  def updated_at
34
51
  Time.parse(data[:updated_at]) if data[:updated_at]
35
52
  end
53
+
54
+ private
55
+
56
+ def create_resource
57
+ raise NotImplementedError
58
+ end
59
+
60
+ def update_resource
61
+ raise NotImplementedError
62
+ end
63
+
64
+ def delete_resource
65
+ raise NotImplementedError
66
+ end
36
67
  end
37
68
  end
38
69
  end
@@ -3,7 +3,17 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Reward < Resource
6
+ class Reward
7
+ attr_reader :data
8
+
9
+ def initialize(data)
10
+ @data = data
11
+ end
12
+
13
+ def id
14
+ data[:id]
15
+ end
16
+
7
17
  def type
8
18
  data[:type]
9
19
  end
@@ -61,7 +61,7 @@ module Kentaa
61
61
 
62
62
  if data[:banners]
63
63
  data[:banners].each do |banner|
64
- banners << Kentaa::Api::Resources::Banner.new(config, data: banner)
64
+ banners << Kentaa::Api::Resources::Banner.new(banner)
65
65
  end
66
66
  end
67
67
 
@@ -73,9 +73,17 @@ module Kentaa
73
73
  data[:external_reference]
74
74
  end
75
75
 
76
- protected
76
+ def donations
77
+ @donations ||= Kentaa::Api::Resources::Donations.new(config, segment_id: id)
78
+ end
79
+
80
+ def manual_donations
81
+ @manual_donations ||= Kentaa::Api::Resources::ManualDonations.new(config, segment_id: id)
82
+ end
83
+
84
+ private
77
85
 
78
- def load_resource(options)
86
+ def load_resource
79
87
  request.get("/segments/#{id}", options)
80
88
  end
81
89
  end
@@ -10,14 +10,12 @@ module Kentaa
10
10
  segments.each(&block)
11
11
  end
12
12
 
13
- protected
13
+ private
14
14
 
15
- def load_resource(options)
15
+ def load_resource
16
16
  request.get("/segments", options)
17
17
  end
18
18
 
19
- private
20
-
21
19
  def segments
22
20
  @segments ||= begin
23
21
  segments = []
@@ -73,7 +73,7 @@ module Kentaa
73
73
 
74
74
  if data[:banners]
75
75
  data[:banners].each do |banner|
76
- banners << Kentaa::Api::Resources::Banner.new(config, data: banner)
76
+ banners << Kentaa::Api::Resources::Banner.new(banner)
77
77
  end
78
78
  end
79
79
 
@@ -85,9 +85,17 @@ module Kentaa
85
85
  data[:external_reference]
86
86
  end
87
87
 
88
- protected
88
+ def donations
89
+ @donations ||= Kentaa::Api::Resources::Donations.new(config)
90
+ end
91
+
92
+ def manual_donations
93
+ @manual_donations ||= Kentaa::Api::Resources::ManualDonations.new(config)
94
+ end
95
+
96
+ private
89
97
 
90
- def load_resource(options)
98
+ def load_resource
91
99
  request.get("/sites/current", options)
92
100
  end
93
101
  end
@@ -117,7 +117,7 @@ module Kentaa
117
117
 
118
118
  if data[:photos]
119
119
  data[:photos].each do |photo|
120
- photos << Kentaa::Api::Resources::Photo.new(config, data: photo)
120
+ photos << Kentaa::Api::Resources::Photo.new(photo)
121
121
  end
122
122
  end
123
123
 
@@ -131,7 +131,7 @@ module Kentaa
131
131
 
132
132
  if data[:videos]
133
133
  data[:videos].each do |video|
134
- videos << Kentaa::Api::Resources::Video.new(config, data: video)
134
+ videos << Kentaa::Api::Resources::Video.new(video)
135
135
  end
136
136
  end
137
137
 
@@ -145,7 +145,7 @@ module Kentaa
145
145
 
146
146
  if data[:questions]
147
147
  data[:questions].each do |question|
148
- questions << Kentaa::Api::Resources::Question.new(config, data: question)
148
+ questions << Kentaa::Api::Resources::Question.new(question)
149
149
  end
150
150
  end
151
151
 
@@ -157,9 +157,17 @@ module Kentaa
157
157
  data[:external_reference]
158
158
  end
159
159
 
160
- protected
160
+ def donations
161
+ @donations ||= Kentaa::Api::Resources::Donations.new(config, team_id: id)
162
+ end
163
+
164
+ def manual_donations
165
+ @manual_donations ||= Kentaa::Api::Resources::ManualDonations.new(config, team_id: id)
166
+ end
167
+
168
+ private
161
169
 
162
- def load_resource(options)
170
+ def load_resource
163
171
  request.get("/teams/#{id}", options)
164
172
  end
165
173
  end
@@ -10,14 +10,12 @@ module Kentaa
10
10
  teams.each(&block)
11
11
  end
12
12
 
13
- protected
13
+ private
14
14
 
15
- def load_resource(options)
15
+ def load_resource
16
16
  request.get("/teams", options)
17
17
  end
18
18
 
19
- private
20
-
21
19
  def teams
22
20
  @teams ||= begin
23
21
  teams = []
@@ -87,14 +87,22 @@ module Kentaa
87
87
  end
88
88
 
89
89
  def consent
90
- @consent ||= Kentaa::Api::Resources::Consent.new(config, data: data[:consent]) if data[:consent]
90
+ @consent ||= Kentaa::Api::Resources::Consent.new(data[:consent]) if data[:consent]
91
91
  end
92
92
 
93
- protected
93
+ private
94
94
 
95
- def load_resource(options)
95
+ def load_resource
96
96
  request.get("/users/#{id}", options)
97
97
  end
98
+
99
+ def create_resource(attributes)
100
+ request.post("/users", options, attributes)
101
+ end
102
+
103
+ def update_resource(attributes)
104
+ request.patch("/users/#{id}", options, attributes)
105
+ end
98
106
  end
99
107
  end
100
108
  end
@@ -10,14 +10,17 @@ module Kentaa
10
10
  users.each(&block)
11
11
  end
12
12
 
13
- protected
14
-
15
- def load_resource(options)
16
- request.get("/users", options)
13
+ def create(attributes = {})
14
+ user = Kentaa::Api::Resources::User.new(config, options)
15
+ user.save(attributes)
17
16
  end
18
17
 
19
18
  private
20
19
 
20
+ def load_resource
21
+ request.get("/users", options)
22
+ end
23
+
21
24
  def users
22
25
  @users ||= begin
23
26
  users = []
@@ -1,9 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'time'
4
+
3
5
  module Kentaa
4
6
  module Api
5
7
  module Resources
6
- class Video < Resource
8
+ class Video
9
+ attr_reader :data
10
+
11
+ def initialize(data)
12
+ @data = data
13
+ end
14
+
15
+ def id
16
+ data[:id]
17
+ end
18
+
19
+ def created_at
20
+ Time.parse(data[:created_at]) if data[:created_at]
21
+ end
22
+
23
+ def updated_at
24
+ Time.parse(data[:updated_at]) if data[:updated_at]
25
+ end
26
+
7
27
  def url
8
28
  data[:url]
9
29
  end
@@ -9,11 +9,11 @@ module Kentaa
9
9
 
10
10
  def initialize(response)
11
11
  @response = response
12
- @body = parse_body(response.body)
12
+ @body = response.body ? parse_body(response.body) : {}
13
13
  end
14
14
 
15
15
  def success?
16
- (http_code == 200 || http_code == 201) && !message
16
+ (http_code == 200 || http_code == 201 || http_code == 204) && !message
17
17
  end
18
18
 
19
19
  def error?
@@ -32,6 +32,20 @@ module Kentaa
32
32
  body[:message]
33
33
  end
34
34
 
35
+ def errors
36
+ @errors ||= begin
37
+ errors = []
38
+
39
+ if body[:errors]
40
+ body[:errors].each do |error|
41
+ errors << Kentaa::Api::Resources::Error.new(error)
42
+ end
43
+ end
44
+
45
+ errors
46
+ end
47
+ end
48
+
35
49
  private
36
50
 
37
51
  def parse_body(body)