kentaa-api 0.2.1 → 0.5.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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +22 -4
  4. data/.travis.yml +5 -5
  5. data/Gemfile +4 -2
  6. data/Gemfile.lock +33 -20
  7. data/README.md +320 -66
  8. data/kentaa-api.gemspec +3 -3
  9. data/lib/kentaa/api.rb +12 -4
  10. data/lib/kentaa/api/client.rb +12 -0
  11. data/lib/kentaa/api/clients/actions.rb +19 -6
  12. data/lib/kentaa/api/clients/base.rb +0 -4
  13. data/lib/kentaa/api/clients/donation_forms.rb +24 -0
  14. data/lib/kentaa/api/clients/donations.rb +9 -6
  15. data/lib/kentaa/api/clients/manual_donations.rb +39 -0
  16. data/lib/kentaa/api/clients/newsletter_subscriptions.rb +9 -6
  17. data/lib/kentaa/api/clients/projects.rb +9 -6
  18. data/lib/kentaa/api/clients/recurring_donors.rb +24 -0
  19. data/lib/kentaa/api/clients/segments.rb +9 -6
  20. data/lib/kentaa/api/clients/sites.rb +3 -3
  21. data/lib/kentaa/api/clients/teams.rb +9 -6
  22. data/lib/kentaa/api/clients/users.rb +24 -6
  23. data/lib/kentaa/api/config.rb +4 -0
  24. data/lib/kentaa/api/exception.rb +21 -0
  25. data/lib/kentaa/api/finder.rb +9 -0
  26. data/lib/kentaa/api/request.rb +55 -5
  27. data/lib/kentaa/api/resources/action.rb +40 -20
  28. data/lib/kentaa/api/resources/actions.rb +11 -3
  29. data/lib/kentaa/api/resources/activity.rb +10 -2
  30. data/lib/kentaa/api/resources/address.rb +6 -2
  31. data/lib/kentaa/api/resources/banner.rb +20 -2
  32. data/lib/kentaa/api/resources/base.rb +35 -11
  33. data/lib/kentaa/api/resources/consent.rb +7 -1
  34. data/lib/kentaa/api/resources/contact.rb +83 -0
  35. data/lib/kentaa/api/resources/donation.rb +35 -18
  36. data/lib/kentaa/api/resources/donation_form.rb +100 -0
  37. data/lib/kentaa/api/resources/donation_forms.rb +35 -0
  38. data/lib/kentaa/api/resources/donations.rb +6 -3
  39. data/lib/kentaa/api/resources/error.rb +23 -0
  40. data/lib/kentaa/api/resources/{pagination.rb → list.rb} +26 -3
  41. data/lib/kentaa/api/resources/location.rb +7 -1
  42. data/lib/kentaa/api/resources/manual_donation.rb +122 -0
  43. data/lib/kentaa/api/resources/manual_donations.rb +40 -0
  44. data/lib/kentaa/api/resources/newsletter_subscription.rb +21 -10
  45. data/lib/kentaa/api/resources/newsletter_subscriptions.rb +6 -3
  46. data/lib/kentaa/api/resources/photo.rb +20 -2
  47. data/lib/kentaa/api/resources/project.rb +34 -12
  48. data/lib/kentaa/api/resources/projects.rb +6 -3
  49. data/lib/kentaa/api/resources/question.rb +18 -2
  50. data/lib/kentaa/api/resources/recurring_donor.rb +110 -0
  51. data/lib/kentaa/api/resources/recurring_donors.rb +35 -0
  52. data/lib/kentaa/api/resources/registration_fee.rb +1 -1
  53. data/lib/kentaa/api/resources/resource.rb +50 -3
  54. data/lib/kentaa/api/resources/reward.rb +10 -2
  55. data/lib/kentaa/api/resources/segment.rb +28 -4
  56. data/lib/kentaa/api/resources/segments.rb +6 -3
  57. data/lib/kentaa/api/resources/site.rb +20 -4
  58. data/lib/kentaa/api/resources/team.rb +27 -14
  59. data/lib/kentaa/api/resources/teams.rb +6 -3
  60. data/lib/kentaa/api/resources/user.rb +27 -5
  61. data/lib/kentaa/api/resources/users.rb +16 -3
  62. data/lib/kentaa/api/resources/video.rb +20 -2
  63. data/lib/kentaa/api/response.rb +21 -3
  64. data/lib/kentaa/api/version.rb +1 -1
  65. metadata +24 -16
  66. data/lib/kentaa/api/clients/all.rb +0 -26
  67. data/lib/kentaa/api/resources/status.rb +0 -27
@@ -3,7 +3,7 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class RegistrationFee < Base
6
+ class RegistrationFee
7
7
  def amount
8
8
  data[:amount]
9
9
  end
@@ -5,9 +5,42 @@ require 'time'
5
5
  module Kentaa
6
6
  module Api
7
7
  module Resources
8
- module Resource
9
- def id
10
- data[:id]
8
+ class Resource < Base
9
+ attr_accessor :id
10
+
11
+ def initialize(config, id: nil, data: nil, options: {})
12
+ super(config, options)
13
+
14
+ if data
15
+ @data = data || {}
16
+ @id = @data.fetch(:id) if @data.key?(:id)
17
+ elsif id
18
+ @id = id
19
+ end
20
+ end
21
+
22
+ def load
23
+ super
24
+ @id = data.fetch(:id) if data.key?(:id)
25
+
26
+ self
27
+ end
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
+ nil
11
44
  end
12
45
 
13
46
  def created_at
@@ -17,6 +50,20 @@ module Kentaa
17
50
  def updated_at
18
51
  Time.parse(data[:updated_at]) if data[:updated_at]
19
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
20
67
  end
21
68
  end
22
69
  end
@@ -3,8 +3,16 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Reward < Base
7
- include Kentaa::Api::Resources::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
8
16
 
9
17
  def type
10
18
  data[:type]
@@ -6,13 +6,19 @@ require 'time'
6
6
  module Kentaa
7
7
  module Api
8
8
  module Resources
9
- class Segment < Base
10
- include Kentaa::Api::Resources::Resource
11
-
9
+ class Segment < Resource
12
10
  def object_key
13
11
  "Segment_#{id}"
14
12
  end
15
13
 
14
+ def parent
15
+ site
16
+ end
17
+
18
+ def site
19
+ Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
20
+ end
21
+
16
22
  def site_id
17
23
  data[:site_id]
18
24
  end
@@ -63,7 +69,7 @@ module Kentaa
63
69
 
64
70
  if data[:banners]
65
71
  data[:banners].each do |banner|
66
- banners << Kentaa::Api::Resources::Banner.new(config, banner)
72
+ banners << Kentaa::Api::Resources::Banner.new(banner)
67
73
  end
68
74
  end
69
75
 
@@ -74,6 +80,24 @@ module Kentaa
74
80
  def external_reference
75
81
  data[:external_reference]
76
82
  end
83
+
84
+ def donations
85
+ @donations ||= Kentaa::Api::Resources::Donations.new(config, segment_id: id)
86
+ end
87
+
88
+ def manual_donations
89
+ @manual_donations ||= Kentaa::Api::Resources::ManualDonations.new(config, segment_id: id)
90
+ end
91
+
92
+ def newsletter_subscriptions
93
+ @newsletter_subscriptions ||= Kentaa::Api::Resources::NewsletterSubscriptions.new(config, segment_id: id)
94
+ end
95
+
96
+ private
97
+
98
+ def load_resource
99
+ request.get("/segments/#{id}", options)
100
+ end
77
101
  end
78
102
  end
79
103
  end
@@ -3,9 +3,8 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Segments < Base
6
+ class Segments < List
7
7
  include Enumerable
8
- include Kentaa::Api::Resources::Pagination
9
8
 
10
9
  def each(&block)
11
10
  segments.each(&block)
@@ -13,13 +12,17 @@ module Kentaa
13
12
 
14
13
  private
15
14
 
15
+ def load_resource
16
+ request.get("/segments", options)
17
+ end
18
+
16
19
  def segments
17
20
  @segments ||= begin
18
21
  segments = []
19
22
 
20
23
  if data
21
24
  data.each do |segment|
22
- segments << Kentaa::Api::Resources::Segment.new(config, segment)
25
+ segments << Kentaa::Api::Resources::Segment.new(config, data: segment, options: options)
23
26
  end
24
27
  end
25
28
 
@@ -6,9 +6,7 @@ require 'time'
6
6
  module Kentaa
7
7
  module Api
8
8
  module Resources
9
- class Site < Base
10
- include Kentaa::Api::Resources::Resource
11
-
9
+ class Site < Resource
12
10
  def object_key
13
11
  "Site_#{id}"
14
12
  end
@@ -75,7 +73,7 @@ module Kentaa
75
73
 
76
74
  if data[:banners]
77
75
  data[:banners].each do |banner|
78
- banners << Kentaa::Api::Resources::Banner.new(config, banner)
76
+ banners << Kentaa::Api::Resources::Banner.new(banner)
79
77
  end
80
78
  end
81
79
 
@@ -86,6 +84,24 @@ module Kentaa
86
84
  def external_reference
87
85
  data[:external_reference]
88
86
  end
87
+
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
+ def newsletter_subscriptions
97
+ @newsletter_subscriptions ||= Kentaa::Api::Resources::NewsletterSubscriptions.new(config)
98
+ end
99
+
100
+ private
101
+
102
+ def load_resource
103
+ request.get("/sites/current", options)
104
+ end
89
105
  end
90
106
  end
91
107
  end
@@ -6,26 +6,25 @@ require 'time'
6
6
  module Kentaa
7
7
  module Api
8
8
  module Resources
9
- class Team < Base
10
- include Kentaa::Api::Resources::Resource
11
-
9
+ class Team < Resource
12
10
  def object_key
13
11
  "Team_#{id}"
14
12
  end
15
13
 
16
14
  def parent
17
15
  if project_id
18
- client = Kentaa::Api::Clients::Projects.new(config)
19
- client.get(project_id)
16
+ Kentaa::Api::Resources::Project.new(config, id: project_id, options: options)
20
17
  elsif segment_id
21
- client = Kentaa::Api::Clients::Segments.new(config)
22
- client.get(segment_id)
18
+ Kentaa::Api::Resources::Segment.new(config, id: segment_id, options: options)
23
19
  else
24
- client = Kentaa::Api::Clients::Sites.new(config)
25
- client.current
20
+ Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
26
21
  end
27
22
  end
28
23
 
24
+ def site
25
+ Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
26
+ end
27
+
29
28
  def slug
30
29
  data[:slug]
31
30
  end
@@ -43,7 +42,7 @@ module Kentaa
43
42
  end
44
43
 
45
44
  def owner
46
- @owner ||= Kentaa::Api::Resources::User.new(config, data[:owner])
45
+ @owner ||= Kentaa::Api::Resources::User.new(config, data: data[:owner], options: options)
47
46
  end
48
47
 
49
48
  def members
@@ -52,7 +51,7 @@ module Kentaa
52
51
 
53
52
  if data[:members]
54
53
  data[:members].each do |member|
55
- members << Kentaa::Api::Resources::Action.new(config, member)
54
+ members << Kentaa::Api::Resources::Action.new(config, data: member, options: options)
56
55
  end
57
56
  end
58
57
 
@@ -122,7 +121,7 @@ module Kentaa
122
121
 
123
122
  if data[:photos]
124
123
  data[:photos].each do |photo|
125
- photos << Kentaa::Api::Resources::Photo.new(config, photo)
124
+ photos << Kentaa::Api::Resources::Photo.new(photo)
126
125
  end
127
126
  end
128
127
 
@@ -136,7 +135,7 @@ module Kentaa
136
135
 
137
136
  if data[:videos]
138
137
  data[:videos].each do |video|
139
- videos << Kentaa::Api::Resources::Video.new(config, video)
138
+ videos << Kentaa::Api::Resources::Video.new(video)
140
139
  end
141
140
  end
142
141
 
@@ -150,7 +149,7 @@ module Kentaa
150
149
 
151
150
  if data[:questions]
152
151
  data[:questions].each do |question|
153
- questions << Kentaa::Api::Resources::Question.new(config, question)
152
+ questions << Kentaa::Api::Resources::Question.new(question)
154
153
  end
155
154
  end
156
155
 
@@ -161,6 +160,20 @@ module Kentaa
161
160
  def external_reference
162
161
  data[:external_reference]
163
162
  end
163
+
164
+ def donations
165
+ @donations ||= Kentaa::Api::Resources::Donations.new(config, team_id: id)
166
+ end
167
+
168
+ def manual_donations
169
+ @manual_donations ||= Kentaa::Api::Resources::ManualDonations.new(config, team_id: id)
170
+ end
171
+
172
+ private
173
+
174
+ def load_resource
175
+ request.get("/teams/#{id}", options)
176
+ end
164
177
  end
165
178
  end
166
179
  end
@@ -3,9 +3,8 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Teams < Base
6
+ class Teams < List
7
7
  include Enumerable
8
- include Kentaa::Api::Resources::Pagination
9
8
 
10
9
  def each(&block)
11
10
  teams.each(&block)
@@ -13,13 +12,17 @@ module Kentaa
13
12
 
14
13
  private
15
14
 
15
+ def load_resource
16
+ request.get("/teams", options)
17
+ end
18
+
16
19
  def teams
17
20
  @teams ||= begin
18
21
  teams = []
19
22
 
20
23
  if data
21
24
  data.each do |team|
22
- teams << Kentaa::Api::Resources::Team.new(config, team)
25
+ teams << Kentaa::Api::Resources::Team.new(config, data: team, options: options)
23
26
  end
24
27
  end
25
28
 
@@ -5,13 +5,15 @@ require 'time'
5
5
  module Kentaa
6
6
  module Api
7
7
  module Resources
8
- class User < Base
9
- include Kentaa::Api::Resources::Resource
10
-
8
+ class User < Resource
11
9
  def object_key
12
10
  "User_#{id}"
13
11
  end
14
12
 
13
+ def site
14
+ Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
15
+ end
16
+
15
17
  def site_id
16
18
  data[:site_id]
17
19
  end
@@ -77,7 +79,7 @@ module Kentaa
77
79
  end
78
80
 
79
81
  def birthday
80
- Time.parse(data[:birthday]) if data[:birthday]
82
+ Date.parse(data[:birthday]) if data[:birthday]
81
83
  end
82
84
 
83
85
  def gender
@@ -89,7 +91,27 @@ module Kentaa
89
91
  end
90
92
 
91
93
  def consent
92
- @consent ||= Kentaa::Api::Resources::Consent.new(config, data[:consent]) if data[:consent]
94
+ @consent ||= Kentaa::Api::Resources::Consent.new(data[:consent]) if data[:consent]
95
+ end
96
+
97
+ def auth(attributes)
98
+ @response = request.post("/users/auth", options, attributes)
99
+
100
+ self
101
+ end
102
+
103
+ private
104
+
105
+ def load_resource
106
+ request.get("/users/#{id}", options)
107
+ end
108
+
109
+ def create_resource(attributes)
110
+ request.post("/users", options, attributes)
111
+ end
112
+
113
+ def update_resource(attributes)
114
+ request.patch("/users/#{id}", options, attributes)
93
115
  end
94
116
  end
95
117
  end
@@ -3,23 +3,36 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  module Resources
6
- class Users < Base
6
+ class Users < List
7
7
  include Enumerable
8
- include Kentaa::Api::Resources::Pagination
9
8
 
10
9
  def each(&block)
11
10
  users.each(&block)
12
11
  end
13
12
 
13
+ def create(attributes = {})
14
+ user = Kentaa::Api::Resources::User.new(config, options: options)
15
+ user.save(attributes)
16
+ end
17
+
18
+ def auth(attributes = {})
19
+ user = Kentaa::Api::Resources::User.new(config, options: options)
20
+ user.auth(attributes)
21
+ end
22
+
14
23
  private
15
24
 
25
+ def load_resource
26
+ request.get("/users", options)
27
+ end
28
+
16
29
  def users
17
30
  @users ||= begin
18
31
  users = []
19
32
 
20
33
  if data
21
34
  data.each do |user|
22
- users << Kentaa::Api::Resources::User.new(config, user)
35
+ users << Kentaa::Api::Resources::User.new(config, data: user, options: options)
23
36
  end
24
37
  end
25
38