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
data/kentaa-api.gemspec
CHANGED
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
-
spec.required_ruby_version = ">= 2.
|
24
|
+
spec.required_ruby_version = ">= 2.4.0"
|
25
25
|
|
26
|
-
spec.add_development_dependency "bundler", "~>
|
27
|
-
spec.add_development_dependency "rake", "~>
|
26
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
27
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
28
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
29
29
|
spec.add_development_dependency "webmock", "~> 2.3", ">= 2.3.2"
|
30
30
|
end
|
data/lib/kentaa/api.rb
CHANGED
@@ -1,43 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "api/clients/base"
|
4
|
-
require_relative "api/clients/all"
|
5
|
-
|
6
|
-
require_relative "api/clients/actions"
|
7
|
-
require_relative "api/clients/donations"
|
8
|
-
require_relative "api/clients/newsletter_subscriptions"
|
9
|
-
require_relative "api/clients/projects"
|
10
|
-
require_relative "api/clients/segments"
|
11
|
-
require_relative "api/clients/sites"
|
12
|
-
require_relative "api/clients/teams"
|
13
|
-
require_relative "api/clients/users"
|
14
|
-
|
15
3
|
require_relative "api/resources/base"
|
4
|
+
require_relative "api/resources/error"
|
16
5
|
require_relative "api/resources/list"
|
17
6
|
require_relative "api/resources/resource"
|
18
7
|
|
19
8
|
require_relative "api/resources/action"
|
20
|
-
require_relative "api/resources/actions"
|
21
9
|
require_relative "api/resources/activity"
|
22
10
|
require_relative "api/resources/address"
|
23
11
|
require_relative "api/resources/banner"
|
24
12
|
require_relative "api/resources/consent"
|
13
|
+
require_relative "api/resources/contact"
|
14
|
+
require_relative "api/resources/donation_form"
|
25
15
|
require_relative "api/resources/donation"
|
26
|
-
require_relative "api/resources/donations"
|
27
16
|
require_relative "api/resources/location"
|
17
|
+
require_relative "api/resources/manual_donation"
|
28
18
|
require_relative "api/resources/newsletter_subscription"
|
29
|
-
require_relative "api/resources/
|
19
|
+
require_relative "api/resources/performance"
|
30
20
|
require_relative "api/resources/photo"
|
31
21
|
require_relative "api/resources/project"
|
32
|
-
require_relative "api/resources/
|
33
|
-
require_relative "api/resources/question"
|
22
|
+
require_relative "api/resources/recurring_donor"
|
34
23
|
require_relative "api/resources/registration_fee"
|
35
24
|
require_relative "api/resources/reward"
|
25
|
+
require_relative "api/resources/question"
|
36
26
|
require_relative "api/resources/segment"
|
37
|
-
require_relative "api/resources/segments"
|
38
27
|
require_relative "api/resources/site"
|
28
|
+
require_relative "api/resources/sites"
|
39
29
|
require_relative "api/resources/team"
|
40
|
-
require_relative "api/resources/teams"
|
41
30
|
require_relative "api/resources/user"
|
42
31
|
require_relative "api/resources/users"
|
43
32
|
require_relative "api/resources/video"
|
@@ -45,8 +34,8 @@ require_relative "api/resources/video"
|
|
45
34
|
require_relative "api/client"
|
46
35
|
require_relative "api/config"
|
47
36
|
require_relative "api/exception"
|
48
|
-
require_relative "api/finder"
|
49
37
|
require_relative "api/request"
|
50
38
|
require_relative "api/response"
|
39
|
+
require_relative "api/util"
|
51
40
|
|
52
41
|
require_relative "api/version"
|
data/lib/kentaa/api/client.rb
CHANGED
@@ -3,40 +3,52 @@
|
|
3
3
|
module Kentaa
|
4
4
|
module Api
|
5
5
|
class Client
|
6
|
-
def initialize(
|
7
|
-
@config =
|
6
|
+
def initialize(options = {})
|
7
|
+
@config = Kentaa::Api::Config.new(options)
|
8
8
|
end
|
9
9
|
|
10
|
-
def actions
|
11
|
-
Kentaa::Api::
|
10
|
+
def actions(options = {})
|
11
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Action, endpoint_path: "/actions"))
|
12
12
|
end
|
13
13
|
|
14
|
-
def donations
|
15
|
-
Kentaa::Api::
|
14
|
+
def donations(options = {})
|
15
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Donation, endpoint_path: "/donations"))
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
Kentaa::Api::
|
18
|
+
def donation_forms(options = {})
|
19
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::DonationForm, endpoint_path: "/donation-forms"))
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
23
|
-
Kentaa::Api::
|
22
|
+
def manual_donations(options = {})
|
23
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::ManualDonation, endpoint_path: "/manual-donations"))
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
27
|
-
Kentaa::Api::
|
26
|
+
def newsletter_subscriptions(options = {})
|
27
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::NewsletterSubscription, endpoint_path: "/newsletter-subscriptions"))
|
28
28
|
end
|
29
29
|
|
30
|
-
def
|
31
|
-
Kentaa::Api::
|
30
|
+
def projects(options = {})
|
31
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Project, endpoint_path: "/projects"))
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
35
|
-
Kentaa::Api::
|
34
|
+
def recurring_donors(options = {})
|
35
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::RecurringDonor, endpoint_path: "/recurring-donors"))
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
Kentaa::Api::
|
38
|
+
def segments(options = {})
|
39
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Segment, endpoint_path: "/segments"))
|
40
|
+
end
|
41
|
+
|
42
|
+
def sites(options = {})
|
43
|
+
Kentaa::Api::Resources::Sites.new(@config, options)
|
44
|
+
end
|
45
|
+
|
46
|
+
def teams(options = {})
|
47
|
+
Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Team, endpoint_path: "/teams"))
|
48
|
+
end
|
49
|
+
|
50
|
+
def users(options = {})
|
51
|
+
Kentaa::Api::Resources::Users.new(@config, options)
|
40
52
|
end
|
41
53
|
end
|
42
54
|
end
|
data/lib/kentaa/api/config.rb
CHANGED
@@ -7,13 +7,16 @@ module Kentaa
|
|
7
7
|
TEST_URL = "https://api.kentaa.staatklaar.nu/v1"
|
8
8
|
DEV_URL = "http://api.lvh.me:3000/v1"
|
9
9
|
|
10
|
-
attr_accessor :
|
10
|
+
attr_accessor :options
|
11
11
|
|
12
|
-
def initialize(
|
13
|
-
@api_key = api_key
|
12
|
+
def initialize(options = {})
|
14
13
|
@options = options
|
15
14
|
end
|
16
15
|
|
16
|
+
def api_key
|
17
|
+
options.fetch(:api_key)
|
18
|
+
end
|
19
|
+
|
17
20
|
def api_url
|
18
21
|
case environment
|
19
22
|
when :test
|
@@ -34,6 +37,10 @@ module Kentaa
|
|
34
37
|
:live
|
35
38
|
end
|
36
39
|
end
|
40
|
+
|
41
|
+
def debug?
|
42
|
+
options.fetch(:debug, false)
|
43
|
+
end
|
37
44
|
end
|
38
45
|
end
|
39
46
|
end
|
data/lib/kentaa/api/exception.rb
CHANGED
@@ -10,12 +10,19 @@ module Kentaa
|
|
10
10
|
|
11
11
|
def initialize(response)
|
12
12
|
@response = response
|
13
|
+
super()
|
14
|
+
end
|
13
15
|
|
14
|
-
|
16
|
+
def errors
|
17
|
+
response.errors
|
15
18
|
end
|
16
19
|
|
17
20
|
def http_code
|
18
|
-
response.
|
21
|
+
response.http_code
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
"#{response.http_code}: #{response.message}"
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
data/lib/kentaa/api/request.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'logger'
|
3
4
|
require 'net/http'
|
4
5
|
require 'uri'
|
5
6
|
|
@@ -13,16 +14,55 @@ module Kentaa
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def get(path, params = {})
|
17
|
+
request(:get, path, params)
|
18
|
+
end
|
19
|
+
|
20
|
+
def post(path, params = {}, body = {})
|
21
|
+
request(:post, path, params, body)
|
22
|
+
end
|
23
|
+
|
24
|
+
def patch(path, params = {}, body = {})
|
25
|
+
request(:patch, path, params, body)
|
26
|
+
end
|
27
|
+
|
28
|
+
def delete(path, params = {})
|
29
|
+
request(:delete, path, params)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def request(http_method, path, params = {}, body = {})
|
16
35
|
uri = URI.parse(File.join(config.api_url, path))
|
17
36
|
uri.query = URI.encode_www_form(params) unless params.empty?
|
18
37
|
|
19
|
-
|
38
|
+
case http_method
|
39
|
+
when :get
|
40
|
+
request = Net::HTTP::Get.new(uri)
|
41
|
+
when :post
|
42
|
+
request = Net::HTTP::Post.new(uri)
|
43
|
+
request.body = body.to_json
|
44
|
+
when :patch
|
45
|
+
request = Net::HTTP::Patch.new(uri)
|
46
|
+
request.body = body.to_json
|
47
|
+
when :delete
|
48
|
+
request = Net::HTTP::Delete.new(uri)
|
49
|
+
else
|
50
|
+
raise Kentaa::Api::Exception, "Invalid HTTP method: #{http_method}"
|
51
|
+
end
|
52
|
+
|
53
|
+
logger.debug("[Kentaa-API] Request: #{http_method.upcase} #{uri}") if config.debug?
|
54
|
+
|
55
|
+
request["Accept"] = "application/json"
|
56
|
+
request["Content-Type"] = "application/json"
|
20
57
|
request["X-Api-Key"] = config.api_key
|
58
|
+
request["User-Agent"] = "Ruby kentaa-api/#{Kentaa::Api::VERSION}"
|
59
|
+
|
60
|
+
client = Net::HTTP.new(uri.hostname, uri.port)
|
61
|
+
client.use_ssl = uri.scheme == "https"
|
62
|
+
client.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
21
63
|
|
22
64
|
begin
|
23
|
-
|
24
|
-
http.request(request)
|
25
|
-
end
|
65
|
+
response = Kentaa::Api::Response.new(client.request(request))
|
26
66
|
# Try to catch some common exceptions Net::HTTP might raise.
|
27
67
|
rescue Errno::ETIMEDOUT, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, Errno::EHOSTUNREACH,
|
28
68
|
IOError, SocketError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::OpenTimeout,
|
@@ -30,7 +70,7 @@ module Kentaa
|
|
30
70
|
raise Kentaa::Api::Exception, e.message
|
31
71
|
end
|
32
72
|
|
33
|
-
response
|
73
|
+
logger.debug("[Kentaa-API] Response: #{response.http_code}, body: #{response.body}") if config.debug?
|
34
74
|
|
35
75
|
if response.error?
|
36
76
|
raise Kentaa::Api::RequestError, response
|
@@ -38,6 +78,10 @@ module Kentaa
|
|
38
78
|
|
39
79
|
response
|
40
80
|
end
|
81
|
+
|
82
|
+
def logger
|
83
|
+
@logger ||= Logger.new($stdout)
|
84
|
+
end
|
41
85
|
end
|
42
86
|
end
|
43
87
|
end
|
@@ -13,16 +13,20 @@ module Kentaa
|
|
13
13
|
|
14
14
|
def parent
|
15
15
|
if team_id
|
16
|
-
Kentaa::Api::Resources::Team.new(config, id: team_id)
|
16
|
+
Kentaa::Api::Resources::Team.new(config, id: team_id, options: options)
|
17
17
|
elsif project_id
|
18
|
-
Kentaa::Api::Resources::Project.new(config, id: project_id)
|
18
|
+
Kentaa::Api::Resources::Project.new(config, id: project_id, options: options)
|
19
19
|
elsif segment_id
|
20
|
-
Kentaa::Api::Resources::Segment.new(config, id: segment_id)
|
20
|
+
Kentaa::Api::Resources::Segment.new(config, id: segment_id, options: options)
|
21
21
|
else
|
22
|
-
Kentaa::Api::Resources::Site.new(config, id: site_id)
|
22
|
+
Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
def site
|
27
|
+
Kentaa::Api::Resources::Site.new(config, id: site_id, options: options)
|
28
|
+
end
|
29
|
+
|
26
30
|
def slug
|
27
31
|
data[:slug]
|
28
32
|
end
|
@@ -44,11 +48,11 @@ module Kentaa
|
|
44
48
|
end
|
45
49
|
|
46
50
|
def owner
|
47
|
-
@owner ||= Kentaa::Api::Resources::User.new(config, data: data[:owner])
|
51
|
+
@owner ||= Kentaa::Api::Resources::User.new(config, data: data[:owner], options: options)
|
48
52
|
end
|
49
53
|
|
50
54
|
def team_captain?
|
51
|
-
data
|
55
|
+
data.fetch(:team_captain, false)
|
52
56
|
end
|
53
57
|
|
54
58
|
def first_name
|
@@ -120,7 +124,7 @@ module Kentaa
|
|
120
124
|
end
|
121
125
|
|
122
126
|
def activity
|
123
|
-
@activity ||= Kentaa::Api::Resources::Activity.new(
|
127
|
+
@activity ||= Kentaa::Api::Resources::Activity.new(data[:activity])
|
124
128
|
end
|
125
129
|
|
126
130
|
def previous_participations
|
@@ -136,11 +140,11 @@ module Kentaa
|
|
136
140
|
end
|
137
141
|
|
138
142
|
def registration_fee
|
139
|
-
@registration_fee ||= Kentaa::Api::Resources::RegistrationFee.new(
|
143
|
+
@registration_fee ||= Kentaa::Api::Resources::RegistrationFee.new(data[:registration_fee])
|
140
144
|
end
|
141
145
|
|
142
146
|
def location
|
143
|
-
@location ||= Kentaa::Api::Resources::Location.new(
|
147
|
+
@location ||= Kentaa::Api::Resources::Location.new(data[:location])
|
144
148
|
end
|
145
149
|
|
146
150
|
def photos
|
@@ -149,7 +153,7 @@ module Kentaa
|
|
149
153
|
|
150
154
|
if data[:photos]
|
151
155
|
data[:photos].each do |photo|
|
152
|
-
photos << Kentaa::Api::Resources::Photo.new(
|
156
|
+
photos << Kentaa::Api::Resources::Photo.new(photo)
|
153
157
|
end
|
154
158
|
end
|
155
159
|
|
@@ -163,7 +167,7 @@ module Kentaa
|
|
163
167
|
|
164
168
|
if data[:videos]
|
165
169
|
data[:videos].each do |video|
|
166
|
-
videos << Kentaa::Api::Resources::Video.new(
|
170
|
+
videos << Kentaa::Api::Resources::Video.new(video)
|
167
171
|
end
|
168
172
|
end
|
169
173
|
|
@@ -177,7 +181,7 @@ module Kentaa
|
|
177
181
|
|
178
182
|
if data[:questions]
|
179
183
|
data[:questions].each do |question|
|
180
|
-
questions << Kentaa::Api::Resources::Question.new(
|
184
|
+
questions << Kentaa::Api::Resources::Question.new(question)
|
181
185
|
end
|
182
186
|
end
|
183
187
|
|
@@ -186,18 +190,38 @@ module Kentaa
|
|
186
190
|
end
|
187
191
|
|
188
192
|
def consent
|
189
|
-
@consent ||= Kentaa::Api::Resources::Consent.new(
|
193
|
+
@consent ||= Kentaa::Api::Resources::Consent.new(data[:consent]) if data[:consent]
|
190
194
|
end
|
191
195
|
|
192
196
|
def external_reference
|
193
197
|
data[:external_reference]
|
194
198
|
end
|
195
199
|
|
196
|
-
|
200
|
+
def donations
|
201
|
+
@donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Donation, endpoint_path: "/actions/#{id}/donations")
|
202
|
+
end
|
203
|
+
|
204
|
+
def manual_donations
|
205
|
+
@manual_donations ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::ManualDonation, endpoint_path: "/actions/#{id}/manual-donations")
|
206
|
+
end
|
207
|
+
|
208
|
+
def performances
|
209
|
+
@performances ||= Kentaa::Api::Resources::List.new(config, resource_class: Kentaa::Api::Resources::Performance, endpoint_path: "/actions/#{id}/performances")
|
210
|
+
end
|
211
|
+
|
212
|
+
private
|
197
213
|
|
198
|
-
def load_resource
|
214
|
+
def load_resource
|
199
215
|
request.get("/actions/#{id}", options)
|
200
216
|
end
|
217
|
+
|
218
|
+
def create_resource(attributes)
|
219
|
+
request.post("/actions", options, attributes)
|
220
|
+
end
|
221
|
+
|
222
|
+
def update_resource(attributes)
|
223
|
+
request.patch("/actions/#{id}", options, attributes)
|
224
|
+
end
|
201
225
|
end
|
202
226
|
end
|
203
227
|
end
|