frederick_api 0.5 → 0.6

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: 7131c40a141f015fe0057617182b61268033205cf7c1e12a63e1d89466e0ea5f
4
- data.tar.gz: 937cd61c99a614ba7425223d699583e19f24452e554f41ccbf0cd2189616685d
3
+ metadata.gz: 9848d60ef419d88f6758574988f60f90337c64645316a0c716c12aaf497f43a9
4
+ data.tar.gz: 2e6096aeca9837b93ee25a2468bc7d3e2cf2712f6c735fb7330cf13a489f3b1e
5
5
  SHA512:
6
- metadata.gz: 03f21ac6d2f71bed9bcf24e04475555bed790a421978f9ce59ebd84d9c15bfe0a509ad54f4436de1b7a8157409f0394bc39cad7f11f79486e13c4ff7bcbdcdce
7
- data.tar.gz: 9f50eb76e2907162c452971f40c135e68bd64ebceb543cd6bef9aaf5b6a30d8dbf3fd525116051e8a93953bb5e71a72187da4be8d159078c145e0366d02a3d86
6
+ metadata.gz: 06f920d1c60e09288bb9c75ef3b9be31168b93fe24ab681c33b1e2b77fb9127172e86608da5c8f862a43965867e1e33f571a91dfb80bd768cc9b227979b084dc
7
+ data.tar.gz: 738cf8ec474b270d81e79a95499325f62f70557baf09bc16220abd4d467564ead6607bf180bb22352bd309d78fdab6ce84435863341ea8c99c89985d430939b7
@@ -20,7 +20,7 @@ module FrederickAPI
20
20
  def query_builder(url)
21
21
  association_class.query_builder.new(
22
22
  association_class,
23
- association_class.requestor_class.new(association_class, url)
23
+ requestor: association_class.requestor_class.new(association_class, url)
24
24
  )
25
25
  end
26
26
 
@@ -9,9 +9,9 @@ module FrederickAPI
9
9
  class QueryBuilder < JsonApiClient::Query::Builder
10
10
  attr_reader :requestor
11
11
 
12
- def initialize(klass, requestor = nil)
13
- super(klass)
14
- @requestor = requestor || klass.requestor
12
+ def initialize(klass, opts = {})
13
+ super(klass, opts)
14
+ @requestor = opts[:requestor] || klass.requestor
15
15
  end
16
16
 
17
17
  def params
@@ -23,17 +23,6 @@ module FrederickAPI
23
23
  .merge(additional_params)
24
24
  end
25
25
 
26
- def find(args = {})
27
- case args
28
- when Hash
29
- where(args)
30
- else
31
- @primary_key = args
32
- end
33
-
34
- requestor.get(params)
35
- end
36
-
37
26
  def filter_params
38
27
  super_filter_params = super
39
28
 
@@ -65,6 +54,27 @@ module FrederickAPI
65
54
  { prefix => object }
66
55
  end
67
56
  end
57
+
58
+ protected
59
+
60
+ def _fetch
61
+ (requestor || klass.requestor).get(params)
62
+ end
63
+
64
+ private
65
+
66
+ def _new_scope(opts = {})
67
+ self.class.new(@klass,
68
+ requestor: requestor,
69
+ primary_key: opts.fetch(:primary_key, @primary_key),
70
+ pagination_params: @pagination_params.merge(opts.fetch(:pagination_params, {})),
71
+ path_params: @path_params.merge(opts.fetch(:path_params, {})),
72
+ additional_params: @additional_params.merge(opts.fetch(:additional_params, {})),
73
+ filters: @filters.merge(opts.fetch(:filters, {})),
74
+ includes: @includes + opts.fetch(:includes, []),
75
+ orders: @orders + opts.fetch(:orders, []),
76
+ fields: @fields + opts.fetch(:fields, []))
77
+ end
68
78
  end
69
79
  end
70
80
  end
@@ -32,8 +32,11 @@ module FrederickAPI
32
32
  path = resource_path(params)
33
33
 
34
34
  params.delete(klass.primary_key)
35
- return request(:post, path, params, 'X-Request-Method' => 'GET') if get_via_post_path?(path)
36
- request(:get, path, params)
35
+ if get_via_post_path?(path)
36
+ return request(:post, path, body: params.to_json, additional_headers: { 'X-Request-Method' => 'GET' })
37
+ end
38
+
39
+ request(:get, path, params: params)
37
40
  end
38
41
 
39
42
  def linked(path)
@@ -42,13 +45,16 @@ module FrederickAPI
42
45
 
43
46
  path_without_params = "#{uri.scheme}://#{uri.host}#{uri.path}"
44
47
  params = uri.query ? CGI.parse(uri.query).each_with_object({}) { |(k, v), h| h[k] = v[0] } : {}
45
- request(:post, path_without_params, params, 'X-Request-Method' => 'GET')
48
+ request(:post, path_without_params, params: params, additional_headers: { 'X-Request-Method' => 'GET' })
46
49
  end
47
50
 
48
51
  # Retry once on unhandled server errors
49
- def request(type, path, params, additional_headers = {})
52
+ def request(type, path, params: nil, body: nil, additional_headers: {})
50
53
  headers = klass.custom_headers.merge(additional_headers)
51
- make_request = proc { handle_background(handle_errors(make_request(type, path, params, headers))) }
54
+ make_request = proc do
55
+ handle_background(handle_errors(make_request(type, path, params: params, body: body, headers: headers)))
56
+ end
57
+
52
58
  begin
53
59
  make_request.call
54
60
  rescue JsonApiClient::Errors::ConnectionError, JsonApiClient::Errors::ServerError => ex
@@ -73,10 +79,12 @@ module FrederickAPI
73
79
  raise error_klass, result
74
80
  end
75
81
 
76
- def make_request(type, path, params, headers)
77
- faraday_response = connection.run(type, path, params, headers)
82
+ def make_request(type, path, params:, body:, headers:)
83
+ faraday_response = connection.run(type, path, params: params, body: body, headers: headers)
78
84
  return klass.parser.parse(klass, faraday_response) unless faraday_response.status == 303
79
85
  linked(faraday_response.headers['location'])
86
+ rescue JsonApiClient::Errors::ClientError => ex
87
+ klass.parser.parse(klass, ex.env.response)
80
88
  end
81
89
 
82
90
  def get_via_post_path?(path)
@@ -2,5 +2,5 @@
2
2
 
3
3
  module FrederickAPI
4
4
  # Current gem version
5
- VERSION = '0.5'
5
+ VERSION = '0.6'
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.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederick Engineering
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-19 00:00:00.000000000 Z
11
+ date: 2020-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_api_client
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.3
19
+ version: 1.17.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.3
26
+ version: 1.17.1
27
27
  description: Ruby client for the Frederick API
28
28
  email:
29
29
  - tech@hirefrederick.com
@@ -60,7 +60,7 @@ homepage: https://github.com/HireFrederick/frederick_api_gem
60
60
  licenses:
61
61
  - MIT
62
62
  metadata: {}
63
- post_install_message:
63
+ post_install_message:
64
64
  rdoc_options: []
65
65
  require_paths:
66
66
  - lib
@@ -75,9 +75,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  requirements: []
78
- rubyforge_project:
79
- rubygems_version: 2.7.9
80
- signing_key:
78
+ rubygems_version: 3.0.8
79
+ signing_key:
81
80
  specification_version: 4
82
81
  summary: Frederick API Client
83
82
  test_files: []