frederick_api 0.5 → 0.6

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
  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: []