4me-sdk 2.0.2 → 2.0.3
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/Gemfile.lock +1 -1
- data/README.md +5 -7
- data/lib/sdk4me/client/response.rb +6 -3
- data/lib/sdk4me/client/version.rb +1 -1
- data/spec/lib/sdk4me/response_spec.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da996ddd9ef66ae1e2b296bcf8ae34406163bbcbe157c1dc9ce8809e253468c4
|
4
|
+
data.tar.gz: 9c4aa5c40c50d5dc9365cb27c89851914d9a3361e6c1df113aa241d00599d522
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d338d9c4069d1a6d643f04dae0f6e98afe6059f2fa9f5c61f77cdb8869096a468cb369c47d702bec1caf2fff9c7e7d454dd67bc80b89c66dc4ebce8fcaf9b543
|
7
|
+
data.tar.gz: 7262b78d780457b9569c7143e39e8fbc2e1d13e5fa9d971ce263a1d666327ee7517952c428d20de1e1c851a8f082a7a45508f3abd60cf556950108a1a175d570
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -129,18 +129,16 @@ If you really want to [paginate](https://developer.4me.com/v1/general/pagination
|
|
129
129
|
|
130
130
|
```
|
131
131
|
@client = Sdk4me::Client.new
|
132
|
-
response = @client.get('organizations', {per_page:
|
132
|
+
response = @client.get('organizations', { per_page: 100 })
|
133
133
|
|
134
134
|
puts response.json # all data in an array
|
135
135
|
|
136
136
|
puts "showing page #{response.current_page}/#{response.total_pages}, with #{response.per_page} records per page"
|
137
137
|
puts "total number of records #{response.total_entries}"
|
138
138
|
|
139
|
-
# retrieve collection for
|
140
|
-
|
141
|
-
|
142
|
-
next_page = @client.get(response.pagination_link(:next))
|
143
|
-
last_page = @client.get(response.pagination_link(:last))
|
139
|
+
# retrieve collection for previous and next pages directly from the response
|
140
|
+
prev_page = @client.get(response.pagination_relative_link(:prev))
|
141
|
+
next_page = @client.get(response.pagination_relative_link(:next))
|
144
142
|
```
|
145
143
|
|
146
144
|
By default this call will return all [collection fields](https://developer.4me.com/v1/organizations/#collection-fields) for each Organization.
|
@@ -148,7 +146,7 @@ For more fields, check out the [field selection](https://developer.4me.com/v1/ge
|
|
148
146
|
|
149
147
|
The fields can be accessed using *symbols* and *strings*, and it is possible chain a number of keys in one go:
|
150
148
|
```
|
151
|
-
response = Sdk4me::Client.new.get('organizations', {per_page:
|
149
|
+
response = Sdk4me::Client.new.get('organizations', { per_page: 100, fields: 'parent' })
|
152
150
|
puts response[:parent, :name] # an array with the parent organization names
|
153
151
|
puts response['parent', 'name'] # strings are also accepted as keys
|
154
152
|
```
|
@@ -98,14 +98,17 @@ module Sdk4me
|
|
98
98
|
@total_entries ||= @response.header['X-Pagination-Total-Entries'].to_i
|
99
99
|
end
|
100
100
|
|
101
|
-
# pagination urls (full paths with server) - relations :first, :prev
|
101
|
+
# pagination urls (full paths with server) - relations :first, :prev
|
102
102
|
# Link: <https://api.4me.com/v1/requests?page=1&per_page=25>; rel="first", <https://api.4me.com/v1/requests?page=2&per_page=25>; rel="prev", etc.
|
103
103
|
def pagination_link(relation)
|
104
104
|
# split on ',' select the [url] in '<[url]>; rel="[relation]"', compact to all url's found (at most one) and take the first
|
105
|
-
(@pagination_links ||= {})[relation] ||= @response.header['Link'] &&
|
105
|
+
(@pagination_links ||= {})[relation] ||= @response.header['Link'] &&
|
106
|
+
@response.header['Link']
|
107
|
+
.split(/,\s*(?:<|$)/)
|
108
|
+
.map { |link| link[/^\s*<?(.*?)>?;\s*rel="#{relation}"\s*$/, 1] }.compact.first
|
106
109
|
end
|
107
110
|
|
108
|
-
# pagination urls (relative paths without server) - relations :first, :prev, :next
|
111
|
+
# pagination urls (relative paths without server) - relations :first, :prev, :next
|
109
112
|
def pagination_relative_link(relation)
|
110
113
|
(@pagination_relative_links ||= {})[relation] ||= pagination_link(relation) && pagination_link(relation)[%r{^https?://[^/]*(.*)}, 1]
|
111
114
|
end
|
@@ -214,7 +214,7 @@ describe Sdk4me::Response do
|
|
214
214
|
'X-Pagination-Current-Page' => 1,
|
215
215
|
'X-Pagination-Total-Pages' => 2,
|
216
216
|
'X-Pagination-Total-Entries' => 5,
|
217
|
-
'Link' => '<https://api.4me.com/v1/people?page=1&per_page=3>; rel="first",<https://api.4me.com/v1/people?page=2&per_page=3>; rel="next", <https://api.4me.com/v1/people?page=2&per_page=3>; rel="last"'
|
217
|
+
'Link' => '<https://api.4me.com/v1/people?page=1&per_page=3&fields=id,name>; rel="first",<https://api.4me.com/v1/people?fields=id%2Cname&page=2&per_page=3>; rel="next", <https://api.4me.com/v1/people?page=2&per_page=3>; rel="last"'
|
218
218
|
}
|
219
219
|
allow(@response_array.response).to receive('header') { @pagination_header }
|
220
220
|
end
|
@@ -235,16 +235,16 @@ describe Sdk4me::Response do
|
|
235
235
|
expect(@response_array.total_entries).to eq(5)
|
236
236
|
end
|
237
237
|
|
238
|
-
{ first: 'https://api.4me.com/v1/people?page=1&per_page=3',
|
239
|
-
next: 'https://api.4me.com/v1/people?page=2&per_page=3',
|
238
|
+
{ first: 'https://api.4me.com/v1/people?page=1&per_page=3&fields=id,name',
|
239
|
+
next: 'https://api.4me.com/v1/people?fields=id%2Cname&page=2&per_page=3',
|
240
240
|
last: 'https://api.4me.com/v1/people?page=2&per_page=3' }.each do |relation, link|
|
241
241
|
it "should define pagination link for :#{relation}" do
|
242
242
|
expect(@response_array.pagination_link(relation)).to eq(link)
|
243
243
|
end
|
244
244
|
end
|
245
245
|
|
246
|
-
{ first: '/v1/people?page=1&per_page=3',
|
247
|
-
next: '/v1/people?page=2&per_page=3',
|
246
|
+
{ first: '/v1/people?page=1&per_page=3&fields=id,name',
|
247
|
+
next: '/v1/people?fields=id%2Cname&page=2&per_page=3',
|
248
248
|
last: '/v1/people?page=2&per_page=3' }.each do |relation, link|
|
249
249
|
it "should define pagination relative link for :#{relation}" do
|
250
250
|
expect(@response_array.pagination_relative_link(relation)).to eq(link)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: 4me-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 4me
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|