zendesk_api 1.35.0 → 1.38.0.rc1

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: 1cb0a6ce03a083efc37a6f742e90e58955a411ce76c3bfffb78ad5fc61f336b6
4
- data.tar.gz: 10d25156b4961da61e2c1b7276ef5a8e4a17664c93d4a24e8f466ec9dc2e85b1
3
+ metadata.gz: 5d882067cdc76fd3a3d9b637081938d7aac2c2f9e0638b5f9532e1263209ded4
4
+ data.tar.gz: dbe86053eb280e432cc50d83c412a1e30114ac9448aac6fb818f2ef36f19da75
5
5
  SHA512:
6
- metadata.gz: da965fc1a9d28cb7edafdb82a56a1e73b64930f7706ac32bc9980ee3da415e540362f036c8dd6101b7615ce3781e4cc9e5645780bd83c504c714c60879450dcc
7
- data.tar.gz: edbee03ff02ea28e78f88c9e1766d0cccbd0d59b068ae103f80d9c83f10cf734707e96a3341710131f93ffc346066f04a0e3d0200cc9def631cb984285086679
6
+ metadata.gz: 906d14b5d6922ae062d0056b3ad186975afc284cb9fe0a1a654d10c73174101c92c8dd72fab287cb87a0c3a7c74fda99764557b7020aeed358280109508de434
7
+ data.tar.gz: 1712eb0890655f184273f6713cda84e4373faa5e660b0ea37323fe6d49d2c8556d6c54d4cca8f639e3f0cf28e59dcf8ae5e1e6145fbf5d61898a54a171f17586
@@ -1,5 +1,3 @@
1
- require 'faraday'
2
-
3
1
  require 'zendesk_api/version'
4
2
  require 'zendesk_api/sideloading'
5
3
  require 'zendesk_api/configuration'
@@ -100,9 +98,7 @@ module ZendeskAPI
100
98
  config.retry = !!config.retry # nil -> false
101
99
 
102
100
  set_raise_error_when_rated_limited
103
-
104
101
  set_token_auth
105
-
106
102
  set_default_logger
107
103
  add_warning_callback
108
104
  end
@@ -112,7 +108,6 @@ module ZendeskAPI
112
108
  # @return [Faraday::Connection] Faraday connection for the client
113
109
  def connection
114
110
  @connection ||= build_connection
115
- return @connection
116
111
  end
117
112
 
118
113
  # Pushes a callback onto the stack. Callbacks are executed on responses, last in the Faraday middleware stack.
@@ -148,6 +143,8 @@ module ZendeskAPI
148
143
  # Retry middleware if retry is true
149
144
  def build_connection
150
145
  Faraday.new(config.options) do |builder|
146
+ builder.request :multipart
147
+
151
148
  # response
152
149
  builder.use ZendeskAPI::Middleware::Response::RaiseError
153
150
  builder.use ZendeskAPI::Middleware::Response::Callback, self
@@ -155,7 +152,6 @@ module ZendeskAPI
155
152
  builder.use ZendeskAPI::Middleware::Response::ParseIsoDates
156
153
  builder.use ZendeskAPI::Middleware::Response::ParseJson
157
154
  builder.use ZendeskAPI::Middleware::Response::SanitizeResponse
158
-
159
155
  adapter = config.adapter || Faraday.default_adapter
160
156
 
161
157
  unless GZIP_EXCEPTIONS.include?(adapter)
@@ -163,14 +159,7 @@ module ZendeskAPI
163
159
  builder.use ZendeskAPI::Middleware::Response::Deflate
164
160
  end
165
161
 
166
- # request
167
- if config.access_token && !config.url_based_access_token
168
- builder.authorization("Bearer", config.access_token)
169
- elsif config.access_token
170
- builder.use ZendeskAPI::Middleware::Request::UrlBasedAccessToken, config.access_token
171
- else
172
- builder.use Faraday::Request::BasicAuthentication, config.username, config.password
173
- end
162
+ set_authentication(builder, config)
174
163
 
175
164
  if config.cache
176
165
  builder.use ZendeskAPI::Middleware::Request::EtagCache, :cache => config.cache
@@ -186,7 +175,7 @@ module ZendeskAPI
186
175
  builder.use ZendeskAPI::Middleware::Request::RaiseRateLimited, :logger => config.logger
187
176
  end
188
177
 
189
- builder.adapter(*adapter)
178
+ builder.adapter(*adapter, &config.adapter_proc)
190
179
  end
191
180
  end
192
181
 
@@ -239,5 +228,16 @@ module ZendeskAPI
239
228
  end
240
229
  end
241
230
  end
231
+
232
+ # See https://lostisland.github.io/faraday/middleware/authentication
233
+ def set_authentication(builder, config)
234
+ if config.access_token && !config.url_based_access_token
235
+ builder.request :authorization, "Bearer", config.access_token
236
+ elsif config.access_token
237
+ builder.use ZendeskAPI::Middleware::Request::UrlBasedAccessToken, config.access_token
238
+ else
239
+ builder.request :authorization, :basic, config.username, config.password
240
+ end
241
+ end
242
242
  end
243
243
  end
@@ -420,8 +420,6 @@ module ZendeskAPI
420
420
  @collection_path ||= [@resource]
421
421
  end
422
422
 
423
- ## Fetch
424
-
425
423
  def get_response(path)
426
424
  @error = nil
427
425
  @response = @client.connection.send(@verb || "get", path) do |req|
@@ -28,6 +28,9 @@ module ZendeskAPI
28
28
  # @return [Symbol] Faraday adapter
29
29
  attr_accessor :adapter
30
30
 
31
+ # @return [Proc] Faraday adapter proc
32
+ attr_accessor :adapter_proc
33
+
31
34
  # @return [Boolean] Whether to allow non-HTTPS connections for development purposes.
32
35
  attr_accessor :allow_http
33
36
 
@@ -6,7 +6,6 @@ module ZendeskAPI
6
6
  class EncodeJson < Faraday::Middleware
7
7
  CONTENT_TYPE = 'Content-Type'.freeze
8
8
  MIME_TYPE = 'application/json'.freeze
9
- dependency 'json'
10
9
 
11
10
  def call(env)
12
11
  type = env[:request_headers][CONTENT_TYPE].to_s
@@ -4,7 +4,7 @@ module ZendeskAPI
4
4
  module Middleware
5
5
  module Response
6
6
  # @private
7
- class Callback < Faraday::Response::Middleware
7
+ class Callback < Faraday::Middleware
8
8
  def initialize(app, client)
9
9
  super(app)
10
10
  @client = client
@@ -5,11 +5,12 @@ module ZendeskAPI
5
5
  module Response
6
6
  # Faraday middleware to handle content-encoding = inflate
7
7
  # @private
8
- class Deflate < Faraday::Response::Middleware
8
+ class Deflate < Faraday::Middleware
9
9
  def on_complete(env)
10
- if !env.body.strip.empty? && env[:response_headers]['content-encoding'] == "deflate"
11
- env.body = Zlib::Inflate.inflate(env.body)
12
- end
10
+ return if env[:response_headers]['content-encoding'] != "deflate"
11
+ return if env.body.strip.empty?
12
+
13
+ env.body = Zlib::Inflate.inflate(env.body)
13
14
  end
14
15
  end
15
16
  end
@@ -7,11 +7,12 @@ module ZendeskAPI
7
7
  # @private
8
8
  module Response
9
9
  # Faraday middleware to handle content-encoding = gzip
10
- class Gzip < Faraday::Response::Middleware
10
+ class Gzip < Faraday::Middleware
11
11
  def on_complete(env)
12
- if !env[:body].strip.empty? && env[:response_headers]['content-encoding'] == "gzip"
13
- env[:body] = Zlib::GzipReader.new(StringIO.new(env[:body])).read
14
- end
12
+ return if env[:response_headers]['content-encoding'] != "gzip"
13
+ return if env[:body].force_encoding(Encoding::BINARY).strip.empty?
14
+
15
+ env[:body] = Zlib::GzipReader.new(StringIO.new(env[:body])).read
15
16
  end
16
17
  end
17
18
  end
@@ -6,7 +6,7 @@ module ZendeskAPI
6
6
  module Response
7
7
  # Parse ISO dates from response body
8
8
  # @private
9
- class ParseIsoDates < Faraday::Response::Middleware
9
+ class ParseIsoDates < Faraday::Middleware
10
10
  def call(env)
11
11
  @app.call(env).on_complete do |env|
12
12
  parse_dates!(env[:body])
@@ -3,9 +3,8 @@ module ZendeskAPI
3
3
  module Middleware
4
4
  # @private
5
5
  module Response
6
- class ParseJson < Faraday::Response::Middleware
6
+ class ParseJson < Faraday::Middleware
7
7
  CONTENT_TYPE = 'Content-Type'.freeze
8
- dependency 'json'
9
8
 
10
9
  def on_complete(env)
11
10
  type = env[:response_headers][CONTENT_TYPE].to_s
@@ -1,7 +1,7 @@
1
1
  module ZendeskAPI
2
2
  module Middleware
3
3
  module Response
4
- class SanitizeResponse < Faraday::Response::Middleware
4
+ class SanitizeResponse < Faraday::Middleware
5
5
  def on_complete(env)
6
6
  env[:body].scrub!('')
7
7
  end
@@ -5,6 +5,7 @@ require 'zendesk_api/association'
5
5
  require 'zendesk_api/associations'
6
6
  require 'zendesk_api/verbs'
7
7
 
8
+ # See docs: https://developer.zendesk.com/api-reference/
8
9
  module ZendeskAPI
9
10
  # Represents an abstract resource that only holds data.
10
11
  class Data
@@ -145,10 +146,16 @@ module ZendeskAPI
145
146
 
146
147
  alias :to_param :attributes
147
148
 
149
+ def attributes_for_save
150
+ { self.class.singular_resource_name.to_sym => attribute_changes }
151
+ end
152
+
148
153
  private
149
154
 
150
- def attributes_for_save
151
- { self.class.singular_resource_name.to_sym => attributes.changes }
155
+ # Send only the changes, for example, if the "status" attriubte
156
+ # goes from "new" to "new", we don't need to send anything
157
+ def attribute_changes
158
+ attributes.changes
152
159
  end
153
160
  end
154
161
 
@@ -189,7 +196,7 @@ module ZendeskAPI
189
196
 
190
197
  class SingularResource < Resource
191
198
  def attributes_for_save
192
- { self.class.resource_name.to_sym => attributes.changes }
199
+ { self.class.resource_name.to_sym => attribute_changes }
193
200
  end
194
201
  end
195
202
 
@@ -6,6 +6,7 @@ module ZendeskAPI
6
6
  class UserRelated < DataResource; end
7
7
  class Category < Resource; end
8
8
  class OrganizationSubscription < ReadResource; end
9
+ class CustomStatus < Resource; end
9
10
 
10
11
  # @internal Begin actual Resource definitions
11
12
 
@@ -190,8 +191,10 @@ module ZendeskAPI
190
191
 
191
192
  class Section < Resource
192
193
  end
194
+ class Translation < Resource; end
193
195
 
194
196
  has_many Section
197
+ has_many Translation
195
198
  end
196
199
 
197
200
  class Section < ReadResource
@@ -203,9 +206,14 @@ module ZendeskAPI
203
206
 
204
207
  has Category
205
208
 
209
+ class Vote < Resource; end
210
+ class Translation < Resource; end
206
211
  class Article < Resource
212
+ has_many Vote
213
+ has_many Translation
207
214
  end
208
215
 
216
+ has_many Translation
209
217
  has_many Article
210
218
  end
211
219
 
@@ -215,6 +223,11 @@ module ZendeskAPI
215
223
  "help_center/articles"
216
224
  end
217
225
  end
226
+
227
+ class Vote < Resource; end
228
+ has_many Vote
229
+ class Translation < Resource; end
230
+ has_many Translation
218
231
  end
219
232
 
220
233
  class TopicSubscription < Resource
@@ -277,6 +290,18 @@ module ZendeskAPI
277
290
  has Group
278
291
  end
279
292
 
293
+ class Interval < Resource; end
294
+
295
+ class Schedule < Resource
296
+ has_many Interval
297
+
298
+ class << self
299
+ def resource_path
300
+ "business_hours/schedules"
301
+ end
302
+ end
303
+ end
304
+
280
305
  class Request < Resource
281
306
  class Comment < DataResource
282
307
  include Save
@@ -341,6 +366,13 @@ module ZendeskAPI
341
366
  extend UpdateMany
342
367
  extend DestroyMany
343
368
 
369
+ # Unlike other attributes, "comment" is not a property of the ticket,
370
+ # but is used as a "comment on save", so it should be kept unchanged,
371
+ # See https://github.com/zendesk/zendesk_api_client_rb/issues/321
372
+ def attribute_changes
373
+ attributes.changes.merge("comment" => attributes["comment"])
374
+ end
375
+
344
376
  class Audit < DataResource
345
377
  class Event < Data
346
378
  has :author, :class => User
@@ -44,14 +44,12 @@ module ZendeskAPI
44
44
  end
45
45
 
46
46
  define_method method do |*method_args|
47
- begin
48
- send("#{method}!", *method_args)
49
- rescue ZendeskAPI::Error::RecordInvalid => e
50
- @errors = e.errors
51
- false
52
- rescue ZendeskAPI::Error::ClientError
53
- false
54
- end
47
+ send("#{method}!", *method_args)
48
+ rescue ZendeskAPI::Error::RecordInvalid => e
49
+ @errors = e.errors
50
+ false
51
+ rescue ZendeskAPI::Error::ClientError
52
+ false
55
53
  end
56
54
  end
57
55
  end
@@ -1,3 +1,3 @@
1
1
  module ZendeskAPI
2
- VERSION = "1.35.0"
2
+ VERSION = "1.38.0.rc1"
3
3
  end
data/lib/zendesk_api.rb CHANGED
@@ -1,4 +1,7 @@
1
1
  module ZendeskAPI; end
2
2
 
3
+ require 'faraday'
4
+ require 'faraday/multipart'
5
+
3
6
  require 'zendesk_api/core_ext/inflection'
4
7
  require 'zendesk_api/client'
metadata CHANGED
@@ -1,36 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.35.0
4
+ version: 1.38.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Davidovitz
8
8
  - Michael Grosser
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-01-31 00:00:00.000000000 Z
12
+ date: 2022-09-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: 0.9.0
21
- - - "<"
18
+ - - ">"
22
19
  - !ruby/object:Gem::Version
23
20
  version: 2.0.0
24
21
  type: :runtime
25
22
  prerelease: false
26
23
  version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">"
26
+ - !ruby/object:Gem::Version
27
+ version: 2.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: faraday-multipart
30
+ requirement: !ruby/object:Gem::Requirement
27
31
  requirements:
28
32
  - - ">="
29
33
  - !ruby/object:Gem::Version
30
- version: 0.9.0
31
- - - "<"
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
32
40
  - !ruby/object:Gem::Version
33
- version: 2.0.0
41
+ version: '0'
34
42
  - !ruby/object:Gem::Dependency
35
43
  name: hashie
36
44
  requirement: !ruby/object:Gem::Requirement
@@ -144,11 +152,11 @@ licenses:
144
152
  - Apache-2.0
145
153
  metadata:
146
154
  bug_tracker_uri: https://github.com/zendesk/zendesk_api_client_rb/issues
147
- changelog_uri: https://github.com/zendesk/zendesk_api_client_rb/blob/v1.35.0/CHANGELOG.md
148
- documentation_uri: https://www.rubydoc.info/gems/zendesk_api/1.35.0
149
- source_code_uri: https://github.com/zendesk/zendesk_api_client_rb/tree/v1.35.0
155
+ changelog_uri: https://github.com/zendesk/zendesk_api_client_rb/blob/v1.38.0.rc1/CHANGELOG.md
156
+ documentation_uri: https://www.rubydoc.info/gems/zendesk_api/1.38.0.rc1
157
+ source_code_uri: https://github.com/zendesk/zendesk_api_client_rb/tree/v1.38.0.rc1
150
158
  wiki_uri: https://github.com/zendesk/zendesk_api_client_rb/wiki
151
- post_install_message:
159
+ post_install_message:
152
160
  rdoc_options: []
153
161
  require_paths:
154
162
  - lib
@@ -156,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
164
  requirements:
157
165
  - - ">="
158
166
  - !ruby/object:Gem::Version
159
- version: '2.3'
167
+ version: '2.6'
160
168
  required_rubygems_version: !ruby/object:Gem::Requirement
161
169
  requirements:
162
170
  - - ">="
@@ -164,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
172
  version: 1.3.6
165
173
  requirements: []
166
174
  rubygems_version: 3.0.3
167
- signing_key:
175
+ signing_key:
168
176
  specification_version: 4
169
177
  summary: Zendesk REST API Client
170
178
  test_files: []