global_registry_models 0.10.0 → 0.10.1

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