kentaa-api 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +1 -1
  5. data/lib/kentaa/api.rb +1 -2
  6. data/lib/kentaa/api/clients/actions.rb +5 -5
  7. data/lib/kentaa/api/clients/all.rb +1 -1
  8. data/lib/kentaa/api/clients/base.rb +0 -4
  9. data/lib/kentaa/api/clients/donations.rb +5 -5
  10. data/lib/kentaa/api/clients/newsletter_subscriptions.rb +5 -5
  11. data/lib/kentaa/api/clients/projects.rb +5 -5
  12. data/lib/kentaa/api/clients/segments.rb +5 -5
  13. data/lib/kentaa/api/clients/sites.rb +3 -3
  14. data/lib/kentaa/api/clients/teams.rb +5 -5
  15. data/lib/kentaa/api/clients/users.rb +5 -5
  16. data/lib/kentaa/api/exception.rb +14 -0
  17. data/lib/kentaa/api/finder.rb +9 -0
  18. data/lib/kentaa/api/request.rb +8 -2
  19. data/lib/kentaa/api/resources/action.rb +19 -19
  20. data/lib/kentaa/api/resources/actions.rb +8 -3
  21. data/lib/kentaa/api/resources/activity.rb +1 -3
  22. data/lib/kentaa/api/resources/address.rb +1 -3
  23. data/lib/kentaa/api/resources/banner.rb +1 -3
  24. data/lib/kentaa/api/resources/base.rb +35 -11
  25. data/lib/kentaa/api/resources/consent.rb +1 -1
  26. data/lib/kentaa/api/resources/donation.rb +16 -17
  27. data/lib/kentaa/api/resources/donations.rb +8 -3
  28. data/lib/kentaa/api/resources/{pagination.rb → list.rb} +9 -3
  29. data/lib/kentaa/api/resources/location.rb +1 -1
  30. data/lib/kentaa/api/resources/newsletter_subscription.rb +11 -10
  31. data/lib/kentaa/api/resources/newsletter_subscriptions.rb +8 -3
  32. data/lib/kentaa/api/resources/photo.rb +1 -3
  33. data/lib/kentaa/api/resources/project.rb +14 -12
  34. data/lib/kentaa/api/resources/projects.rb +8 -3
  35. data/lib/kentaa/api/resources/question.rb +1 -3
  36. data/lib/kentaa/api/resources/registration_fee.rb +1 -1
  37. data/lib/kentaa/api/resources/resource.rb +12 -3
  38. data/lib/kentaa/api/resources/reward.rb +1 -3
  39. data/lib/kentaa/api/resources/segment.rb +8 -4
  40. data/lib/kentaa/api/resources/segments.rb +8 -3
  41. data/lib/kentaa/api/resources/site.rb +8 -4
  42. data/lib/kentaa/api/resources/team.rb +15 -14
  43. data/lib/kentaa/api/resources/teams.rb +8 -3
  44. data/lib/kentaa/api/resources/user.rb +8 -4
  45. data/lib/kentaa/api/resources/users.rb +8 -3
  46. data/lib/kentaa/api/resources/video.rb +1 -3
  47. data/lib/kentaa/api/response.rb +2 -2
  48. data/lib/kentaa/api/version.rb +1 -1
  49. metadata +4 -6
  50. data/lib/kentaa/api/resources/status.rb +0 -27
@@ -3,9 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Address < Base
7
- include Kentaa::Api::Resources::Resource
8
-
6
+ class Address < Resource
9
7
  def address
10
8
  data[:address]
11
9
  end
@@ -3,9 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Banner < Base
7
- include Kentaa::Api::Resources::Resource
8
-
6
+ class Banner < Resource
9
7
  def url
10
8
  data[:url]
11
9
  end
@@ -4,29 +4,53 @@ module Kentaa
4
4
  module Api
5
5
  module Resources
6
6
  class Base
7
- attr_reader :config, :data
7
+ attr_reader :config, :options
8
8
 
9
- def initialize(config, response)
9
+ def initialize(config, options = {})
10
10
  @config = config
11
+ @options = options
12
+ end
11
13
 
12
- if response.respond_to?(:body)
13
- extend Kentaa::Api::Resources::Status
14
+ def load
15
+ @response ||= load_resource(options)
14
16
 
15
- @response = response
16
- @data = response.body[attribute_key]
17
- else
18
- @data = response
19
- end
17
+ self
18
+ end
20
19
 
21
- @data ||= {}
20
+ def loaded?
21
+ !@response.nil?
22
22
  end
23
23
 
24
24
  private
25
25
 
26
26
  def attribute_key
27
- class_name = self.class.name.split("::").last
27
+ class_name = self.class.name.split('::').last
28
28
  class_name.gsub(/([^\^])([A-Z])/, '\1_\2').downcase.to_sym
29
29
  end
30
+
31
+ def load_resource(_options)
32
+ raise NotImplementedError
33
+ end
34
+
35
+ def data
36
+ @data ||= begin
37
+ load unless loaded?
38
+
39
+ @response.body[attribute_key] || {}
40
+ end
41
+ end
42
+
43
+ def body
44
+ @body ||= begin
45
+ load unless loaded?
46
+
47
+ @response.body
48
+ end
49
+ end
50
+
51
+ def request
52
+ @request ||= Kentaa::Api::Request.new(config)
53
+ end
30
54
  end
31
55
  end
32
56
  end
@@ -3,7 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Consent < Base
6
+ class Consent < Resource
7
7
  def url
8
8
  data[:url]
9
9
  end
@@ -6,29 +6,22 @@ require 'time'
6
6
  module Kentaa
7
7
  module Api
8
8
  module Resources
9
- class Donation < Base
10
- include Kentaa::Api::Resources::Resource
11
-
9
+ class Donation < Resource
12
10
  def object_key
13
11
  "Donation_#{id}"
14
12
  end
15
13
 
16
14
  def entity
17
15
  if action_id
18
- client = Kentaa::Api::Clients::Actions.new(config)
19
- client.get(action_id)
16
+ Kentaa::Api::Resources::Action.new(config, id: action_id)
20
17
  elsif team_id
21
- client = Kentaa::Api::Clients::Teams.new(config)
22
- client.get(team_id)
18
+ Kentaa::Api::Resources::Team.new(config, id: team_id)
23
19
  elsif project_id
24
- client = Kentaa::Api::Clients::Projects.new(config)
25
- client.get(project_id)
20
+ Kentaa::Api::Resources::Project.new(config, id: project_id)
26
21
  elsif segment_id
27
- client = Kentaa::Api::Clients::Segments.new(config)
28
- client.get(segment_id)
22
+ Kentaa::Api::Resources::Segment.new(config, id: segment_id)
29
23
  else
30
- client = Kentaa::Api::Clients::Sites.new(config)
31
- client.current
24
+ Kentaa::Api::Resources::Site.new(config, id: site_id)
32
25
  end
33
26
  end
34
27
 
@@ -174,7 +167,7 @@ module Kentaa
174
167
 
175
168
  if data[:questions]
176
169
  data[:questions].each do |question|
177
- questions << Kentaa::Api::Resources::Question.new(config, question)
170
+ questions << Kentaa::Api::Resources::Question.new(config, data: question)
178
171
  end
179
172
  end
180
173
 
@@ -183,11 +176,11 @@ module Kentaa
183
176
  end
184
177
 
185
178
  def reward
186
- @reward ||= Kentaa::Api::Resources::Reward.new(config, data[:reward]) if data[:reward]
179
+ @reward ||= Kentaa::Api::Resources::Reward.new(config, data: data[:reward]) if data[:reward]
187
180
  end
188
181
 
189
182
  def address
190
- @address ||= Kentaa::Api::Resources::Address.new(config, data[:address]) if data[:address]
183
+ @address ||= Kentaa::Api::Resources::Address.new(config, data: data[:address]) if data[:address]
191
184
  end
192
185
 
193
186
  def birthday
@@ -203,7 +196,13 @@ module Kentaa
203
196
  end
204
197
 
205
198
  def consent
206
- @consent ||= Kentaa::Api::Resources::Consent.new(config, data[:consent]) if data[:consent]
199
+ @consent ||= Kentaa::Api::Resources::Consent.new(config, data: data[:consent]) if data[:consent]
200
+ end
201
+
202
+ protected
203
+
204
+ def load_resource(options)
205
+ request.get("/donations/#{id}", options)
207
206
  end
208
207
  end
209
208
  end
@@ -3,14 +3,19 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Donations < Base
6
+ class Donations < List
7
7
  include Enumerable
8
- include Kentaa::Api::Resources::Pagination
9
8
 
10
9
  def each(&block)
11
10
  donations.each(&block)
12
11
  end
13
12
 
13
+ protected
14
+
15
+ def load_resource(options)
16
+ request.get("/donations", options)
17
+ end
18
+
14
19
  private
15
20
 
16
21
  def donations
@@ -19,7 +24,7 @@ module Kentaa
19
24
 
20
25
  if data
21
26
  data.each do |donation|
22
- donations << Kentaa::Api::Resources::Donation.new(config, donation)
27
+ donations << Kentaa::Api::Resources::Donation.new(config, data: donation)
23
28
  end
24
29
  end
25
30
 
@@ -3,9 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- module Pagination
7
- attr_accessor :body
8
-
6
+ class List < Base
9
7
  def links
10
8
  body[:links]
11
9
  end
@@ -45,6 +43,14 @@ module Kentaa
45
43
  def previous_page?
46
44
  current_page && current_page > 1
47
45
  end
46
+
47
+ def next
48
+ self.class.new(config, options.merge(page: next_page)) if next_page?
49
+ end
50
+
51
+ def previous
52
+ self.class.new(config, options.merge(page: previous_page)) if previous_page?
53
+ end
48
54
  end
49
55
  end
50
56
  end
@@ -3,7 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Location < Base
6
+ class Location < Resource
7
7
  def zip_code
8
8
  data[:zip_code]
9
9
  end
@@ -3,23 +3,18 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class NewsletterSubscription < Base
7
- include Kentaa::Api::Resources::Resource
8
-
6
+ class NewsletterSubscription < Resource
9
7
  def object_key
10
8
  "NewsletterSubscription_#{id}"
11
9
  end
12
10
 
13
11
  def entity
14
12
  if project_id
15
- client = Kentaa::Api::Clients::Projects.new(config)
16
- client.get(project_id)
13
+ Kentaa::Api::Resources::Project.new(config, id: project_id)
17
14
  elsif segment_id
18
- client = Kentaa::Api::Clients::Segments.new(config)
19
- client.get(segment_id)
15
+ Kentaa::Api::Resources::Segment.new(config, id: segment_id)
20
16
  else
21
- client = Kentaa::Api::Clients::Sites.new(config)
22
- client.current
17
+ Kentaa::Api::Resources::Site.new(config, id: site_id)
23
18
  end
24
19
  end
25
20
 
@@ -64,7 +59,13 @@ module Kentaa
64
59
  end
65
60
 
66
61
  def consent
67
- @consent ||= Kentaa::Api::Resources::Consent.new(config, data[:consent]) if data[:consent]
62
+ @consent ||= Kentaa::Api::Resources::Consent.new(config, data: data[:consent]) if data[:consent]
63
+ end
64
+
65
+ protected
66
+
67
+ def load_resource(options)
68
+ request.get("/newsletter-subscriptions/#{id}", options)
68
69
  end
69
70
  end
70
71
  end
@@ -3,14 +3,19 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class NewsletterSubscriptions < Base
6
+ class NewsletterSubscriptions < List
7
7
  include Enumerable
8
- include Kentaa::Api::Resources::Pagination
9
8
 
10
9
  def each(&block)
11
10
  newsletter_subscriptions.each(&block)
12
11
  end
13
12
 
13
+ protected
14
+
15
+ def load_resource(options)
16
+ request.get("/newsletter-subscriptions", options)
17
+ end
18
+
14
19
  private
15
20
 
16
21
  def newsletter_subscriptions
@@ -19,7 +24,7 @@ module Kentaa
19
24
 
20
25
  if data
21
26
  data.each do |newsletter_subscription|
22
- newsletter_subscriptions << Kentaa::Api::Resources::NewsletterSubscription.new(config, newsletter_subscription)
27
+ newsletter_subscriptions << Kentaa::Api::Resources::NewsletterSubscription.new(config, data: newsletter_subscription)
23
28
  end
24
29
  end
25
30
 
@@ -3,9 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Photo < Base
7
- include Kentaa::Api::Resources::Resource
8
-
6
+ class Photo < Resource
9
7
  def url
10
8
  data[:url]
11
9
  end
@@ -6,20 +6,16 @@ require 'time'
6
6
  module Kentaa
7
7
  module Api
8
8
  module Resources
9
- class Project < Base
10
- include Kentaa::Api::Resources::Resource
11
-
9
+ class Project < Resource
12
10
  def object_key
13
11
  "Project_#{id}"
14
12
  end
15
13
 
16
14
  def parent
17
15
  if segment_id
18
- client = Kentaa::Api::Clients::Segments.new(config)
19
- client.get(segment_id)
16
+ Kentaa::Api::Resources::Segment.new(config, id: segment_id)
20
17
  else
21
- client = Kentaa::Api::Clients::Sites.new(config)
22
- client.current
18
+ Kentaa::Api::Resources::Site.new(config, id: site_id)
23
19
  end
24
20
  end
25
21
 
@@ -88,7 +84,7 @@ module Kentaa
88
84
  end
89
85
 
90
86
  def location
91
- @location ||= Kentaa::Api::Resources::Location.new(config, data[:location])
87
+ @location ||= Kentaa::Api::Resources::Location.new(config, data: data[:location])
92
88
  end
93
89
 
94
90
  def photos
@@ -97,7 +93,7 @@ module Kentaa
97
93
 
98
94
  if data[:photos]
99
95
  data[:photos].each do |photo|
100
- photos << Kentaa::Api::Resources::Photo.new(config, photo)
96
+ photos << Kentaa::Api::Resources::Photo.new(config, data: photo)
101
97
  end
102
98
  end
103
99
 
@@ -111,7 +107,7 @@ module Kentaa
111
107
 
112
108
  if data[:videos]
113
109
  data[:videos].each do |video|
114
- videos << Kentaa::Api::Resources::Video.new(config, video)
110
+ videos << Kentaa::Api::Resources::Video.new(config, data: video)
115
111
  end
116
112
  end
117
113
 
@@ -125,7 +121,7 @@ module Kentaa
125
121
 
126
122
  if data[:questions]
127
123
  data[:questions].each do |question|
128
- questions << Kentaa::Api::Resources::Question.new(config, question)
124
+ questions << Kentaa::Api::Resources::Question.new(config, data: question)
129
125
  end
130
126
  end
131
127
 
@@ -134,12 +130,18 @@ module Kentaa
134
130
  end
135
131
 
136
132
  def consent
137
- @consent ||= Kentaa::Api::Resources::Consent.new(config, data[:consent]) if data[:consent]
133
+ @consent ||= Kentaa::Api::Resources::Consent.new(config, data: data[:consent]) if data[:consent]
138
134
  end
139
135
 
140
136
  def external_reference
141
137
  data[:external_reference]
142
138
  end
139
+
140
+ protected
141
+
142
+ def load_resource(options)
143
+ request.get("/projects/#{id}", options)
144
+ end
143
145
  end
144
146
  end
145
147
  end
@@ -3,14 +3,19 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Projects < Base
6
+ class Projects < List
7
7
  include Enumerable
8
- include Kentaa::Api::Resources::Pagination
9
8
 
10
9
  def each(&block)
11
10
  projects.each(&block)
12
11
  end
13
12
 
13
+ protected
14
+
15
+ def load_resource(options)
16
+ request.get("/projects", options)
17
+ end
18
+
14
19
  private
15
20
 
16
21
  def projects
@@ -19,7 +24,7 @@ module Kentaa
19
24
 
20
25
  if data
21
26
  data.each do |project|
22
- projects << Kentaa::Api::Resources::Project.new(config, project)
27
+ projects << Kentaa::Api::Resources::Project.new(config, data: project)
23
28
  end
24
29
  end
25
30
 
@@ -3,9 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Question < Base
7
- include Kentaa::Api::Resources::Resource
8
-
6
+ class Question < Resource
9
7
  def question
10
8
  data[:question]
11
9
  end