zendesk2 1.7.2 → 1.7.4

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
  SHA1:
3
- metadata.gz: 7db3f34cbbdf52fdf9a7ccbe8f4f1850ba6f91ac
4
- data.tar.gz: b06f3c2f223f5a8ea1f4815e2130112bb6e6cd3e
3
+ metadata.gz: 16ff1793762e3e79b861085c3c15546dcc0972ed
4
+ data.tar.gz: 1b221889fcadd78477031cf1b84cffffac37bf90
5
5
  SHA512:
6
- metadata.gz: 7b4d01b853ec1356f2a12b92b6f3c7060f3c107a813e936ff99efcd8f4440f7a18d06a1ac90b0caffa6a5965219eadeaea9a026abd3d20f2fc3bd0f40f83f4af
7
- data.tar.gz: 6b7345a170e99e6c335b7cfacec1551e2051a56d5c0a5caa967d9a197ea579601c503a9fb683499c912220e5aec186d0da892df9e49b6ca7c8aeeb76e6a116ff
6
+ metadata.gz: af82a3dfd968173f87118ce99a099b26ac9741d94057953abe1ffb5839512a14599010cd1fb397e94035017af99c38056c51a7cb7ec35efa2d75b814b1226ca4
7
+ data.tar.gz: cf4674bc02e4cf6215e8e9c3fb8768b71c71a78ca0839e1e36726d2a5bbac02b1936e98df9c7dfe43e5706a631d9676f42b43587ee076091f4a26e0e453f1db9
data/.travis.yml CHANGED
@@ -1,7 +1,10 @@
1
1
  language: ruby
2
+ sudo: false
3
+ cache:
4
+ - bundler
2
5
  rvm:
3
- - "2.1.2"
4
- - "1.9.3"
6
+ - "2.2"
7
+ - "1.9"
5
8
  script: "bundle exec rake --trace"
6
9
  notifications:
7
10
  email:
@@ -1,74 +1,76 @@
1
- class Zendesk2::Client
2
- class Mock
1
+ class Zendesk2::Client::Mock
2
+ attr_reader :username, :url, :token, :jwt_token
3
+ attr_accessor :last_request
3
4
 
4
- attr_reader :username, :url, :token, :jwt_token
5
- attr_accessor :last_request
5
+ def self.data
6
+ @data ||= Hash.new { |h,k| h[k] = {
7
+ :categories => {},
8
+ :forums => {},
9
+ :groups => {},
10
+ :help_center_articles => {},
11
+ :help_center_categories => {},
12
+ :help_center_sections => {},
13
+ :identities => {},
14
+ :memberships => {},
15
+ :organizations => {},
16
+ :ticket_audits => {},
17
+ :ticket_comments => {},
18
+ :ticket_fields => {},
19
+ :ticket_metrics => {},
20
+ :tickets => {},
21
+ :topic_comments => {},
22
+ :topics => {},
23
+ :user_fields => {},
24
+ :users => {},
25
+ :views => {},
26
+ }
27
+ }
28
+ end
6
29
 
7
- def self.data
8
- @data ||= Hash.new { |h,k| h[k] = {
9
- :categories => {},
10
- :forums => {},
11
- :groups => {},
12
- :help_center_articles => {},
13
- :help_center_categories => {},
14
- :help_center_sections => {},
15
- :identities => {},
16
- :memberships => {},
17
- :organizations => {},
18
- :ticket_audits => {},
19
- :ticket_comments => {},
20
- :ticket_fields => {},
21
- :ticket_metrics => {},
22
- :tickets => {},
23
- :topic_comments => {},
24
- :topics => {},
25
- :user_fields => {},
26
- :users => {},
27
- :views => {},
28
- }
29
- }
30
- end
30
+ def self.serial_id
31
+ @current_id ||= 0
32
+ @current_id += 1
33
+ @current_id
34
+ end
31
35
 
32
- def self.serial_id
33
- @current_id ||= 0
34
- @current_id += 1
35
- @current_id
36
- end
36
+ def data
37
+ self.class.data[@url]
38
+ end
37
39
 
38
- def data
39
- self.class.data[@url]
40
- end
40
+ def reset
41
+ data.clear
42
+ end
41
43
 
42
- def reset
43
- data.clear
44
- end
44
+ def self.reset
45
+ data.clear
46
+ end
45
47
 
46
- def self.reset
47
- data.clear
48
- end
48
+ def serial_id
49
+ self.class.serial_id
50
+ end
49
51
 
50
- def serial_id
51
- self.class.serial_id
52
- end
52
+ def initialize(options={})
53
+ @url = options[:url]
54
+ @path = URI.parse(url).path
55
+ @username, @password = options[:username], options[:password]
56
+ @token = options[:token]
57
+ @jwt_token = options[:jwt_token]
53
58
 
54
- def initialize(options={})
55
- @url = options[:url]
56
- @path = URI.parse(url).path
57
- @username, @password = options[:username], options[:password]
58
- @token = options[:token]
59
- @jwt_token = options[:jwt_token]
59
+ @current_user ||= self.data[:users].values.find { |u|
60
+ @username == u["name"]
61
+ } || self.create_user(
62
+ "user" => {"email" => @username, "name" => @username}
63
+ ).body["user"]
60
64
 
61
- @current_user ||= self.create_user("user" => {"email" => @username, "name" => "Mock Agent"}).body["user"]
62
- @current_user_identity ||= self.data[:identities].values.first
63
- end
65
+ @current_user_identity ||= self.data[:identities].values.first
66
+ end
64
67
 
65
- # Lazily re-seeds data after reset
66
- # @return [Hash] current user response
67
- def current_user
68
- self.data[:users][@current_user["id"]] ||= @current_user
69
- self.data[:identities][@current_user_identity["id"]] ||= @current_user_identity
68
+ # Lazily re-seeds data after reset
69
+ # @return [Hash] current user response
70
+ def current_user
71
+ self.data[:users][@current_user["id"]] ||= @current_user
72
+ self.data[:identities][@current_user_identity["id"]] ||= @current_user_identity
70
73
 
71
- @current_user
72
- end
74
+ @current_user
73
75
  end
74
76
  end
@@ -23,6 +23,8 @@ class Zendesk2::Client::TicketAudit < Zendesk2::Client::Model
23
23
  end
24
24
 
25
25
  def events
26
- (self.attributes[:events] || []).map{|ae| Zendesk2::Client::AuditEvent.for(ae.merge(ticket_audit: self, service: self.service))}
26
+ (self.attributes[:events] || []).map { |ae|
27
+ Zendesk2::Client::AuditEvent.for(ae.merge(ticket_audit: self, service: self.service))
28
+ }
27
29
  end
28
30
  end
@@ -1,71 +1,69 @@
1
- class Zendesk2::Client
2
- class Real
1
+ class Zendesk2::Client::Real
3
2
 
4
- attr_accessor :username, :url, :token, :logger, :jwt_token, :last_request
3
+ attr_accessor :username, :url, :token, :logger, :jwt_token, :last_request
5
4
 
6
- def initialize(options={})
7
- @url = if url = options[:url] || Zendesk2.defaults[:url]
8
- URI.parse(url).to_s
9
- end
5
+ def initialize(options={})
6
+ @url = if url = options[:url] || Zendesk2.defaults[:url]
7
+ URI.parse(url).to_s
8
+ end
10
9
 
11
- @logger = options[:logger] || Logger.new(nil)
12
- adapter = options[:adapter] || Faraday.default_adapter
13
- @username = options[:username] || Zendesk2.defaults[:username]
14
- @token = options.fetch(:token, Zendesk2.defaults[:token])
15
- password = options[:password] || Zendesk2.defaults[:password]
10
+ @logger = options[:logger] || Logger.new(nil)
11
+ adapter = options[:adapter] || Faraday.default_adapter
12
+ @username = options[:username] || Zendesk2.defaults[:username]
13
+ @token = options.fetch(:token, Zendesk2.defaults[:token])
14
+ password = options[:password] || Zendesk2.defaults[:password]
16
15
 
17
- service_options = options[:service_options] || {}
16
+ service_options = options[:service_options] || {}
18
17
 
19
- @auth_token = password || @token
20
- @username += "/token" if @auth_token == @token
21
- @jwt_token = options[:jwt_token]
18
+ @auth_token = password || @token
19
+ @username += "/token" if @auth_token == @token
20
+ @jwt_token = options[:jwt_token]
22
21
 
23
- raise "Missing required options: :url" unless @url
24
- raise "Missing required options: :username" unless @username
25
- raise "Missing required options: :password or :token" unless password || @token
22
+ raise "Missing required options: :url" unless @url
23
+ raise "Missing required options: :username" unless @username
24
+ raise "Missing required options: :password or :token" unless password || @token
26
25
 
27
- @service = Faraday.new({url: @url}.merge(service_options)) do |connection|
28
- # response
29
- connection.use Faraday::Request::BasicAuthentication, @username, @auth_token
30
- connection.use Faraday::Response::RaiseError
31
- connection.response :json, content_type: /\bjson/
26
+ @service = Faraday.new({url: @url}.merge(service_options)) do |connection|
27
+ # response
28
+ connection.use Faraday::Request::BasicAuthentication, @username, @auth_token
29
+ connection.use Faraday::Response::RaiseError
30
+ connection.response :json, content_type: /\bjson/
32
31
 
33
- # request
34
- connection.request :multipart
35
- connection.request :json
32
+ # request
33
+ connection.request :multipart
34
+ connection.request :json
36
35
 
37
- # idempotency
38
- connection.request :retry,
39
- :max => 30,
40
- :interval => 1,
41
- :interval_randomness => 0.2,
42
- :backoff_factor => 2
36
+ # idempotency
37
+ connection.request :retry,
38
+ :max => 30,
39
+ :interval => 1,
40
+ :interval_randomness => 0.2,
41
+ :backoff_factor => 2
43
42
 
44
- # rate limit
45
- connection.use Zendesk2::RateLimit, logger: @logger
43
+ # rate limit
44
+ connection.use Zendesk2::RateLimit, logger: @logger
46
45
 
47
- connection.use Zendesk2::Logger, @logger
48
- connection.adapter(*adapter)
49
- end
46
+ connection.use Zendesk2::Logger, @logger
47
+ connection.adapter(*adapter)
50
48
  end
49
+ end
51
50
 
52
- def request(options={})
53
- method = options[:method] || :get
54
- url = options[:url] || File.join(@url, "/api/v2", options[:path])
55
- params = options[:params] || {}
56
- body = options[:body]
57
- headers = {"User-Agent" => USER_AGENT}.merge(options[:headers] || {})
51
+ def request(options={})
52
+ method = options[:method] || :get
53
+ url = options[:url] || File.join(@url, "/api/v2", options[:path])
54
+ params = options[:params] || {}
55
+ body = options[:body]
56
+ headers = {"User-Agent" => Zendesk2::Client::USER_AGENT}.merge(options[:headers] || {})
58
57
 
59
- @service.send(method) do |req|
60
- req.url(url)
61
- req.headers.merge!(headers)
62
- req.params.merge!(params)
63
- req.body = @last_request = body
64
- end
65
- rescue Faraday::ConnectionFailed
66
- raise
67
- rescue Faraday::Error::ClientError => e
68
- raise Zendesk2::Error.new(e)
58
+ @service.send(method) do |req|
59
+ req.url(url)
60
+ req.headers.merge!(headers)
61
+ req.params.merge!(params)
62
+ req.body = @last_request = body
69
63
  end
64
+ rescue Faraday::ConnectionFailed
65
+ raise
66
+ rescue Faraday::Error::ClientError => e
67
+ raise Zendesk2::Error.new(e)
70
68
  end
71
69
  end
@@ -1,3 +1,3 @@
1
1
  module Zendesk2
2
- VERSION = "1.7.2"
2
+ VERSION = "1.7.4"
3
3
  end
@@ -0,0 +1,12 @@
1
+ #encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Zendesk2 do
5
+ context "when mocking", mock_only: true do
6
+ # this used to cause user creation conflicts
7
+ it "allows the client to be intialized more than once" do
8
+ Zendesk2::Client.new(username: "steve@example.org", url: "http://example.org")
9
+ Zendesk2::Client.new(username: "steve@example.org", url: "http://example.org")
10
+ end
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Lane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-30 00:00:00.000000000 Z
11
+ date: 2015-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cistern
@@ -246,6 +246,7 @@ files:
246
246
  - lib/zendesk2/searchable.rb
247
247
  - lib/zendesk2/version.rb
248
248
  - spec/categories_spec.rb
249
+ - spec/client_spec.rb
249
250
  - spec/forums_spec.rb
250
251
  - spec/groups_spec.rb
251
252
  - spec/help_center/articles_spec.rb
@@ -294,6 +295,7 @@ specification_version: 4
294
295
  summary: Zendesk V2 API client
295
296
  test_files:
296
297
  - spec/categories_spec.rb
298
+ - spec/client_spec.rb
297
299
  - spec/forums_spec.rb
298
300
  - spec/groups_spec.rb
299
301
  - spec/help_center/articles_spec.rb