kentaa-api 0.4.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +414 -66
  4. data/lib/kentaa/api/client.rb +32 -20
  5. data/lib/kentaa/api/config.rb +13 -6
  6. data/lib/kentaa/api/deprecation.rb +13 -0
  7. data/lib/kentaa/api/exception.rb +5 -2
  8. data/lib/kentaa/api/request.rb +37 -19
  9. data/lib/kentaa/api/resources/action.rb +50 -11
  10. data/lib/kentaa/api/resources/base.rb +18 -5
  11. data/lib/kentaa/api/resources/billing.rb +51 -0
  12. data/lib/kentaa/api/resources/company.rb +218 -0
  13. data/lib/kentaa/api/resources/company_package.rb +39 -0
  14. data/lib/kentaa/api/resources/consent.rb +77 -4
  15. data/lib/kentaa/api/resources/contact.rb +2 -2
  16. data/lib/kentaa/api/resources/donation.rb +45 -7
  17. data/lib/kentaa/api/resources/donation_form.rb +104 -0
  18. data/lib/kentaa/api/resources/list.rb +61 -3
  19. data/lib/kentaa/api/resources/manual_donation.rb +17 -7
  20. data/lib/kentaa/api/resources/newsletter_subscription.rb +30 -4
  21. data/lib/kentaa/api/resources/performance.rb +70 -0
  22. data/lib/kentaa/api/resources/performance_photo.rb +36 -0
  23. data/lib/kentaa/api/resources/project.rb +36 -4
  24. data/lib/kentaa/api/resources/question.rb +8 -0
  25. data/lib/kentaa/api/resources/recurring_donor.rb +110 -0
  26. data/lib/kentaa/api/resources/resource.rb +6 -6
  27. data/lib/kentaa/api/resources/segment.rb +26 -2
  28. data/lib/kentaa/api/resources/site.rb +7 -3
  29. data/lib/kentaa/api/{clients → resources}/sites.rb +2 -2
  30. data/lib/kentaa/api/resources/team.rb +11 -7
  31. data/lib/kentaa/api/resources/user.rb +27 -3
  32. data/lib/kentaa/api/resources/users.rb +5 -27
  33. data/lib/kentaa/api/util.rb +17 -0
  34. data/lib/kentaa/api/version.rb +1 -1
  35. data/lib/kentaa/api.rb +41 -50
  36. metadata +23 -46
  37. data/.gitignore +0 -16
  38. data/.rspec +0 -2
  39. data/.rubocop.yml +0 -64
  40. data/.travis.yml +0 -12
  41. data/Gemfile +0 -10
  42. data/Gemfile.lock +0 -71
  43. data/Rakefile +0 -10
  44. data/bin/console +0 -15
  45. data/bin/setup +0 -8
  46. data/kentaa-api.gemspec +0 -30
  47. data/lib/kentaa/api/clients/actions.rb +0 -34
  48. data/lib/kentaa/api/clients/base.rb +0 -15
  49. data/lib/kentaa/api/clients/donations.rb +0 -24
  50. data/lib/kentaa/api/clients/manual_donations.rb +0 -39
  51. data/lib/kentaa/api/clients/newsletter_subscriptions.rb +0 -24
  52. data/lib/kentaa/api/clients/projects.rb +0 -24
  53. data/lib/kentaa/api/clients/segments.rb +0 -24
  54. data/lib/kentaa/api/clients/teams.rb +0 -24
  55. data/lib/kentaa/api/clients/users.rb +0 -34
  56. data/lib/kentaa/api/finder.rb +0 -44
  57. data/lib/kentaa/api/resources/actions.rb +0 -40
  58. data/lib/kentaa/api/resources/donations.rb +0 -35
  59. data/lib/kentaa/api/resources/manual_donations.rb +0 -40
  60. data/lib/kentaa/api/resources/newsletter_subscriptions.rb +0 -35
  61. data/lib/kentaa/api/resources/projects.rb +0 -35
  62. data/lib/kentaa/api/resources/segments.rb +0 -35
  63. data/lib/kentaa/api/resources/teams.rb +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ebca7b73a3ae49b7d9948211b21638e7131340fe58f6b34551260853dd4b6fb
4
- data.tar.gz: cc9a8b5450c1b4068867a2bf0eada220174e3d107ae2369ddbc5080bcf785257
3
+ metadata.gz: 1aca25f29280f1c8b1ac63c17a8d8bac967c27a10975027ceaa163ca13a57a09
4
+ data.tar.gz: 7e9a8a9e7bcc65b8f63de8284db9e8550d238bf75dc8565a2eeb5f147f48e5c3
5
5
  SHA512:
6
- metadata.gz: 2815897919718da19a9ed6ddb05589523b492639427fced920168bb469c794a83c5cc4477f9dc3403e7a932f6d88d657035a741f5cb3a44c075807b88b3ccf0f
7
- data.tar.gz: 696d64f0bf684fafcbf1c38c24f3f1b03c97312f2c6b666054464b85b58b0907eb27e8a42bffd4e886d035475daaab8e22354af9a39ce9ea9a54943fbd225962
6
+ metadata.gz: 5b5889b38da0cf1ed917460cfae3f2c4987c4fe62e48988f865dd1768c2106ca12d726e324f3d3c1f7199b8888848c93ecfcd93ff2a6de5bb6bff01a79418d9a
7
+ data.tar.gz: bd4b8963915d48a62f44082aa20225b1826c2a0eae40488084c138e78799f06787e7213d6d7bc8b2bd1e7f19de92f3ddbae7ad2e13ec6e2a47fb192d1187c57b
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017 Peter Postma
3
+ Copyright (c) 2017-2021 Kentaa BV
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,10 +1,34 @@
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
- This gem provides a Ruby library for communicating with the [Kentaa API](https://api.kentaa.nl/v1/doc).
7
+ This gem provides a Ruby library for communicating with the [Kentaa API](https://developer.kentaa.nl/kentaa-api/).
8
+
9
+ ## Table of Contents
10
+
11
+ - [Installation](#installation)
12
+ - [Usage](#usage)
13
+ - [Actions](#actions)
14
+ - [Companies](#companies)
15
+ - [Donation forms](#donation-forms)
16
+ - [Donations](#donations)
17
+ - [Manual donations](#manual-donations)
18
+ - [Newsletter subscriptions](#newsletter-subscriptions)
19
+ - [Performances](#performances)
20
+ - [Photos](#performance-photos)
21
+ - [Projects](#projects)
22
+ - [Recurring donors](#recurring-donors)
23
+ - [Segments](#segments)
24
+ - [Sites](#sites)
25
+ - [Teams](#teams)
26
+ - [Users](#users)
27
+ - [Pagination](#pagination)
28
+ - [Error handling](#error-handling)
29
+ - [Development](#development)
30
+ - [Contributing](#contributing)
31
+ - [License](#license)
8
32
 
9
33
  ## Installation
10
34
 
@@ -24,143 +48,468 @@ Or install it yourself as:
24
48
 
25
49
  ## Usage
26
50
 
27
- ### Initialization
28
-
29
- Create the client with your API key:
51
+ Create a Kentaa API client using your API key:
30
52
 
31
53
  ```ruby
32
54
  require 'kentaa/api'
33
55
 
34
- config = Kentaa::Api::Config.new('your_api_key')
35
- client = Kentaa::Api::Client.new(config)
56
+ client = Kentaa::Api::Client.new(api_key: 'your_api_key')
36
57
  ```
37
58
 
38
- ### Retrieving data
59
+ The client is created for the production environment by default. If you want to use the testing environment, then add `test: true`:
39
60
 
40
- All endpoints use the same convention for retrieving data. The method `list` is for retrieving multiple resources. The method `get` is used for retrieving a single resource.
61
+ ```ruby
62
+ client = Kentaa::Api::Client.new(api_key: 'your_api_key', test: true)
63
+ ```
41
64
 
42
- The `list` method on the endpoint returns an [Enumerable](https://ruby-doc.org/core/Enumerable.html) object:
65
+ ### Actions
43
66
 
44
67
  ```ruby
45
- actions = client.actions.list
46
-
47
- actions.each { |a| puts a.title }
48
- actions.first
68
+ # List Actions
69
+ actions = client.actions # paginated
70
+ actions = client.actions.all # non-paginated
71
+
72
+ actions.each do |action|
73
+ action.title # => "Lorem ipsum"
74
+ action.url # => "https://demo1.kentaa.nl/actie/john-doe"
75
+ end
76
+
77
+ # Get Action by ID or slug
78
+ action = client.actions.get(1)
79
+ action = client.actions.get("john-doe")
80
+
81
+ action.title # => "Lorem ipsum"
82
+ action.url # => "https://demo1.kentaa.nl/actie/john-doe"
83
+
84
+ # Create a new Action
85
+ action = client.actions.create(
86
+ title: "Lorem ipsum",
87
+ description: "Dolorum animi qui nihil iure dolore velit.",
88
+ owner_id: 1
89
+ )
90
+
91
+ action.id # => 1
92
+ action.title # => "Lorem ipsum"
93
+ action.description # => "Dolorum animi qui nihil iure dolore velit."
94
+ action.owner # => Kentaa::Api::Resources::User
95
+
96
+ # Update an Action
97
+ action = client.actions.update(1, title: "Foobar")
98
+
99
+ action.title # => "Foobar"
49
100
  ```
50
101
 
51
- The results might be part of a paginated set. You can query the next page by doing:
102
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#actions) and [Kentaa::Api::Resources::Action](lib/kentaa/api/resources/action.rb) for all available properties.
103
+
104
+
105
+ ### Companies
52
106
 
53
107
  ```ruby
54
- actions = actions.next if actions.next_page?
108
+ # List Companies
109
+ companies = client.companies # paginated
110
+ companies = client.companies.all # non-paginated
111
+
112
+ companies.each do |company|
113
+ company.title # => "Lorem ipsum"
114
+ company.url # => "https://demo1.kentaa.nl/bedrijven/kentaa-bv"
115
+ end
116
+
117
+ # Get Company by ID or slug
118
+ company = client.companies.get(1)
119
+ company = client.companies.get("kentaa-bv")
120
+
121
+ company.title # => "Lorem ipsum"
122
+ company.url # => "https://demo1.kentaa.nl/bedrijven/kentaa-bv"
55
123
  ```
56
124
 
57
- See also `Kentaa::Api::Resources::List` for the available methods for pagination.
125
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#companies) and [Kentaa::Api::Resources::Company](lib/kentaa/api/resources/company.rb) for all available properties.
58
126
 
59
- The `all` method on the endpoint returns an [Enumerator](https://ruby-doc.org/core/Enumerator.html) and will iterate automatically through all pages to retrieve the requested data.
127
+ ### Donation forms
60
128
 
61
129
  ```ruby
62
- actions = client.actions.all
130
+ # List Donation forms
131
+ donation_forms = client.donation_forms # paginated
132
+ donation_forms = client.donation_forms.all # non-paginated
133
+
134
+ donation_forms.each do |form|
135
+ form.title # => "Lorem ipsum dolor sit amet"
136
+ form.url # => "https://demo1.kentaa.nl/form"
137
+ end
138
+
139
+ # Get Donation form
140
+ form = client.donation_forms.get(1)
141
+
142
+ form.title # => "Lorem ipsum dolor sit amet"
143
+ form.owner # => Kentaa::Api::Resources::User
144
+ form.url # => "https://demo1.kentaa.nl/form"
145
+ form.total_amount # => BigDecimal("95.0")
146
+ ```
147
+
148
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#donation-forms) and [Kentaa::Api::Resources::DonationForm](lib/kentaa/api/resources/donation_form.rb) for all available properties.
149
+
150
+ ### Donations
63
151
 
64
- actions.each { |a| puts a.title }
65
- actions.first(100)
152
+ ```ruby
153
+ # List Donations
154
+ donations = client.donations # paginated
155
+ donations = client.donations.all # non-paginated
156
+
157
+ donations.each do |donations|
158
+ donation.first_name # => "John"
159
+ donation.last_name # => "Doe"
160
+ end
161
+
162
+ # Get Donation
163
+ donation = client.donations.get(1)
164
+
165
+ donation.first_name # => "John"
166
+ donation.last_name # => "Doe"
167
+ donation.amount # => BigDecimal("15.0")
168
+ donation.entity # => Kentaa::Api::Resources::Site
66
169
  ```
67
170
 
68
- ### Requests
171
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#donations) and [Kentaa::Api::Resources::Donation](lib/kentaa/api/resources/donation.rb) for all available properties.
172
+
173
+ ### Manual donations
69
174
 
70
- Below a summary of the supported requests per endpoint.
175
+ ```ruby
176
+ # List Manual donations
177
+ donations = client.manual_donations # paginated
178
+ donations = client.manual_donations.all # non-paginated
179
+
180
+ donations.each do |donations|
181
+ donation.first_name # => "John"
182
+ donation.last_name # => "Doe"
183
+ end
184
+
185
+ # Get Manual donation
186
+ donation = client.manual_donations.get(1)
187
+
188
+ donation.first_name # => "John"
189
+ donation.last_name # => "Doe"
190
+ donation.amount # => BigDecimal("15.0")
191
+ donation.entity # => Kentaa::Api::Resources::Site
192
+
193
+ # Create a Manual donation
194
+ donation = client.manual_donations.create(
195
+ first_name: "John",
196
+ last_name: "Doe",
197
+ amount: "15.0"
198
+ )
199
+
200
+ donation.id # => 1
201
+ donation.first_name # => "John"
202
+ donation.last_name # => "Doe"
203
+ donation.amount # => BigDecimal("15.0")
204
+ donation.entity # => Kentaa::Api::Resources::Site
205
+
206
+ # Update a Manual donation
207
+ donation = client.manual_donations.update(1, first_name: "Jane")
208
+
209
+ donation.first_name # => "Jane"
210
+
211
+ # Delete a Manual donation
212
+ client.manual_donations.delete(1)
213
+ ```
71
214
 
72
- #### Actions
215
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#manual-donations) and [Kentaa::Api::Resources::ManualDonation](lib/kentaa/api/resources/manual_donation.rb) for all available properties.
216
+
217
+ ### Newsletter subscriptions
73
218
 
74
219
  ```ruby
75
- actions = client.actions.list # get actions (paginated)
76
- actions = client.actions.all # get all actions (non-paginated)
220
+ # List Newsletter subscriptions
221
+ newsletter_subscriptions = client.newsletter_subscriptions # paginated
222
+ newsletter_subscriptions = client.newsletter_subscriptions.all # non-paginated
223
+
224
+ newsletter_subscriptions.each do |subscription|
225
+ subscription.email # => "john.doe@kentaa.nl"
226
+ subscription.subscription_url # => "https://demo1.kentaa.nl"
227
+ end
77
228
 
78
- action = client.actions.get(1) # query action by ID
79
- action = client.actions.get("john-doe") # query action by slug
229
+ # Get Newsletter subscription
230
+ subscription = client.newsletter_subscriptions.get(1)
231
+
232
+ subscription.email # => "john.doe@kentaa.nl"
233
+ subscription.subscription_url # => "https://demo1.kentaa.nl"
80
234
  ```
81
235
 
82
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/actions).
236
+ 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.
237
+
238
+ ### Performances
83
239
 
84
- #### Donations
240
+ Performances are available on an [Kentaa::Api::Resources::Action](lib/kentaa/api/resources/action.rb), so you first need to retrieve an Action.
85
241
 
86
242
  ```ruby
87
- donations = client.donations.list # get donations (paginated)
88
- donations = client.donations.all # get all donations (non-paginated)
243
+ action = client.actions.get(1)
244
+
245
+ # List Performances
246
+ performances = action.performances # paginated
247
+ performances = action.performances.all # non-paginated
248
+
249
+ performances.each do |performance|
250
+ performance.title # => "First tour"
251
+ performance.distance # => BigDecimal("65.25")
252
+ end
253
+
254
+ # Get Performance
255
+ donation = action.performances.get(1)
256
+
257
+ performance.title # => "First tour"
258
+ performance.distance # => BigDecimal("65.25")
89
259
 
90
- donation = client.donations.get(1) # query donation by ID
260
+ # Create a Performance
261
+ performance = action.performances.create(
262
+ title: "First tour",
263
+ performance_type: "biking",
264
+ performance_at: Time.now,
265
+ distance: "65.25"
266
+ )
267
+
268
+ performance.title # => "First tour"
269
+ performance.distance # => BigDecimal("65.25")
270
+
271
+ # Update a Performance
272
+ performance = action.performances.update(1, title: "Big tour")
273
+
274
+ performance.title # => "Big tour"
275
+
276
+ # Delete a Performance
277
+ action.performances.delete(1)
91
278
  ```
92
279
 
93
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/donations).
280
+ 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.
94
281
 
95
- #### Newsletter subscriptions
282
+ #### Performance photos
96
283
 
97
284
  ```ruby
98
- newsletter_subscriptions = client.newsletter_subscriptions.list # get newsletter subscriptions (paginated)
99
- newsletter_subscriptions = client.newsletter_subscriptions.all # get all newsletter subscriptions (non-paginated)
285
+ # List Performance photos
286
+ photos = performance.photos # paginated
287
+ photos = performance.photos.all # non-paginated
288
+
289
+ photos.each do |photo|
290
+ photos.image_url # => "https://d2a3ux41sjxpco.cloudfront.net/action_performance_photos/file/1/normal_8ce42aeb3bbb1b4964e621b42691f13d4dfa3f21.jpg"
291
+ end
292
+
293
+ # Get Performance photo
294
+ photo = performance.photos.get(1)
295
+
296
+ photo.image_url # => "https://d2a3ux41sjxpco.cloudfront.net/action_performance_photos/file/1/normal_8ce42aeb3bbb1b4964e621b42691f13d4dfa3f21.jpg"
297
+
298
+ # Create a Performance photo
299
+ photo = performance.photos.create(
300
+ io: File.open("photo.jpeg"),
301
+ content_type: "image/jpeg"
302
+ )
100
303
 
304
+ photo.image_url # => "https://d2a3ux41sjxpco.cloudfront.net/action_performance_photos/file/1/normal_8ce42aeb3bbb1b4964e621b42691f13d4dfa3f21.jpg"
305
+ ```
306
+
307
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#performances-photos) and [Kentaa::Api::Resources::PerformancePhoto](lib/kentaa/api/resources/performance_photo.rb) for all available properties.
308
+
309
+ ### Projects
101
310
 
102
- newsletter_subscriptions = client.newsletter_subscriptions.get(1) # query newsletter subscription by ID
311
+ ```ruby
312
+ # List Projects
313
+ projects = client.projects # paginated
314
+ projects = client.projects.all # non-paginated
315
+
316
+ projects.each do |project|
317
+ project.title # => "Dignissimos provident rerum enim alias magni asperna..."
318
+ project.target_amount # => 250000
319
+ end
320
+
321
+ # Get Project by ID or slug
322
+ project = client.projects.get(1)
323
+ project = client.projects.get("project")
324
+
325
+ project.title # => "Dignissimos provident rerum enim alias magni asperna..."
326
+ project.target_amount # => 250000
327
+ project.url # => "https://demo1.kentaa.nl/project/dignissimos-provident"
103
328
  ```
104
329
 
105
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/newsletter-subscriptions).
330
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#projects) and [Kentaa::Api::Resources::Project](lib/kentaa/api/resources/project.rb) for all available properties.
106
331
 
107
- #### Projects
332
+ ### Recurring donors
108
333
 
109
334
  ```ruby
110
- projects = client.projects.list # get projects (paginated)
111
- projects = client.projects.all # get all projects (non-paginated)
335
+ # List Recurring donors
336
+ recurring_donors = client.recurring_donors # paginated
337
+ recurring_donors = client.recurring_donors.all # non-paginated
338
+
339
+ recurring_donors.each do |recurring_donor|
340
+ recurring_donor.first_name # => "John"
341
+ recurring_donor.last_name # => "Doe"
342
+ end
343
+
344
+ # Get Recurring donor
345
+ recurring_donor = client.recurring_donors.get(1)
346
+
347
+ recurring_donor.first_name # => "John"
348
+ recurring_donor.last_name # => "Doe"
349
+ recurring_donor.amount # => BigDecimal("15.0")
350
+ recurring_donor.entity # => Kentaa::Api::Resources::DonationForm
351
+ ```
112
352
 
113
- project = client.projects.get(1) # query project by ID
114
- project = client.projects.get("project") # query project by slug
353
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#recurring-donors) and [Kentaa::Api::Resources::RecurringDonor](lib/kentaa/api/resources/recurring_donor.rb) for all available properties.
354
+
355
+ ### Segments
356
+
357
+ ```ruby
358
+ # List Segments
359
+ segments = client.segments # paginated
360
+ segments = client.segments.all # non-paginated
361
+
362
+ segments.each do |segment|
363
+ segment.name # => "Segment 2"
364
+ segment.url # => "https://segment-2.demo1.kentaa.nl/"
365
+ end
366
+
367
+ # Get Segment
368
+ segment = client.segments.get(1)
369
+
370
+ segment.name # => "Segment 2"
371
+ segment.title # => "Aut est maxime nostrum."
372
+ segment.url # => "https://segment-2.demo1.kentaa.nl/"
373
+ segment.target_amount # => 2685
115
374
  ```
116
375
 
117
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/projects).
376
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#segments) and [Kentaa::Api::Resources::Segment](lib/kentaa/api/resources/segment.rb) for all available properties.
377
+
378
+ ### Sites
118
379
 
119
- #### Segments
380
+ The only method here is `current`, since there is only one site per API key.
120
381
 
121
382
  ```ruby
122
- segments = client.segments.list # get segments (paginated)
123
- segments = client.segments.all # get all segments (non-paginated)
383
+ # Get current Site
384
+ site = client.sites.current
124
385
 
125
- segment = client.segments.get(1) # query segment by ID
386
+ site.title # => "Aut est maxime nostrum."
387
+ site.description # => "Maiores ut velit fugiat eos. Quae est nostrum rerum aut et nihil. Sequi eveniet occaecati et est corporis et enim."
388
+ site.url # => "https://demo1.kentaa.nl/"
126
389
  ```
127
390
 
128
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/segments).
391
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#sites) and [Kentaa::Api::Resources::Site](lib/kentaa/api/resources/site.rb) for all available properties.
129
392
 
130
- #### Sites
393
+ ### Teams
131
394
 
132
- The only method here is `current`, since there is only one site.
395
+ ```ruby
396
+ # List Teams
397
+ teams = client.teams # paginated
398
+ teams = client.teams.all # non-paginated
399
+
400
+ teams.each do |team|
401
+ team.name # => "Asperiores beatae voluptate qui."
402
+ team.url # => "https://demo1.kentaa.nl/team/asperiores-beatae-voluptate-qui"
403
+ end
404
+
405
+ # Get Team by ID or slug
406
+ team = client.teams.get(1)
407
+ team = client.teams.get("team")
408
+
409
+ team.name # => "Asperiores beatae voluptate qui."
410
+ team.url # => "https://demo1.kentaa.nl/team/asperiores-beatae-voluptate-qui"
411
+ team.total_amount # => BigDecimal("225.0")
412
+ ```
413
+
414
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#teams) and [Kentaa::Api::Resources::Team](lib/kentaa/api/resources/team.rb) for all available properties.
415
+
416
+ ### Users
133
417
 
134
418
  ```ruby
135
- site = client.sites.current # get the current site
419
+ # List Users
420
+ users = client.users # paginated
421
+ users = client.users.all # non-paginated
422
+
423
+ users.each do |user|
424
+ user.first_name # => "John"
425
+ user.last_name # => "Doe"
426
+ end
427
+
428
+ # Get User
429
+ user = client.users.get(1)
430
+
431
+ user.first_name # => "John"
432
+ user.last_name # => "Doe"
433
+
434
+ # Create an User
435
+ user = client.users.create(
436
+ first_name: "John",
437
+ last_name: "Doe"
438
+ )
439
+
440
+ user.id # => 1
441
+ user.first_name # => "John"
442
+ user.last_name # => "Doe"
443
+
444
+ # Update an User
445
+ user = client.users.update(1, first_name: "Jane")
446
+
447
+ user.first_name # => "Jane"
448
+
449
+ # Authenticate an User
450
+ user = client.users.auth(email: "john.doe@kentaa.nl", password: "secret")
451
+
452
+ user.id # => 1
453
+ user.first_name # => "John"
454
+ user.last_name # => "Doe"
136
455
  ```
137
456
 
138
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/sites).
457
+ See also the [Kentaa API docs](https://developer.kentaa.nl/kentaa-api/#users) and [Kentaa::Api::Resources::User](lib/kentaa/api/resources/user.rb) for all available properties.
458
+
459
+ ### Pagination
139
460
 
140
- #### Teams
461
+ 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.
141
462
 
142
463
  ```ruby
143
- teams = client.teams.list # get teams (paginated)
144
- teams = client.teams.all # get all teams (non-paginated)
464
+ actions = client.actions(per_page: 100)
145
465
 
146
- team = client.teams.get(1) # query team by ID
147
- team = client.teams.get("team") # query team by slug
466
+ actions.each do |action|
467
+ action.title # => "Lorem ipsum"
468
+ action.url # => "https://demo1.kentaa.nl/actie/john-doe"
469
+ end
148
470
  ```
149
471
 
150
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/teams).
472
+ You can iterate through the pages using the `.next` method and checking the result. For example:
473
+
474
+ ```ruby
475
+ actions = client.actions
476
+
477
+ loop do
478
+ actions.each do |action|
479
+ # Do something with actions
480
+ end
151
481
 
482
+ actions = actions.next
483
+ break if actions.nil?
484
+ end
485
+ ```
152
486
 
153
- #### Users
487
+ The `all` method on the endpoint returns a lazy [Enumerator](https://ruby-doc.org/core/Enumerator.html) and will automatically iterate through all pages and retrieve the requested data.
154
488
 
155
489
  ```ruby
156
- users = client.users.list # get users (paginated)
157
- users = client.users.all # get all users (non-paginated)
490
+ actions = client.actions.all
158
491
 
159
- user = client.users.get(1) # query user by ID
492
+ actions.each do |action|
493
+ action.title # => "Lorem ipsum"
494
+ action.url # => "https://demo1.kentaa.nl/actie/john-doe"
495
+ end
160
496
  ```
161
497
 
162
- See also the [Kentaa API docs](https://api.kentaa.nl/v1/doc/users).
498
+ See [Kentaa::Api::Resources::List](lib/kentaa/api/resources/list.rb) for all available pagination methods.
499
+
500
+ ## Error handling
163
501
 
502
+ All responses that are not HTTP status 20x will result in a [Kentaa::Api::RequestError](lib/kentaa/api/exception.rb).
503
+
504
+ ```ruby
505
+ begin
506
+ client.actions.get("invalid")
507
+ rescue Kentaa::Api::RequestError => e
508
+ e.message # => "404: Requested resource was not found."
509
+ e.http_code # => 404
510
+ e.errors # => Array[Kentaa::Api::Resources::Error]
511
+ end
512
+ ```
164
513
 
165
514
  ## Development
166
515
 
@@ -176,4 +525,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/Kentaa
176
525
  ## License
177
526
 
178
527
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
179
-
@@ -3,44 +3,56 @@
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 donations
15
- Kentaa::Api::Clients::Donations.new(@config)
14
+ def companies(options = {})
15
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Company, endpoint_path: '/companies'))
16
16
  end
17
17
 
18
- def manual_donations
19
- Kentaa::Api::Clients::ManualDonations.new(@config)
18
+ def donations(options = {})
19
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Donation, endpoint_path: '/donations'))
20
20
  end
21
21
 
22
- def newsletter_subscriptions
23
- Kentaa::Api::Clients::NewsletterSubscriptions.new(@config)
22
+ def donation_forms(options = {})
23
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::DonationForm, endpoint_path: '/donation-forms'))
24
24
  end
25
25
 
26
- def projects
27
- Kentaa::Api::Clients::Projects.new(@config)
26
+ def manual_donations(options = {})
27
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::ManualDonation, endpoint_path: '/manual-donations'))
28
28
  end
29
29
 
30
- def segments
31
- Kentaa::Api::Clients::Segments.new(@config)
30
+ def newsletter_subscriptions(options = {})
31
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::NewsletterSubscription, endpoint_path: '/newsletter-subscriptions'))
32
32
  end
33
33
 
34
- def sites
35
- Kentaa::Api::Clients::Sites.new(@config)
34
+ def projects(options = {})
35
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Project, endpoint_path: '/projects'))
36
36
  end
37
37
 
38
- def teams
39
- Kentaa::Api::Clients::Teams.new(@config)
38
+ def recurring_donors(options = {})
39
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::RecurringDonor, endpoint_path: '/recurring-donors'))
40
40
  end
41
41
 
42
- def users
43
- Kentaa::Api::Clients::Users.new(@config)
42
+ def segments(options = {})
43
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Segment, endpoint_path: '/segments'))
44
+ end
45
+
46
+ def sites(options = {})
47
+ Kentaa::Api::Resources::Sites.new(@config, options)
48
+ end
49
+
50
+ def teams(options = {})
51
+ Kentaa::Api::Resources::List.new(@config, options.merge(resource_class: Kentaa::Api::Resources::Team, endpoint_path: '/teams'))
52
+ end
53
+
54
+ def users(options = {})
55
+ Kentaa::Api::Resources::Users.new(@config, options)
44
56
  end
45
57
  end
46
58
  end