global_registry_models 0.10.0 → 0.10.1

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
  SHA1:
3
- metadata.gz: ed7ae0f1d19ad9047f2568f537adeccde1e7b047
4
- data.tar.gz: 11739939e09ac5e9c63d108ceaede45058d49af4
3
+ metadata.gz: e82271ef6df1f5be945126682c4f9357b21c2eac
4
+ data.tar.gz: aaba8eaa40e2ff580239834c5ba5c3baca24071b
5
5
  SHA512:
6
- metadata.gz: 384a5e4275b3943e9026e4ad3c320703c89197b4da0c555d63730905da3d3d61494a2911d8e840f5ebb85b38277f4c37f4fb477cfb5dac19db151ad42cd57b99
7
- data.tar.gz: 1e3986efb6ae0f33d2e2b097c6c1a04058228a51342a1cc7171f31a398ac48b628fbdf575b3e65e86b82e54667b8ab87663911842becba74b0509718c789a6a6
6
+ metadata.gz: 7cae4dd9df7e467dc3101d12162b31ed84f94e85229c9dc16287c76d4bdafa5b11903991979c7860aca47be93153fb0fc01c925df80efbf3b692461d1f752b3e
7
+ data.tar.gz: 26fbfa51cf9db6ac70f64f8b4ae438a6c8672d4137fcbb56b8d8fb8aaabd1c213da273111097d19b8b2da633bb59a7d524bfbe0275ee794ee8412d42cbb8f441
@@ -13,7 +13,7 @@ module GlobalRegistryModels
13
13
  GlobalRegistryModels::Collection.new(meta: {}, list: []).tap do |collection|
14
14
  page_num = start_page
15
15
  loop do
16
- sub_collection = GlobalRegistryModels::Retryer.new(RestClient::InternalServerError, max_attempts: max_attempts).try do
16
+ sub_collection = GlobalRegistryModels::Retryer.new([Net::HTTPGatewayTimeOut, RestClient::InternalServerError], max_attempts: max_attempts).try do
17
17
  self.search(filters: filters, page: page_num, per_page: per_page, order: order, fields: fields, ruleset: ruleset)
18
18
  end
19
19
  collection.concat sub_collection.all
@@ -6,9 +6,10 @@ module GlobalRegistryModels
6
6
  module ClassMethods
7
7
 
8
8
  def search(filters: nil, page: nil, per_page: nil, order: nil, fields: nil, ruleset: nil)
9
- #params = search_params(filters, name, page, per_page, order, fields, ruleset)
10
-
11
- params = search_params.merge({
9
+
10
+ params = params_by_offset_and_limit(page, per_page) if requires_pagination?(page, per_page)
11
+
12
+ params ||= search_params.merge({
12
13
  page: page,
13
14
  per_page: per_page,
14
15
  order: order,
@@ -18,8 +19,41 @@ module GlobalRegistryModels
18
19
 
19
20
  params = clean_params(filters, params)
20
21
  response = GlobalRegistryModels::ResponseParser.new(global_registry_resource.get(params))
21
- Collection.new meta: response.meta, list: response.objects
22
-
22
+
23
+ meta, objects = extract_meta_and_objects(page, per_page, response)
24
+
25
+ Collection.new meta: meta, list: objects
26
+ end
27
+
28
+ def params_by_offset_and_limit(page, per_page)
29
+ {
30
+ offset: offset(per_page, page),
31
+ limit: per_page + 1
32
+ }
33
+ end
34
+
35
+ def extract_meta_and_objects(page, per_page, response)
36
+ return [response.meta, response.objects] unless requires_pagination?(page, per_page)
37
+ meta = {
38
+ "page" => page.to_i,
39
+ "next_page" => next_page?(per_page, response.objects.count),
40
+ "from" => offset(per_page, page)+1,
41
+ "to" => offset(per_page, page).to_i + per_page
42
+ }
43
+ objects = ( next_page?(per_page, response.objects.count) ? response.objects[0...-1] : response.objects )
44
+ return [ meta, objects ]
45
+ end
46
+
47
+ def requires_pagination?(page, per_page)
48
+ !has_meta && page && per_page
49
+ end
50
+
51
+ def offset(per_page, page)
52
+ per_page.to_i * (page.to_i - 1)
53
+ end
54
+
55
+ def next_page?(per_page, objects_count)
56
+ per_page + 1 == objects_count
23
57
  end
24
58
 
25
59
  def clean_params( filters, params )
@@ -26,6 +26,9 @@ module GlobalRegistryModels
26
26
  to_s.gsub(/.*::/, '').underscore
27
27
  end
28
28
 
29
+ def self.has_meta
30
+ true
31
+ end
29
32
  end
30
33
  end
31
34
  end
@@ -18,6 +18,10 @@ module GlobalRegistryModels
18
18
  }
19
19
  end
20
20
 
21
+ def self.has_meta
22
+ true
23
+ end
24
+
21
25
  end
22
26
  end
23
27
  end
@@ -18,6 +18,10 @@ module GlobalRegistryModels
18
18
  { 'measurement_type' => attributes }
19
19
  end
20
20
 
21
+ def self.has_meta
22
+ true
23
+ end
24
+
21
25
  end
22
26
  end
23
27
  end
@@ -19,6 +19,10 @@ module GlobalRegistryModels
19
19
  { 'relationship_type' => attributes }
20
20
  end
21
21
 
22
+ def self.has_meta
23
+ true
24
+ end
25
+
22
26
  end
23
27
  end
24
28
  end
@@ -16,6 +16,10 @@ module GlobalRegistryModels
16
16
  }
17
17
  end
18
18
 
19
+ def self.has_meta
20
+ true
21
+ end
22
+
19
23
  end
20
24
  end
21
25
  end
@@ -17,6 +17,10 @@ module GlobalRegistryModels
17
17
  }
18
18
  end
19
19
 
20
+ def self.has_meta
21
+ false
22
+ end
23
+
20
24
  end
21
25
  end
22
26
  end
@@ -1,3 +1,3 @@
1
1
  module GlobalRegistryModels
2
- VERSION = '0.10.0'
2
+ VERSION = '0.10.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: global_registry_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sheldon Dueck
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-02-12 00:00:00.000000000 Z
12
+ date: 2016-02-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel