4me-sdk 2.0.2 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|