frederick_api 0.1.4 → 0.1.5

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: 168c1d398cb8a374ff0012cb491e0d902b6e1946
4
- data.tar.gz: 8de93424f75ff7b42c636618a5a2c1b7c0ad87df
3
+ metadata.gz: eb8dca5b04ce66431f7b3d0a64691e65c6f60c26
4
+ data.tar.gz: 14db44aaa05c3c7eece1429ed5b7b7665f43e22d
5
5
  SHA512:
6
- metadata.gz: 213760e836b093d66fdc8b3753c37b2884f76605ecb5b1795d575099fc5aab666875b8a3f3ca5db3301875f89acccfb360ab1ea6c33f2f6c17254793633fd0af
7
- data.tar.gz: 3bc9291a3656f5883477db6f5dc50963f60ada8d56120294978b9b29d9c3649746773d4c482a613002dc956e932906a15cd25d767188c9be48da511f07420b9b
6
+ metadata.gz: 17942a838abbcd627cea925ebe3b4ae084fe49907e2e158cfa994fa2dcb1e388cc54f92390d321d11523f6119fa4c42d105f5ff05002db9c5280cef7674d7715
7
+ data.tar.gz: ad0a698d3ebf401a9808bb0523f5c8d26a8d7580a3a6b753ce08ccfa72085707162a4a9b9b8f399aa2fdff9c9fac025cb86489078ab5537d0069f472e2d1659c
data/lib/frederick_api.rb CHANGED
@@ -6,8 +6,9 @@ require 'active_support/core_ext/class/attribute.rb'
6
6
 
7
7
  # FrederickAPI libs
8
8
  require 'frederick_api/configuration'
9
- require 'frederick_api/v2/paginator'
10
- require 'frederick_api/v2/query_builder'
9
+ require 'frederick_api/v2/helpers/paginator'
10
+ require 'frederick_api/v2/helpers/query_builder'
11
+ require 'frederick_api/v2/helpers/requestor'
11
12
  require 'frederick_api/v2/resource'
12
13
 
13
14
  require 'frederick_api/v2/user'
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FrederickAPI
4
+ module V2
5
+ module Helpers
6
+ # Custom paginator for json api client
7
+ # Fixes param names for pagination
8
+ # Also adds ability to get all records from a paginated API
9
+ class Paginator < JsonApiClient::Paginating::Paginator
10
+ self.page_param = 'page.number'
11
+ self.per_page_param = 'page.size'
12
+
13
+ def all_records
14
+ current_result_set = nil
15
+ results = self.result_set.to_a
16
+ first_resource = self.result_set.first
17
+
18
+ (total_pages - current_page).times do
19
+ first_resource.class.with_headers(first_resource.custom_headers) do
20
+ current_result_set = current_result_set ? current_result_set.pages.next : self.result_set.pages.next
21
+ raise 'next link not found' unless current_result_set
22
+ results.push(*current_result_set.to_a)
23
+ end
24
+ end
25
+
26
+ results
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/module'
4
+
5
+ module FrederickAPI
6
+ module V2
7
+ module Helpers
8
+ # Used to convert nested params to dot notation for Frederick API
9
+ class QueryBuilder < JsonApiClient::Query::Builder
10
+ def params
11
+ to_dot_params(
12
+ filter_params.merge(pagination_params.merge(includes_params).merge(select_params))
13
+ ).merge(order_params)
14
+ .merge(primary_key_params)
15
+ .merge(path_params)
16
+ .merge(additional_params)
17
+ end
18
+
19
+ def to_dot_params(object, prefix = nil)
20
+ return {} if object == {}
21
+
22
+ if object.is_a? Hash
23
+ object.map do |key, value|
24
+ if prefix
25
+ to_dot_params value, "#{prefix}.#{key}"
26
+ else
27
+ to_dot_params value, key.to_s
28
+ end
29
+ end.reduce(&:merge)
30
+ else
31
+ { prefix => object }
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FrederickAPI
4
+ module V2
5
+ module Helpers
6
+ # Requestor for v2 client to use built on top of JsonApiClient::Query::Requestor
7
+ class Requestor < JsonApiClient::Query::Requestor
8
+ # Retry once on unhandled server errors
9
+ def request(type, path, params)
10
+ super
11
+ rescue JsonApiClient::Errors::ConnectionError, JsonApiClient::Errors::ServerError => ex
12
+ raise ex if ex.is_a?(JsonApiClient::Errors::NotFound) || ex.is_a?(JsonApiClient::Errors::Conflict)
13
+ super
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -5,8 +5,9 @@ module FrederickAPI
5
5
  # Class from which Frederick V2 Resources inherit
6
6
  # Inherits functionality from JsonApiClient::Resource
7
7
  class Resource < JsonApiClient::Resource
8
- self.query_builder = FrederickAPI::V2::QueryBuilder
9
- self.paginator = FrederickAPI::V2::Paginator
8
+ self.query_builder = FrederickAPI::V2::Helpers::QueryBuilder
9
+ self.paginator = FrederickAPI::V2::Helpers::Paginator
10
+ self.requestor_class = FrederickAPI::V2::Helpers::Requestor
10
11
 
11
12
  attr_accessor :custom_headers
12
13
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module FrederickAPI
4
4
  # Current gem version
5
- VERSION = '0.1.4'
5
+ VERSION = '0.1.5'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frederick_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederick Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-28 00:00:00.000000000 Z
11
+ date: 2017-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_api_client
@@ -39,10 +39,11 @@ files:
39
39
  - lib/frederick_api/v2/contact_list.rb
40
40
  - lib/frederick_api/v2/contact_property.rb
41
41
  - lib/frederick_api/v2/contact_type.rb
42
+ - lib/frederick_api/v2/helpers/paginator.rb
43
+ - lib/frederick_api/v2/helpers/query_builder.rb
44
+ - lib/frederick_api/v2/helpers/requestor.rb
42
45
  - lib/frederick_api/v2/interaction.rb
43
46
  - lib/frederick_api/v2/location.rb
44
- - lib/frederick_api/v2/paginator.rb
45
- - lib/frederick_api/v2/query_builder.rb
46
47
  - lib/frederick_api/v2/resource.rb
47
48
  - lib/frederick_api/v2/user.rb
48
49
  - lib/frederick_api/version.rb
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module FrederickAPI
4
- module V2
5
- # Custom paginator for json api client
6
- # Fixes param names for pagination
7
- # Also adds ability to get all records from a paginated API
8
- class Paginator < JsonApiClient::Paginating::Paginator
9
- self.page_param = 'page.number'
10
- self.per_page_param = 'page.size'
11
-
12
- def all_records
13
- current_result_set = nil
14
- results = self.result_set.to_a
15
- first_resource = self.result_set.first
16
-
17
- (total_pages - current_page).times do
18
- first_resource.class.with_headers(first_resource.custom_headers) do
19
- current_result_set = current_result_set ? current_result_set.pages.next : self.result_set.pages.next
20
- raise 'next link not found' unless current_result_set
21
- results.push(*current_result_set.to_a)
22
- end
23
- end
24
-
25
- results
26
- end
27
- end
28
- end
29
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/module'
4
-
5
- module FrederickAPI
6
- module V2
7
- # Used to convert nested params to dot notation for Frederick API
8
- class QueryBuilder < JsonApiClient::Query::Builder
9
- def params
10
- to_dot_params(
11
- filter_params.merge(pagination_params.merge(includes_params).merge(select_params))
12
- ).merge(order_params)
13
- .merge(primary_key_params)
14
- .merge(path_params)
15
- .merge(additional_params)
16
- end
17
-
18
- def to_dot_params(object, prefix = nil)
19
- return {} if object == {}
20
-
21
- if object.is_a? Hash
22
- object.map do |key, value|
23
- if prefix
24
- to_dot_params value, "#{prefix}.#{key}"
25
- else
26
- to_dot_params value, key.to_s
27
- end
28
- end.reduce(&:merge)
29
- else
30
- { prefix => object }
31
- end
32
- end
33
- end
34
- end
35
- end