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 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