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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1e79341f006b8b4c2b7298c9d5e571acfaaa0c405e4b19b33357385935f805d
4
- data.tar.gz: 1560ad1534d1b0a57d57de3f980be7e2d3c6892cb98950e9ad597eee70da68d5
3
+ metadata.gz: da996ddd9ef66ae1e2b296bcf8ae34406163bbcbe157c1dc9ce8809e253468c4
4
+ data.tar.gz: 9c4aa5c40c50d5dc9365cb27c89851914d9a3361e6c1df113aa241d00599d522
5
5
  SHA512:
6
- metadata.gz: 3ae58f939ad53857fc35676818476bfefdc57ca687f70958a792bb15297e2e18068ed320347f9c80d506a49bcb3a307459c2b1338e1afc75d76694609c180db5
7
- data.tar.gz: 3becf25a73045be2c246ac1903443e6418d4c8ac196e4f537e6bba4863dccd903478728d6438901263a529565fdba4ecbea781e5e083ca31df1ba3cf34445152
6
+ metadata.gz: d338d9c4069d1a6d643f04dae0f6e98afe6059f2fa9f5c61f77cdb8869096a468cb369c47d702bec1caf2fff9c7e7d454dd67bc80b89c66dc4ebce8fcaf9b543
7
+ data.tar.gz: 7262b78d780457b9569c7143e39e8fbc2e1d13e5fa9d971ce263a1d666327ee7517952c428d20de1e1c851a8f082a7a45508f3abd60cf556950108a1a175d570
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- 4me-sdk (2.0.1)
4
+ 4me-sdk (2.0.2)
5
5
  activesupport (>= 4.2)
6
6
  gem_config (>= 0.3)
7
7
  mime-types (>= 3.0)
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: 10, page: 2})
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 other pages directly from the response
140
- first_page = @client.get(response.pagination_link(:first))
141
- prev_page = @client.get(response.pagination_link(:prev))
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: 10, page: 2, fields: 'parent'})
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, :next, :last
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'] && @response.header['Link'].split(/,\s*<?/).map { |link| link[/^\s*<?(.*?)>?;\s*rel="#{relation}"\s*$/, 1] }.compact.first
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, :last
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
@@ -1,5 +1,5 @@
1
1
  module Sdk4me
2
2
  class Client
3
- VERSION = '2.0.2'.freeze
3
+ VERSION = '2.0.3'.freeze
4
4
  end
5
5
  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.2
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-03-16 00:00:00.000000000 Z
11
+ date: 2021-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport