zaikio-client-helpers 0.1.1 → 0.2.3

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: 5f9d6f6f113ac843f051aa75868b818e5d61320f593f134b40355dcf453f27dd
4
- data.tar.gz: 39fbcef434b1bdc0b6dd9a9116d0213a14ffb4cc92252c790ffb451656eade15
3
+ metadata.gz: 429b80bf8b9d429a9cebbf05e6621a37d891d5cedb9c12f92cdf87f8902006da
4
+ data.tar.gz: 448b5a7fe652b0c2cc540da2f8f33b1f689c3f29f16401e0828787cd72385108
5
5
  SHA512:
6
- metadata.gz: a84a8904648fc53c027e645cf687e503667075cadc244bc31f5c988b2ce1573ea6fdf8e1b586b5abbb013b9ae96259d8c3f837481981b91056d067933869576b
7
- data.tar.gz: 1136f7ce6cdd6da736c344c27beafb7ed5c275b95a4d993844c3e93f7e8f10b704b663e1b4446f7d7584eae7dc9896d2be79f2caebc66b8fa2933d1db94dd10b
6
+ metadata.gz: bb55ed4c40c35ae902df31aa4cc0a5e2600f9c48dfac43e50acde69f5af1ae1c76e46d3b94c5deb1205638ac30ca040b500c6dc9e16789dfd69e1d55ec6ac4f7
7
+ data.tar.gz: 0caa6bd56a7716321d8fb99b7b53132c23b0d83d7843e832b3c5cd557d86e9db249e3d6f6c41ec91b786a822e6a154a34c52d0d957deba26b2052e4065e7da06
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.3] - 2021-11-12
4
+
5
+ - Handle "uncountable" responses (i.e. those without a Total-Count or Total-Pages header)
6
+
7
+ ## [0.2.2] - 2021-08-12
8
+
9
+ - Attempt to fix `NoMethodError` when looking for pagination headers
10
+
11
+ ## [0.2.1] - 2021-08-05
12
+
13
+ - Fixed `with_fallback` from spyke by aliasing the correct error classes
14
+
15
+ ## [0.2.0] - 2021-07-22
16
+
17
+ - Add `Zaikio:Error` and allow setting arbitrary attributes on the exceptions
18
+ - Add `Zaikio::RateLimitedError` when HTTP 429 occurs (note that this subclasses
19
+ `Zaikio::ConnectionError` so all existing error handling should continue to work).
20
+
3
21
  ## [0.1.1] - 2021-06-18
4
22
 
5
23
  - Require `zaikio/client/model` as part of gem loading to avoid need to load it elsewhere
@@ -4,15 +4,21 @@ require "multi_json"
4
4
  module Zaikio::Client::Helpers
5
5
  class JSONParser < Faraday::Response::Middleware
6
6
  def on_complete(env)
7
- connection_error(env) unless /^(2\d\d)|422|404$/.match?(env.status.to_s)
8
-
9
- raise Spyke::ResourceNotFound if env.status.to_s == "404"
10
-
11
- env.body = parse_body(env.body)
7
+ case env.status
8
+ when 404 then raise Spyke::ResourceNotFound.new(nil, url: env.url)
9
+ when 429 then raise Zaikio::RateLimitedError.new(nil, url: env.url)
10
+ when (200..299), 422 then env.body = parse_body(env.body)
11
+ else connection_error(env)
12
+ end
12
13
  end
13
14
 
14
15
  def connection_error(env)
15
- raise Spyke::ConnectionError, "Status: #{env.status}, URL: #{env.url}, body: #{env.body}"
16
+ raise Spyke::ConnectionError.new(
17
+ "Status: #{env.status}, URL: #{env.url}, body: #{env.body}",
18
+ status: env.status,
19
+ url: env.url,
20
+ body: env.body
21
+ )
16
22
  end
17
23
 
18
24
  def parse_body(body)
@@ -63,7 +63,7 @@ module Zaikio::Client::Helpers
63
63
  class Relation < Spyke::Relation
64
64
  HEADERS.each_key do |symbol|
65
65
  define_method(symbol) do
66
- find_some.metadata[METADATA_KEY][symbol]
66
+ find_some.metadata.dig(METADATA_KEY, symbol)
67
67
  end
68
68
  end
69
69
 
@@ -76,7 +76,11 @@ module Zaikio::Client::Helpers
76
76
  end
77
77
 
78
78
  def last_page?
79
- current_page >= total_pages
79
+ if total_pages.nil?
80
+ find_some.empty?
81
+ else
82
+ current_page >= total_pages
83
+ end
80
84
  end
81
85
 
82
86
  def supports_pagination?
@@ -3,7 +3,7 @@
3
3
  module Zaikio
4
4
  module Client
5
5
  module Helpers
6
- VERSION = "0.1.1"
6
+ VERSION = "0.2.3"
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,31 @@
1
+ module Zaikio
2
+ class Error < StandardError
3
+ def initialize(message = nil, **opts)
4
+ super(message)
5
+
6
+ opts.each do |key, value|
7
+ ivar = "@#{key}".to_sym
8
+ instance_variable_set(ivar, value)
9
+ define_singleton_method(key) { instance_variable_get(ivar) }
10
+ end
11
+ end
12
+ end
13
+
14
+ class ResourceNotFound < Zaikio::Error; end
15
+
16
+ class ConnectionError < Zaikio::Error; end
17
+ class RateLimitedError < ConnectionError; end
18
+ end
19
+
20
+ require "spyke"
21
+
22
+ module Spyke
23
+ instance_eval do
24
+ # avoid warning: already initialized constant
25
+ remove_const("ConnectionError")
26
+ remove_const("ResourceNotFound")
27
+ end
28
+
29
+ ConnectionError = Zaikio::ConnectionError
30
+ ResourceNotFound = Zaikio::ResourceNotFound
31
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "zaikio/client/helpers/version"
4
4
 
5
+ require_relative "zaikio/error"
5
6
  require_relative "zaikio/client/model"
6
7
  require_relative "zaikio/client/helpers/json_parser"
7
8
  require_relative "zaikio/client/helpers/pagination"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zaikio-client-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zaikio GMBH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-29 00:00:00.000000000 Z
11
+ date: 2021-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -96,6 +96,7 @@ files:
96
96
  - lib/zaikio/client/helpers/pagination.rb
97
97
  - lib/zaikio/client/helpers/version.rb
98
98
  - lib/zaikio/client/model.rb
99
+ - lib/zaikio/error.rb
99
100
  homepage: https://github.com/zaikio/zaikio-client-helpers
100
101
  licenses:
101
102
  - MIT
@@ -111,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
112
  requirements:
112
113
  - - ">="
113
114
  - !ruby/object:Gem::Version
114
- version: '0'
115
+ version: '2.3'
115
116
  required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  requirements:
117
118
  - - ">="