kentaa-api 0.2.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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