zendesk_api 1.29.0 → 1.33.0

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: 592ae735c6f79aa698f4edcd7328c5774dcffc06c00e2f28b85027586f98a48c
4
- data.tar.gz: a86e4f2d88eb2b6a05082ba5bd343942dc645af19dcfbd75d00c1ccf1e8d08fe
3
+ metadata.gz: ac58a5fc63f870e31bd1a7d33ce398aef60c203fc5ec7bba79b1422b81aa3402
4
+ data.tar.gz: 1a315f8e08e96b2f1d1c20decb998459ec5f7ddc7ee233cb6cdaa7c0374da452
5
5
  SHA512:
6
- metadata.gz: b4563b95cd57c46662876c012fcabcee71b35d39d77d93f7e36fe629f46187c001e8c817c06004fb7617c5c1c9191f0c0c8bc40662e15d550cc7721c89341822
7
- data.tar.gz: 21ebc067a097717124234eae951a8f7d8e003076e6af8958404b2e26dc0b5b08acdb3c26f1792380441802aee21f23632850338e81bb6657948990d4ddfe5aba
6
+ metadata.gz: e4021bc4c21f5b0ac9257ef8a8c0ee34e22244865f8737167be27aa057505f240d9c6996d262162cce3734759ac8b93eacf3ab3c9454066976ae1e835e5631fa
7
+ data.tar.gz: 750d62cb5fc7f404a034ff8c5cc5e3c85c59a5852e4d46d55facb224dcfc7b3f41daf29ab7cb228d06993158108cba7a76ae72c50b0acbf9ee03adcab83e73f6
@@ -40,6 +40,11 @@ module ZendeskAPI
40
40
  method = method.to_s
41
41
  options = args.last.is_a?(Hash) ? args.pop : {}
42
42
 
43
+ unless config.use_resource_cache
44
+ raise "Resource for #{method} does not exist" unless method_as_class(method)
45
+ return ZendeskAPI::Collection.new(self, method_as_class(method), options)
46
+ end
47
+
43
48
  @resource_cache[method] ||= { :class => nil, :cache => ZendeskAPI::LRUCache.new }
44
49
  if !options.delete(:reload) && (cached = @resource_cache[method][:cache].read(options.hash))
45
50
  cached
@@ -176,7 +181,7 @@ module ZendeskAPI
176
181
  builder.use ZendeskAPI::Middleware::Request::EncodeJson
177
182
 
178
183
  # Should always be first in the stack
179
- builder.use ZendeskAPI::Middleware::Request::Retry, :logger => config.logger if config.retry
184
+ builder.use ZendeskAPI::Middleware::Request::Retry, :logger => config.logger, :retry_codes => config.retry_codes, :retry_on_exception => config.retry_on_exception if config.retry
180
185
  if config.raise_error_when_rate_limited
181
186
  builder.use ZendeskAPI::Middleware::Request::RaiseRateLimited, :logger => config.logger
182
187
  end
@@ -42,8 +42,18 @@ module ZendeskAPI
42
42
  # @return [ZendeskAPI::LRUCache]
43
43
  attr_accessor :cache
44
44
 
45
+ # @return [Boolean] Whether to use resource_cache or not
46
+ attr_accessor :use_resource_cache
47
+
48
+ # specify the server error codes in which you want a retry to be attempted
49
+ attr_accessor :retry_codes
50
+
51
+ # specify if you want a (network layer) exception to elicit a retry
52
+ attr_accessor :retry_on_exception
53
+
45
54
  def initialize
46
55
  @client_options = {}
56
+ @use_resource_cache = true
47
57
 
48
58
  self.cache = ZendeskAPI::LRUCache.new(1000)
49
59
  end
@@ -20,7 +20,7 @@ module ZendeskAPI
20
20
  super
21
21
 
22
22
  if response[:body].is_a?(Hash)
23
- @errors = response[:body]["details"] || response[:body]["description"]
23
+ @errors = response[:body]["details"] || generate_error_msg(response[:body])
24
24
  end
25
25
 
26
26
  @errors ||= {}
@@ -29,6 +29,17 @@ module ZendeskAPI
29
29
  def to_s
30
30
  "#{self.class.name}: #{@errors}"
31
31
  end
32
+
33
+ private
34
+
35
+ def generate_error_msg(response_body)
36
+ return unless response_body["description"] || response_body["message"]
37
+
38
+ [
39
+ response_body["description"],
40
+ response_body["message"]
41
+ ].compact.join(" - ")
42
+ end
32
43
  end
33
44
 
34
45
  class NetworkError < ClientError; end
@@ -1,5 +1,4 @@
1
1
  require "faraday/middleware"
2
-
3
2
  module ZendeskAPI
4
3
  module Middleware
5
4
  # @private
@@ -8,19 +7,37 @@ module ZendeskAPI
8
7
  # @private
9
8
  class Retry < Faraday::Middleware
10
9
  DEFAULT_RETRY_AFTER = 10
11
- ERROR_CODES = [429, 503]
10
+ DEFAULT_ERROR_CODES = [429, 503]
12
11
 
13
12
  def initialize(app, options = {})
14
13
  super(app)
15
14
  @logger = options[:logger]
15
+ @error_codes = options.key?(:retry_codes) && options[:retry_codes] ? options[:retry_codes] : DEFAULT_ERROR_CODES
16
+ @retry_on_exception = options.key?(:retry_on_exception) && options[:retry_on_exception] ? options[:retry_on_exception] : false
16
17
  end
17
18
 
18
19
  def call(env)
19
20
  original_env = env.dup
20
- response = @app.call(env)
21
+ exception_happened = false
22
+ if @retry_on_exception
23
+ begin
24
+ response = @app.call(env)
25
+ rescue StandardError => e
26
+ exception_happened = true
27
+ end
28
+ else
29
+ response = @app.call(env)
30
+ end
31
+
32
+ if exception_happened || @error_codes.include?(response.env[:status])
33
+
34
+ if exception_happened
35
+ seconds_left = DEFAULT_RETRY_AFTER.to_i
36
+ @logger.warn "An exception happened, waiting #{seconds_left} seconds... #{e}" if @logger
37
+ else
38
+ seconds_left = (response.env[:response_headers][:retry_after] || DEFAULT_RETRY_AFTER).to_i
39
+ end
21
40
 
22
- if ERROR_CODES.include?(response.env[:status])
23
- seconds_left = (response.env[:response_headers][:retry_after] || DEFAULT_RETRY_AFTER).to_i
24
41
  @logger.warn "You have been rate limited. Retrying in #{seconds_left} seconds..." if @logger
25
42
 
26
43
  seconds_left.times do |i|
@@ -10,6 +10,8 @@ module ZendeskAPI
10
10
 
11
11
  # @internal Begin actual Resource definitions
12
12
 
13
+ class RecipientAddress < Resource; end
14
+
13
15
  class Locale < ReadResource; end
14
16
 
15
17
  class CustomRole < DataResource; end
@@ -1,3 +1,3 @@
1
1
  module ZendeskAPI
2
- VERSION = "1.29.0"
2
+ VERSION = "1.33.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.29.0
4
+ version: 1.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Davidovitz
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-04-15 00:00:00.000000000 Z
12
+ date: 2021-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -143,9 +143,9 @@ licenses:
143
143
  - Apache-2.0
144
144
  metadata:
145
145
  bug_tracker_uri: https://github.com/zendesk/zendesk_api_client_rb/issues
146
- changelog_uri: https://github.com/zendesk/zendesk_api_client_rb/blob/v1.29.0/CHANGELOG.md
147
- documentation_uri: https://www.rubydoc.info/gems/zendesk_api/1.29.0
148
- source_code_uri: https://github.com/zendesk/zendesk_api_client_rb/tree/v1.29.0
146
+ changelog_uri: https://github.com/zendesk/zendesk_api_client_rb/blob/v1.33.0/CHANGELOG.md
147
+ documentation_uri: https://www.rubydoc.info/gems/zendesk_api/1.33.0
148
+ source_code_uri: https://github.com/zendesk/zendesk_api_client_rb/tree/v1.33.0
149
149
  wiki_uri: https://github.com/zendesk/zendesk_api_client_rb/wiki
150
150
  post_install_message:
151
151
  rdoc_options: []
@@ -162,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
162
  - !ruby/object:Gem::Version
163
163
  version: 1.3.6
164
164
  requirements: []
165
- rubygems_version: 3.0.3
165
+ rubygems_version: 3.1.2
166
166
  signing_key:
167
167
  specification_version: 4
168
168
  summary: Zendesk REST API Client