kentaa-api 0.3.0 → 0.6.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.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +23 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +21 -5
- data/Gemfile +4 -2
- data/Gemfile.lock +45 -32
- data/README.md +364 -67
- data/kentaa-api.gemspec +3 -3
- data/lib/kentaa/api.rb +9 -20
- data/lib/kentaa/api/client.rb +30 -18
- data/lib/kentaa/api/config.rb +10 -3
- data/lib/kentaa/api/exception.rb +9 -2
- data/lib/kentaa/api/request.rb +49 -5
- data/lib/kentaa/api/resources/action.rb +39 -15
- data/lib/kentaa/api/resources/activity.rb +11 -1
- data/lib/kentaa/api/resources/address.rb +7 -1
- data/lib/kentaa/api/resources/banner.rb +21 -1
- data/lib/kentaa/api/resources/base.rb +19 -6
- data/lib/kentaa/api/resources/consent.rb +7 -1
- data/lib/kentaa/api/resources/contact.rb +83 -0
- data/lib/kentaa/api/resources/donation.rb +30 -12
- data/lib/kentaa/api/resources/donation_form.rb +104 -0
- data/lib/kentaa/api/resources/error.rb +23 -0
- data/lib/kentaa/api/resources/list.rb +77 -2
- data/lib/kentaa/api/resources/location.rb +7 -1
- data/lib/kentaa/api/resources/manual_donation.rb +122 -0
- data/lib/kentaa/api/resources/newsletter_subscription.rb +16 -6
- data/lib/kentaa/api/resources/performance.rb +62 -0
- data/lib/kentaa/api/resources/photo.rb +21 -1
- data/lib/kentaa/api/resources/project.rb +37 -9
- data/lib/kentaa/api/resources/question.rb +19 -1
- data/lib/kentaa/api/resources/recurring_donor.rb +110 -0
- data/lib/kentaa/api/resources/registration_fee.rb +1 -1
- data/lib/kentaa/api/resources/resource.rb +43 -5
- data/lib/kentaa/api/resources/reward.rb +11 -1
- data/lib/kentaa/api/resources/segment.rb +35 -3
- data/lib/kentaa/api/resources/site.rb +15 -3
- data/lib/kentaa/api/{clients → resources}/sites.rb +2 -2
- data/lib/kentaa/api/resources/team.rb +22 -10
- data/lib/kentaa/api/resources/user.rb +16 -4
- data/lib/kentaa/api/resources/users.rb +5 -24
- data/lib/kentaa/api/resources/video.rb +21 -1
- data/lib/kentaa/api/response.rb +20 -2
- data/lib/kentaa/api/util.rb +13 -0
- data/lib/kentaa/api/version.rb +1 -1
- metadata +21 -30
- data/.travis.yml +0 -11
- data/lib/kentaa/api/clients/actions.rb +0 -21
- data/lib/kentaa/api/clients/all.rb +0 -26
- data/lib/kentaa/api/clients/base.rb +0 -15
- data/lib/kentaa/api/clients/donations.rb +0 -21
- data/lib/kentaa/api/clients/newsletter_subscriptions.rb +0 -21
- data/lib/kentaa/api/clients/projects.rb +0 -21
- data/lib/kentaa/api/clients/segments.rb +0 -21
- data/lib/kentaa/api/clients/teams.rb +0 -21
- data/lib/kentaa/api/clients/users.rb +0 -21
- data/lib/kentaa/api/finder.rb +0 -44
- data/lib/kentaa/api/resources/actions.rb +0 -37
- data/lib/kentaa/api/resources/donations.rb +0 -37
- data/lib/kentaa/api/resources/newsletter_subscriptions.rb +0 -37
- data/lib/kentaa/api/resources/projects.rb +0 -37
- data/lib/kentaa/api/resources/segments.rb +0 -37
- data/lib/kentaa/api/resources/teams.rb +0 -37
@@ -8,17 +8,41 @@ module Kentaa
|
|
8
8
|
class Resource < Base
|
9
9
|
attr_accessor :id
|
10
10
|
|
11
|
-
def initialize(config, options
|
11
|
+
def initialize(config, id: nil, data: nil, options: {})
|
12
12
|
super(config, options)
|
13
13
|
|
14
|
-
if
|
15
|
-
@data =
|
14
|
+
if data
|
15
|
+
@data = data || {}
|
16
16
|
@id = @data.fetch(:id) if @data.key?(:id)
|
17
|
-
elsif
|
18
|
-
@id =
|
17
|
+
elsif id
|
18
|
+
@id = id
|
19
19
|
end
|
20
20
|
end
|
21
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
|
44
|
+
end
|
45
|
+
|
22
46
|
def created_at
|
23
47
|
Time.parse(data[:created_at]) if data[:created_at]
|
24
48
|
end
|
@@ -26,6 +50,20 @@ module Kentaa
|
|
26
50
|
def updated_at
|
27
51
|
Time.parse(data[:updated_at]) if data[:updated_at]
|
28
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
|
29
67
|
end
|
30
68
|
end
|
31
69
|
end
|
@@ -11,6 +11,14 @@ module Kentaa
|
|
11
11
|
"Segment_#{id}"
|
12
12
|
end
|
13
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
|
+
|
14
22
|
def site_id
|
15
23
|
data[:site_id]
|
16
24
|
end
|
@@ -61,7 +69,7 @@ module Kentaa
|
|
61
69
|
|
62
70
|
if data[:banners]
|
63
71
|
data[:banners].each do |banner|
|
64
|
-
banners << Kentaa::Api::Resources::Banner.new(
|
72
|
+
banners << Kentaa::Api::Resources::Banner.new(banner)
|
65
73
|
end
|
66
74
|
end
|
67
75
|
|
@@ -73,9 +81,33 @@ module Kentaa
|
|
73
81
|
data[:external_reference]
|
74
82
|
end
|
75
83
|
|
76
|
-
|
84
|
+
def actions
|
85
|
+
@actions ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Action, endpoint_path: "/segments/#{id}/actions")
|
86
|
+
end
|
87
|
+
|
88
|
+
def teams
|
89
|
+
@teams ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Team, endpoint_path: "/segments/#{id}/teams")
|
90
|
+
end
|
91
|
+
|
92
|
+
def projects
|
93
|
+
@projects ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Project, endpoint_path: "/segments/#{id}/projects")
|
94
|
+
end
|
95
|
+
|
96
|
+
def donations
|
97
|
+
@donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Donation, endpoint_path: "/segments/#{id}/donations")
|
98
|
+
end
|
99
|
+
|
100
|
+
def manual_donations
|
101
|
+
@manual_donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::ManualDonation, endpoint_path: "/segments/#{id}/manual-donations")
|
102
|
+
end
|
103
|
+
|
104
|
+
def newsletter_subscriptions
|
105
|
+
@newsletter_subscriptions ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::NewsletterSubscription, endpoint_path: "/segments/#{id}/newsletter-subscriptions")
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
77
109
|
|
78
|
-
def load_resource
|
110
|
+
def load_resource
|
79
111
|
request.get("/segments/#{id}", options)
|
80
112
|
end
|
81
113
|
end
|
@@ -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(
|
76
|
+
banners << Kentaa::Api::Resources::Banner.new(banner)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -85,9 +85,21 @@ module Kentaa
|
|
85
85
|
data[:external_reference]
|
86
86
|
end
|
87
87
|
|
88
|
-
|
88
|
+
def donations
|
89
|
+
@donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Donation, endpoint_path: "/donations")
|
90
|
+
end
|
91
|
+
|
92
|
+
def manual_donations
|
93
|
+
@manual_donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::ManualDonation, endpoint_path: "/manual-donations")
|
94
|
+
end
|
95
|
+
|
96
|
+
def newsletter_subscriptions
|
97
|
+
@newsletter_subscriptions ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::NewsletterSubscription, endpoint_path: "/newsletter-subscriptions")
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
89
101
|
|
90
|
-
def load_resource
|
102
|
+
def load_resource
|
91
103
|
request.get("/sites/current", options)
|
92
104
|
end
|
93
105
|
end
|
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
module Kentaa
|
4
4
|
module Api
|
5
|
-
module
|
5
|
+
module Resources
|
6
6
|
class Sites < Base
|
7
7
|
def current(options = {})
|
8
|
-
site = Kentaa::Api::Resources::Site.new(config, options)
|
8
|
+
site = Kentaa::Api::Resources::Site.new(config, options: options)
|
9
9
|
site.load
|
10
10
|
end
|
11
11
|
end
|
@@ -13,14 +13,18 @@ module Kentaa
|
|
13
13
|
|
14
14
|
def parent
|
15
15
|
if project_id
|
16
|
-
Kentaa::Api::Resources::Project.new(config, id: project_id)
|
16
|
+
Kentaa::Api::Resources::Project.new(config, id: project_id, options: options)
|
17
17
|
elsif segment_id
|
18
|
-
Kentaa::Api::Resources::Segment.new(config, id: segment_id)
|
18
|
+
Kentaa::Api::Resources::Segment.new(config, id: segment_id, options: options)
|
19
19
|
else
|
20
|
-
Kentaa::Api::Resources::Site.new(config, id: site_id)
|
20
|
+
Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
def site
|
25
|
+
Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
|
26
|
+
end
|
27
|
+
|
24
28
|
def slug
|
25
29
|
data[:slug]
|
26
30
|
end
|
@@ -38,7 +42,7 @@ module Kentaa
|
|
38
42
|
end
|
39
43
|
|
40
44
|
def owner
|
41
|
-
@owner ||= Kentaa::Api::Resources::User.new(config, data: data[:owner])
|
45
|
+
@owner ||= Kentaa::Api::Resources::User.new(config, data: data[:owner], options: options)
|
42
46
|
end
|
43
47
|
|
44
48
|
def members
|
@@ -47,7 +51,7 @@ module Kentaa
|
|
47
51
|
|
48
52
|
if data[:members]
|
49
53
|
data[:members].each do |member|
|
50
|
-
members << Kentaa::Api::Resources::Action.new(config, data: member)
|
54
|
+
members << Kentaa::Api::Resources::Action.new(config, data: member, options: options)
|
51
55
|
end
|
52
56
|
end
|
53
57
|
|
@@ -117,7 +121,7 @@ module Kentaa
|
|
117
121
|
|
118
122
|
if data[:photos]
|
119
123
|
data[:photos].each do |photo|
|
120
|
-
photos << Kentaa::Api::Resources::Photo.new(
|
124
|
+
photos << Kentaa::Api::Resources::Photo.new(photo)
|
121
125
|
end
|
122
126
|
end
|
123
127
|
|
@@ -131,7 +135,7 @@ module Kentaa
|
|
131
135
|
|
132
136
|
if data[:videos]
|
133
137
|
data[:videos].each do |video|
|
134
|
-
videos << Kentaa::Api::Resources::Video.new(
|
138
|
+
videos << Kentaa::Api::Resources::Video.new(video)
|
135
139
|
end
|
136
140
|
end
|
137
141
|
|
@@ -145,7 +149,7 @@ module Kentaa
|
|
145
149
|
|
146
150
|
if data[:questions]
|
147
151
|
data[:questions].each do |question|
|
148
|
-
questions << Kentaa::Api::Resources::Question.new(
|
152
|
+
questions << Kentaa::Api::Resources::Question.new(question)
|
149
153
|
end
|
150
154
|
end
|
151
155
|
|
@@ -157,9 +161,17 @@ module Kentaa
|
|
157
161
|
data[:external_reference]
|
158
162
|
end
|
159
163
|
|
160
|
-
|
164
|
+
def donations
|
165
|
+
@donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Donation, endpoint_path: "/teams/#{id}/donations")
|
166
|
+
end
|
167
|
+
|
168
|
+
def manual_donations
|
169
|
+
@manual_donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::ManualDonation, endpoint_path: "/teams/#{id}/manual-donations")
|
170
|
+
end
|
171
|
+
|
172
|
+
private
|
161
173
|
|
162
|
-
def load_resource
|
174
|
+
def load_resource
|
163
175
|
request.get("/teams/#{id}", options)
|
164
176
|
end
|
165
177
|
end
|
@@ -10,6 +10,10 @@ module Kentaa
|
|
10
10
|
"User_#{id}"
|
11
11
|
end
|
12
12
|
|
13
|
+
def site
|
14
|
+
Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
|
15
|
+
end
|
16
|
+
|
13
17
|
def site_id
|
14
18
|
data[:site_id]
|
15
19
|
end
|
@@ -75,7 +79,7 @@ module Kentaa
|
|
75
79
|
end
|
76
80
|
|
77
81
|
def birthday
|
78
|
-
|
82
|
+
Date.parse(data[:birthday]) if data[:birthday]
|
79
83
|
end
|
80
84
|
|
81
85
|
def gender
|
@@ -87,14 +91,22 @@ module Kentaa
|
|
87
91
|
end
|
88
92
|
|
89
93
|
def consent
|
90
|
-
@consent ||= Kentaa::Api::Resources::Consent.new(
|
94
|
+
@consent ||= Kentaa::Api::Resources::Consent.new(data[:consent]) if data[:consent]
|
91
95
|
end
|
92
96
|
|
93
|
-
|
97
|
+
private
|
94
98
|
|
95
|
-
def load_resource
|
99
|
+
def load_resource
|
96
100
|
request.get("/users/#{id}", options)
|
97
101
|
end
|
102
|
+
|
103
|
+
def create_resource(attributes)
|
104
|
+
request.post("/users", options, attributes)
|
105
|
+
end
|
106
|
+
|
107
|
+
def update_resource(attributes)
|
108
|
+
request.patch("/users/#{id}", options, attributes)
|
109
|
+
end
|
98
110
|
end
|
99
111
|
end
|
100
112
|
end
|
@@ -4,32 +4,13 @@ module Kentaa
|
|
4
4
|
module Api
|
5
5
|
module Resources
|
6
6
|
class Users < List
|
7
|
-
|
8
|
-
|
9
|
-
def each(&block)
|
10
|
-
users.each(&block)
|
11
|
-
end
|
12
|
-
|
13
|
-
protected
|
14
|
-
|
15
|
-
def load_resource(options)
|
16
|
-
request.get("/users", options)
|
7
|
+
def initialize(config, options = {})
|
8
|
+
super(config, options.merge(resource_class: Kentaa::Api::Resources::User, endpoint_path: "/users"))
|
17
9
|
end
|
18
10
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@users ||= begin
|
23
|
-
users = []
|
24
|
-
|
25
|
-
if data
|
26
|
-
data.each do |user|
|
27
|
-
users << Kentaa::Api::Resources::User.new(config, data: user)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
users
|
32
|
-
end
|
11
|
+
def auth(attributes, options = {})
|
12
|
+
resource = resource_class.new(config, options: options)
|
13
|
+
resource.load { request.post("#{endpoint_path}/auth", options, attributes) }
|
33
14
|
end
|
34
15
|
end
|
35
16
|
end
|
@@ -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
|
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
|
data/lib/kentaa/api/response.rb
CHANGED
@@ -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?
|
@@ -24,10 +24,28 @@ module Kentaa
|
|
24
24
|
response.code.to_i
|
25
25
|
end
|
26
26
|
|
27
|
+
def request_uri
|
28
|
+
response.uri
|
29
|
+
end
|
30
|
+
|
27
31
|
def message
|
28
32
|
body[:message]
|
29
33
|
end
|
30
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
|
+
|
31
49
|
private
|
32
50
|
|
33
51
|
def parse_body(body)
|