kentaa-api 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +23 -0
  3. data/.rubocop.yml +1 -0
  4. data/Gemfile.lock +14 -14
  5. data/README.md +64 -21
  6. data/lib/kentaa/api.rb +4 -24
  7. data/lib/kentaa/api/client.rb +24 -24
  8. data/lib/kentaa/api/config.rb +6 -3
  9. data/lib/kentaa/api/request.rb +2 -2
  10. data/lib/kentaa/api/resources/action.rb +6 -2
  11. data/lib/kentaa/api/resources/base.rb +18 -5
  12. data/lib/kentaa/api/resources/donation_form.rb +7 -3
  13. data/lib/kentaa/api/resources/list.rb +61 -3
  14. data/lib/kentaa/api/resources/performance.rb +62 -0
  15. data/lib/kentaa/api/resources/project.rb +11 -3
  16. data/lib/kentaa/api/resources/recurring_donor.rb +1 -1
  17. data/lib/kentaa/api/resources/segment.rb +15 -3
  18. data/lib/kentaa/api/resources/site.rb +3 -3
  19. data/lib/kentaa/api/{clients → resources}/sites.rb +1 -1
  20. data/lib/kentaa/api/resources/team.rb +2 -2
  21. data/lib/kentaa/api/resources/user.rb +0 -6
  22. data/lib/kentaa/api/resources/users.rb +5 -32
  23. data/lib/kentaa/api/util.rb +13 -0
  24. data/lib/kentaa/api/version.rb +1 -1
  25. metadata +6 -25
  26. data/.travis.yml +0 -11
  27. data/lib/kentaa/api/clients/actions.rb +0 -34
  28. data/lib/kentaa/api/clients/base.rb +0 -15
  29. data/lib/kentaa/api/clients/donation_forms.rb +0 -24
  30. data/lib/kentaa/api/clients/donations.rb +0 -24
  31. data/lib/kentaa/api/clients/manual_donations.rb +0 -39
  32. data/lib/kentaa/api/clients/newsletter_subscriptions.rb +0 -24
  33. data/lib/kentaa/api/clients/projects.rb +0 -24
  34. data/lib/kentaa/api/clients/recurring_donors.rb +0 -24
  35. data/lib/kentaa/api/clients/segments.rb +0 -24
  36. data/lib/kentaa/api/clients/teams.rb +0 -24
  37. data/lib/kentaa/api/clients/users.rb +0 -39
  38. data/lib/kentaa/api/finder.rb +0 -44
  39. data/lib/kentaa/api/resources/actions.rb +0 -40
  40. data/lib/kentaa/api/resources/donation_forms.rb +0 -35
  41. data/lib/kentaa/api/resources/donations.rb +0 -35
  42. data/lib/kentaa/api/resources/manual_donations.rb +0 -40
  43. data/lib/kentaa/api/resources/newsletter_subscriptions.rb +0 -35
  44. data/lib/kentaa/api/resources/projects.rb +0 -35
  45. data/lib/kentaa/api/resources/recurring_donors.rb +0 -35
  46. data/lib/kentaa/api/resources/segments.rb +0 -35
  47. data/lib/kentaa/api/resources/teams.rb +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23a4a4487aa472a316b501c6828a794dc7adb49a401142f81380e876db16e38b
4
- data.tar.gz: 64237a805e5dfb9631acffeede977b9db625c1768233276d21b573f02926c6c6
3
+ metadata.gz: da9bb3b58fe4533c642cd80ca677b29aff5e779aa1335ecbda2ba5c502133487
4
+ data.tar.gz: 3ad011c17955567de318e2e1c8f959afd3ea3f6aad8d66381f0d2c48abd7c6e5
5
5
  SHA512:
6
- metadata.gz: b6efd4d9df769a58d90865c636782cc16ee3c84d2eebf66387cbd9a9758dbc2d534ad3fd33a975f6481b6ded97448a5249449427f619de9c033bc10e201100f2
7
- data.tar.gz: a773cebe9d89d3d230d34e37f47e35af40a28815070bf8d5212f5fee83c208663ce0fb8664a211c0b523a091ef8df5d453ca7d17c4616fd967b2486c3be5dc9e
6
+ metadata.gz: 2b00e2f9db7313a96e4d205337ae9c2a9d9872d5ff97865246a6b1b391ae47cd615c2e736eac0ea5a6e890cb553bbfa66d5ddf31b83a60dc6d48f580912a430d
7
+ data.tar.gz: 50f33d783a2055d71bdbf9bdc446be064bb109b71e04f6736e9dfb29b0dc670fe42001b89c218904405a218b3700c3d030fdd1c1292658b958ba77e62b9dafc3
@@ -0,0 +1,23 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.4', '2.5', '2.6', '2.7', '3.0']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby-version }}
21
+ bundler-cache: true
22
+ - name: Run tests
23
+ run: bundle exec rake
data/.rubocop.yml CHANGED
@@ -11,6 +11,7 @@ AllCops:
11
11
  DisplayCopNames: true
12
12
  DisplayStyleGuide: true
13
13
  Exclude:
14
+ - 'tmp/**/*'
14
15
  - 'vendor/**/*'
15
16
 
16
17
  Layout/LineLength:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kentaa-api (0.5.0)
4
+ kentaa-api (0.6.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -11,7 +11,7 @@ GEM
11
11
  ast (2.4.2)
12
12
  crack (0.4.3)
13
13
  safe_yaml (~> 1.0.0)
14
- diff-lcs (1.3)
14
+ diff-lcs (1.4.4)
15
15
  hashdiff (0.3.7)
16
16
  parallel (1.20.1)
17
17
  parser (3.0.0.0)
@@ -20,20 +20,20 @@ GEM
20
20
  rainbow (3.0.0)
21
21
  rake (13.0.3)
22
22
  regexp_parser (2.1.1)
23
- rexml (3.2.4)
24
- rspec (3.8.0)
25
- rspec-core (~> 3.8.0)
26
- rspec-expectations (~> 3.8.0)
27
- rspec-mocks (~> 3.8.0)
28
- rspec-core (3.8.0)
29
- rspec-support (~> 3.8.0)
30
- rspec-expectations (3.8.2)
23
+ rexml (3.2.5)
24
+ rspec (3.10.0)
25
+ rspec-core (~> 3.10.0)
26
+ rspec-expectations (~> 3.10.0)
27
+ rspec-mocks (~> 3.10.0)
28
+ rspec-core (3.10.1)
29
+ rspec-support (~> 3.10.0)
30
+ rspec-expectations (3.10.1)
31
31
  diff-lcs (>= 1.2.0, < 2.0)
32
- rspec-support (~> 3.8.0)
33
- rspec-mocks (3.8.0)
32
+ rspec-support (~> 3.10.0)
33
+ rspec-mocks (3.10.2)
34
34
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.8.0)
36
- rspec-support (3.8.0)
35
+ rspec-support (~> 3.10.0)
36
+ rspec-support (3.10.2)
37
37
  rubocop (1.12.0)
38
38
  parallel (~> 1.10)
39
39
  parser (>= 3.0.0.0)
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Kentaa API
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/kentaa-api.svg)](https://badge.fury.io/rb/kentaa-api)
4
- [![Build Status](https://travis-ci.org/KentaaNL/kentaa-api.svg?branch=master)](https://travis-ci.org/KentaaNL/kentaa-api)
4
+ [![Build Status](https://github.com/KentaaNL/kentaa-api/actions/workflows/test.yml/badge.svg)](https://github.com/KentaaNL/kentaa-api/actions)
5
5
  [![Code Climate](https://codeclimate.com/github/KentaaNL/kentaa-api/badges/gpa.svg)](https://codeclimate.com/github/KentaaNL/kentaa-api)
6
6
 
7
7
  This gem provides a Ruby library for communicating with the [Kentaa API](https://developer.kentaa.nl/kentaa-api/).
@@ -15,6 +15,7 @@ This gem provides a Ruby library for communicating with the [Kentaa API](https:/
15
15
  - [Donations](#donations)
16
16
  - [Manual donations](#manual-donations)
17
17
  - [Newsletter subscriptions](#newsletter-subscriptions)
18
+ - [Performances](#performances)
18
19
  - [Projects](#projects)
19
20
  - [Recurring donors](#recurring-donors)
20
21
  - [Segments](#segments)
@@ -45,26 +46,25 @@ Or install it yourself as:
45
46
 
46
47
  ## Usage
47
48
 
48
- Create a Kentaa API configuration and client using your API key:
49
+ Create a Kentaa API client using your API key:
49
50
 
50
51
  ```ruby
51
52
  require 'kentaa/api'
52
53
 
53
- config = Kentaa::Api::Config.new('your_api_key')
54
- client = Kentaa::Api::Client.new(config)
54
+ client = Kentaa::Api::Client.new(api_key: 'your_api_key')
55
55
  ```
56
56
 
57
- The configuration is created for the production environment by default. If you want to use the testing environment, then add `test: true`:
57
+ The client is created for the production environment by default. If you want to use the testing environment, then add `test: true`:
58
58
 
59
59
  ```ruby
60
- config = Kentaa::Api::Config.new('your_api_key', test: true)
60
+ client = Kentaa::Api::Client.new(api_key: 'your_api_key', test: true)
61
61
  ```
62
62
 
63
63
  ### Actions
64
64
 
65
65
  ```ruby
66
66
  # List Actions
67
- actions = client.actions.list # paginated
67
+ actions = client.actions # paginated
68
68
  actions = client.actions.all # non-paginated
69
69
 
70
70
  actions.each do |action|
@@ -103,7 +103,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#actions)
103
103
 
104
104
  ```ruby
105
105
  # List Donation forms
106
- donation_forms = client.donation_forms.list # paginated
106
+ donation_forms = client.donation_forms # paginated
107
107
  donation_forms = client.donation_forms.all # non-paginated
108
108
 
109
109
  donation_forms.each do |form|
@@ -126,7 +126,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#donation-
126
126
 
127
127
  ```ruby
128
128
  # List Donations
129
- donations = client.donations.list # paginated
129
+ donations = client.donations # paginated
130
130
  donations = client.donations.all # non-paginated
131
131
 
132
132
  donations.each do |donations|
@@ -149,7 +149,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#donations
149
149
 
150
150
  ```ruby
151
151
  # List Manual donations
152
- donations = client.manual_donations.list # paginated
152
+ donations = client.manual_donations # paginated
153
153
  donations = client.manual_donations.all # non-paginated
154
154
 
155
155
  donations.each do |donations|
@@ -193,7 +193,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#manual-do
193
193
 
194
194
  ```ruby
195
195
  # List Newsletter subscriptions
196
- newsletter_subscriptions = client.newsletter_subscriptions.list # paginated
196
+ newsletter_subscriptions = client.newsletter_subscriptions # paginated
197
197
  newsletter_subscriptions = client.newsletter_subscriptions.all # non-paginated
198
198
 
199
199
  newsletter_subscriptions.each do |subscription|
@@ -210,11 +210,55 @@ subscription.subscription_url # => "https://demo1.kentaa.nl"
210
210
 
211
211
  See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#newsletter-subscriptions) and [Kentaa::Api::Resources::NewsletterSubscription](lib/kentaa/api/resources/newsletter_subscription.rb) for all available properties.
212
212
 
213
+ ### Performances
214
+
215
+ Performances are available on an [Kentaa::Api::Resources::Action](lib/kentaa/api/resources/action.rb), so you first need to retrieve an Action.
216
+
217
+ ```ruby
218
+ action = client.actions.get(1)
219
+
220
+ # List Performances
221
+ performances = action.performances # paginated
222
+ performances = action.performances.all # non-paginated
223
+
224
+ performances.each do |performance|
225
+ performance.title # => "First tour"
226
+ performance.distance # => BigDecimal("65.25")
227
+ end
228
+
229
+ # Get Performance
230
+ donation = action.performances.get(1)
231
+
232
+ performance.title # => "First tour"
233
+ performance.distance # => BigDecimal("65.25")
234
+
235
+ # Create a Performance
236
+ performance = action.performances.create(
237
+ title: "First tour",
238
+ performance_type: "biking",
239
+ performance_at: Time.now,
240
+ distance: "65.25"
241
+ )
242
+
243
+ performance.title # => "First tour"
244
+ performance.distance # => BigDecimal("65.25")
245
+
246
+ # Update a Performance
247
+ performance = action.performance.update(1, title: "Big tour")
248
+
249
+ performance.title # => "Big tour"
250
+
251
+ # Delete a Performance
252
+ action.performance.delete(1)
253
+ ```
254
+
255
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#performances) and [Kentaa::Api::Resources::Performance](lib/kentaa/api/resources/performance.rb) for all available properties.
256
+
213
257
  ### Projects
214
258
 
215
259
  ```ruby
216
260
  # List Projects
217
- projects = client.projects.list # paginated
261
+ projects = client.projects # paginated
218
262
  projects = client.projects.all # non-paginated
219
263
 
220
264
  projects.each do |project|
@@ -237,7 +281,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#projects)
237
281
 
238
282
  ```ruby
239
283
  # List Recurring donors
240
- recurring_donors = client.recurring_donors.list # paginated
284
+ recurring_donors = client.recurring_donors # paginated
241
285
  recurring_donors = client.recurring_donors.all # non-paginated
242
286
 
243
287
  recurring_donors.each do |recurring_donor|
@@ -260,7 +304,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#recurring
260
304
 
261
305
  ```ruby
262
306
  # List Segments
263
- segments = client.segments.list # paginated
307
+ segments = client.segments # paginated
264
308
  segments = client.segments.all # non-paginated
265
309
 
266
310
  segments.each do |segment|
@@ -298,7 +342,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#sites) an
298
342
 
299
343
  ```ruby
300
344
  # List Teams
301
- teams = client.teams.list # paginated
345
+ teams = client.teams # paginated
302
346
  teams = client.teams.all # non-paginated
303
347
 
304
348
  teams.each do |team|
@@ -321,7 +365,7 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#teams) an
321
365
 
322
366
  ```ruby
323
367
  # List Users
324
- users = client.users.list # paginated
368
+ users = client.users # paginated
325
369
  users = client.users.all # non-paginated
326
370
 
327
371
  users.each do |user|
@@ -362,11 +406,10 @@ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#users) an
362
406
 
363
407
  ### Pagination
364
408
 
365
- The `list` method on the endpoint returns an [Enumerable](https://ruby-doc.org/core/Enumerable.html) object with paginated results.
366
- Default page size is 25, but you can can customize this by setting the `per_page` parameter:
409
+ All List actions return paginated results in an [Enumerable](https://ruby-doc.org/core/Enumerable.html) object. The default page size is 25, but you can can customize this by setting the `per_page` parameter.
367
410
 
368
411
  ```ruby
369
- actions = client.actions.list(per_page: 100)
412
+ actions = client.actions(per_page: 100)
370
413
 
371
414
  actions.each do |action|
372
415
  action.title # => "Lorem ipsum"
@@ -374,10 +417,10 @@ actions.each do |action|
374
417
  end
375
418
  ```
376
419
 
377
- You can iterate through the pages using the `.next` method and checking the result:
420
+ You can iterate through the pages using the `.next` method and checking the result. For example:
378
421
 
379
422
  ```ruby
380
- actions = client.actions.list
423
+ actions = client.actions
381
424
 
382
425
  loop do
383
426
  actions.each do |action|
data/lib/kentaa/api.rb CHANGED
@@ -1,52 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "api/clients/base"
4
- require_relative "api/clients/actions"
5
- require_relative "api/clients/donation_forms"
6
- require_relative "api/clients/donations"
7
- require_relative "api/clients/manual_donations"
8
- require_relative "api/clients/newsletter_subscriptions"
9
- require_relative "api/clients/projects"
10
- require_relative "api/clients/recurring_donors"
11
- require_relative "api/clients/segments"
12
- require_relative "api/clients/sites"
13
- require_relative "api/clients/teams"
14
- require_relative "api/clients/users"
15
-
16
3
  require_relative "api/resources/base"
17
4
  require_relative "api/resources/error"
18
5
  require_relative "api/resources/list"
19
6
  require_relative "api/resources/resource"
20
7
 
21
8
  require_relative "api/resources/action"
22
- require_relative "api/resources/actions"
23
9
  require_relative "api/resources/activity"
24
10
  require_relative "api/resources/address"
25
11
  require_relative "api/resources/banner"
26
12
  require_relative "api/resources/consent"
27
13
  require_relative "api/resources/contact"
28
14
  require_relative "api/resources/donation_form"
29
- require_relative "api/resources/donation_forms"
30
15
  require_relative "api/resources/donation"
31
- require_relative "api/resources/donations"
32
16
  require_relative "api/resources/location"
33
17
  require_relative "api/resources/manual_donation"
34
- require_relative "api/resources/manual_donations"
35
18
  require_relative "api/resources/newsletter_subscription"
36
- require_relative "api/resources/newsletter_subscriptions"
19
+ require_relative "api/resources/performance"
37
20
  require_relative "api/resources/photo"
38
21
  require_relative "api/resources/project"
39
- require_relative "api/resources/projects"
40
- require_relative "api/resources/question"
41
22
  require_relative "api/resources/recurring_donor"
42
- require_relative "api/resources/recurring_donors"
43
23
  require_relative "api/resources/registration_fee"
44
24
  require_relative "api/resources/reward"
25
+ require_relative "api/resources/question"
45
26
  require_relative "api/resources/segment"
46
- require_relative "api/resources/segments"
47
27
  require_relative "api/resources/site"
28
+ require_relative "api/resources/sites"
48
29
  require_relative "api/resources/team"
49
- require_relative "api/resources/teams"
50
30
  require_relative "api/resources/user"
51
31
  require_relative "api/resources/users"
52
32
  require_relative "api/resources/video"
@@ -54,8 +34,8 @@ require_relative "api/resources/video"
54
34
  require_relative "api/client"
55
35
  require_relative "api/config"
56
36
  require_relative "api/exception"
57
- require_relative "api/finder"
58
37
  require_relative "api/request"
59
38
  require_relative "api/response"
39
+ require_relative "api/util"
60
40
 
61
41
  require_relative "api/version"
@@ -3,52 +3,52 @@
3
3
  module Kentaa
4
4
  module Api
5
5
  class Client
6
- def initialize(config)
7
- @config = config
6
+ def initialize(options = {})
7
+ @config = Kentaa::Api::Config.new(options)
8
8
  end
9
9
 
10
- def actions
11
- Kentaa::Api::Clients::Actions.new(@config)
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 donation_forms
15
- Kentaa::Api::Clients::DonationForms.new(@config)
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 donations
19
- Kentaa::Api::Clients::Donations.new(@config)
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 manual_donations
23
- Kentaa::Api::Clients::ManualDonations.new(@config)
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 newsletter_subscriptions
27
- Kentaa::Api::Clients::NewsletterSubscriptions.new(@config)
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 projects
31
- Kentaa::Api::Clients::Projects.new(@config)
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 recurring_donors
35
- Kentaa::Api::Clients::RecurringDonors.new(@config)
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 segments
39
- Kentaa::Api::Clients::Segments.new(@config)
38
+ def segments(options = {})
39
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Segment, endpoint_path: "/segments"))
40
40
  end
41
41
 
42
- def sites
43
- Kentaa::Api::Clients::Sites.new(@config)
42
+ def sites(options = {})
43
+ Kentaa::Api::Resources::Sites.new(@config, options)
44
44
  end
45
45
 
46
- def teams
47
- Kentaa::Api::Clients::Teams.new(@config)
46
+ def teams(options = {})
47
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Team, endpoint_path: "/teams"))
48
48
  end
49
49
 
50
- def users
51
- Kentaa::Api::Clients::Users.new(@config)
50
+ def users(options = {})
51
+ Kentaa::Api::Resources::Users.new(@config, options)
52
52
  end
53
53
  end
54
54
  end
@@ -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 :api_key, :options
10
+ attr_accessor :options
11
11
 
12
- def initialize(api_key, options = {})
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