zendesk2 0.2.0 → 0.2.1

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.
@@ -1,33 +1,30 @@
1
+ # @abstract subclass and implement audit event specific attributes
1
2
  class Zendesk2::Client::AuditEvent < Cistern::Model
2
3
  extend Zendesk2::Attributes
3
4
  extend Forwardable
4
5
 
5
- # @return [Integer] Automatically assigned when creating events
6
- identity :id, type: :integer
7
- # @return [String] Has the value Comment
6
+ def self.all
7
+ @all ||= []
8
+ end
9
+
10
+ def self.inherited(klass)
11
+ all << klass
12
+ end
13
+
14
+ def self.for(attributes)
15
+ event_class = "Zendesk2::Client::Ticket#{attributes["type"]}"
16
+ if klass = all.find{|k| k.name == event_class}
17
+ klass.new(attributes)
18
+ else # handle unrecognized audit events
19
+ attributes.reject{|k,v| k == :connection}
20
+ end
21
+ end
22
+
23
+ # @return [String] has the event value
8
24
  attribute :type, type: :string
9
- # @return [String] The actual comment made by the author
10
- attribute :body, type: :string
11
- # @return [String] The actual comment made by the author formatted to HTML
12
- attribute :html_body, type: :string
13
- # @return [Boolean] If this is a public comment or an internal agents only note
14
- attribute :public, type: :boolean
15
- # @return [Boolean] If this comment is trusted or marked as being potentially fraudulent
16
- attribute :trusted, type: :boolean
17
- # @return [Integer] The id of the author of this comment
18
- attribute :author_id, type: :integer
19
- # @return [Array] The attachments on this comment as Attachment objects
20
- attribute :attachments, type: :array
21
25
 
22
26
  # @return [Zendesk2::Client::TicketAudit] audit that includes this event
23
27
  attr_accessor :ticket_audit
24
28
 
25
29
  def_delegators :ticket_audit, :created_at
26
-
27
- # @return [Zendesk2::Client::User] event author
28
- def author
29
- requires :author_id
30
-
31
- self.connection.users.get(self.author_id)
32
- end
33
30
  end
@@ -6,7 +6,7 @@ class Zendesk2::Client::Organization < Zendesk2::Model
6
6
  attribute :created_at, type: :time
7
7
  attribute :details, type: :string
8
8
  attribute :domain_names, type: :array
9
- attribute :external_id, type: :integer
9
+ attribute :external_id, type: :string
10
10
  attribute :group_id, type: :integer
11
11
  attribute :shared_comments, type: :boolean
12
12
  attribute :shared_tickets, type: :boolean
@@ -23,6 +23,6 @@ class Zendesk2::Client::TicketAudit < Cistern::Model
23
23
  end
24
24
 
25
25
  def events
26
- (self.attributes[:events] || []).map{|ae| self.connection.audit_event(ae.merge(ticket_audit: self))}
26
+ (self.attributes[:events] || []).map{|ae| Zendesk2::Client::AuditEvent.for(ae.merge(ticket_audit: self, connection: self.connection))}
27
27
  end
28
28
  end
@@ -0,0 +1,13 @@
1
+ class Zendesk2::Client
2
+ class TicketChange < AuditEvent
3
+ # @return [Integer] Automatically assigned when creating events
4
+ identity :id, type: :integer
5
+
6
+ # @return [String] The name of the field that was changed
7
+ attribute :field_name, type: :string
8
+ # @return [String] The name of the field that was changed
9
+ attribute :value, type: :string
10
+ # @return [Array] The previous value of the field that was changed
11
+ attribute :previous_value, type: :array, parser: lambda{|v, _| [*v]}
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ class Zendesk2::Client
2
+ class TicketComment < AuditEvent
3
+ # @return [Integer] Automatically assigned when creating events
4
+ identity :id, type: :integer
5
+
6
+ # @return [String] The actual comment made by the author
7
+ attribute :body, type: :string
8
+ # @return [String] The actual comment made by the author formatted to HTML
9
+ attribute :html_body, type: :string
10
+ # @return [Boolean] If this is a public comment or an internal agents only note
11
+ attribute :public, type: :boolea
12
+ # @return [Boolean] If this comment is trusted or marked as being potentially fraudulent
13
+ attribute :trusted, type: :boolean
14
+ # @return [Integer] The id of the author of this comment
15
+ attribute :author_id, type: :integer
16
+ # @return [Array] The attachments on this comment as Attachment objects
17
+ attribute :attachments, type: :array
18
+
19
+ # @return [Zendesk2::Client::User] event author
20
+ def author
21
+ requires :author_id
22
+
23
+ self.connection.users.get(self.author_id)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ class Zendesk2::Client
2
+ class TicketCommentPrivacyChange < AuditEvent
3
+
4
+ # @return [integer] Automatically assigned when creating events
5
+ identity :id, type: :integer
6
+
7
+ # @return [Integer] The id if the comment that changed privacy
8
+ attribute :comment_id, type: :integer
9
+ # @return [Boolean] Tells if the comment was made public or private
10
+ attribute :public, type: :boolean
11
+
12
+ # @return [Zendesk2::Client::TicketComment] ticket comment pertaining to this privacy change
13
+ def comment
14
+ requires :comment_id
15
+
16
+ self.connection.ticket_comments.get(self.comment_id)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ class Zendesk2::Client
2
+ class TicketCreate < AuditEvent
3
+ # @return [integer] Automatically assigned when creating events
4
+ identity :id, type: :integer
5
+
6
+ # @return [string] The name of the field that was set
7
+ attribute :field_name, type: :string
8
+ # @return [Array] The value of the field that was set
9
+ attribute :value, parser: lambda{|v, _| [*v]}
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ class Zendesk2::Client
2
+ class TicketNotification < AuditEvent
3
+ # @return [Integer] Automatically assigned when creating events
4
+ identity :id, type: :integer
5
+
6
+ # @return [String] The message sent to the recipients
7
+ attribute :body, type: :string
8
+ # @return [Array] A array of simple object holding the ids and names of the recipients of this notification
9
+ attribute :recipients, type: :array
10
+ # @return [String] The subject of the message sent to the recipients
11
+ attribute :subject, type: :string
12
+ # @return [Hash] A reference to the trigger that created this notification
13
+ attribute :via
14
+ end
15
+ end
@@ -0,0 +1,36 @@
1
+ class Zendesk2::Client
2
+ class TicketVoiceComment < AuditEvent
3
+ # @return [integer] Automatically assigned when creating events
4
+ identity :id, type: :integer
5
+
6
+ # @return [Array] The attachments on this comment as Attachment objects
7
+ attribute :attachments, type: :array
8
+ # @return [Integer] The id of the author of this comment
9
+ attribute :author_id, type: :integer
10
+ # @return [String] The actual comment made by the author
11
+ attribute :body, type: :string
12
+ # @return [String] A hash of properties about the call
13
+ attribute :data, type: :string
14
+ # @return [String] A formatted version of the phone number which dialed the call
15
+ attribute :formatted_from, type: :string
16
+ # @return [String] A formatted version of the phone number which answered the call
17
+ attribute :formatted_to, type: :string
18
+ # @return [String] The actual comment made by the author formatted to HTML
19
+ attribute :html_body, type: :string
20
+ # @return [Boolean] If this is a public comment or an internal agents only note
21
+ attribute :public, type: :boolean
22
+ # @return [Boolean] If true, the ticket requester can see this comment
23
+ attribute :public, type: :boolean
24
+ # @return [Boolean] If this comment is trusted or marked as being potentially fraudulent
25
+ attribute :trusted, type: :boolean
26
+ # @return [String] Has the value VoiceComment
27
+ attribute :type, type: :string
28
+
29
+ # @return [Zendesk2::Client::User] event author
30
+ def author
31
+ requires :author_id
32
+
33
+ self.connection.users.get(self.author_id)
34
+ end
35
+ end
36
+ end
@@ -119,13 +119,14 @@ class Zendesk2::Client::User < Zendesk2::Model
119
119
  end
120
120
 
121
121
  # @return [Zendesk2::Client::Tickets] tickets this user requested
122
- def requested_tickets
122
+ def tickets
123
123
  requires :identity
124
124
 
125
125
  data = connection.get_requested_tickets("id" => self.identity).body["tickets"]
126
126
 
127
127
  connection.tickets.load(data)
128
128
  end
129
+ alias requested_tickets tickets
129
130
 
130
131
  # @return [Zendesk2::Client::Tickets] tickets this user is CC'eD
131
132
  def ccd_tickets
@@ -4,6 +4,8 @@ class Zendesk2::Client < Cistern::Service
4
4
  model_path "zendesk2/client/models"
5
5
  request_path "zendesk2/client/requests"
6
6
 
7
+ require 'zendesk2/client/models/audit_event' # so special
8
+
7
9
  collection :categories
8
10
  collection :forums
9
11
  collection :groups
@@ -14,13 +16,18 @@ class Zendesk2::Client < Cistern::Service
14
16
  collection :topics
15
17
  collection :users
16
18
  collection :user_identities
17
- model :audit_event
18
19
  model :category
19
20
  model :forum
20
21
  model :group
21
22
  model :organization
22
23
  model :ticket
23
24
  model :ticket_audit
25
+ model :ticket_change
26
+ model :ticket_comment
27
+ model :ticket_comment_privacy_change
28
+ model :ticket_create
29
+ model :ticket_notification
30
+ model :ticket_voice_comment
24
31
  model :topic
25
32
  model :topic_comment
26
33
  model :user
@@ -1,4 +1,4 @@
1
- # @abstract subclass and implement {#save!}
1
+ # @abstract subclass and implement {#save!} and {#destroy!}
2
2
  class Zendesk2::Model < Cistern::Model
3
3
  attr_accessor :errors
4
4
 
@@ -1,3 +1,3 @@
1
1
  module Zendesk2
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/spec/tickets_spec.rb CHANGED
@@ -33,6 +33,8 @@ describe "tickets" do
33
33
 
34
34
  event = events.first
35
35
  event.body.should == body
36
+ event.should be_a(Zendesk2::Client::TicketComment)
37
+ event.ticket_audit.should == audit
36
38
  end
37
39
 
38
40
  it "lists comments" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,17 +9,17 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-26 00:00:00.000000000 Z
12
+ date: 2013-02-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cistern
16
- prerelease: false
17
16
  requirement: !ruby/object:Gem::Requirement
18
17
  requirements:
19
18
  - - ~>
20
19
  - !ruby/object:Gem::Version
21
20
  version: 0.2.0
22
21
  none: false
22
+ prerelease: false
23
23
  type: :runtime
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
@@ -29,13 +29,13 @@ dependencies:
29
29
  none: false
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: faraday
32
- prerelease: false
33
32
  requirement: !ruby/object:Gem::Requirement
34
33
  requirements:
35
34
  - - ! '>='
36
35
  - !ruby/object:Gem::Version
37
36
  version: '0'
38
37
  none: false
38
+ prerelease: false
39
39
  type: :runtime
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  requirements:
@@ -45,13 +45,13 @@ dependencies:
45
45
  none: false
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: faraday_middleware
48
- prerelease: false
49
48
  requirement: !ruby/object:Gem::Requirement
50
49
  requirements:
51
50
  - - ! '>='
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0'
54
53
  none: false
54
+ prerelease: false
55
55
  type: :runtime
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
@@ -61,13 +61,13 @@ dependencies:
61
61
  none: false
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: addressable
64
- prerelease: false
65
64
  requirement: !ruby/object:Gem::Requirement
66
65
  requirements:
67
66
  - - ! '>='
68
67
  - !ruby/object:Gem::Version
69
68
  version: '0'
70
69
  none: false
70
+ prerelease: false
71
71
  type: :runtime
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
@@ -105,6 +105,12 @@ files:
105
105
  - lib/zendesk2/client/models/ticket.rb
106
106
  - lib/zendesk2/client/models/ticket_audit.rb
107
107
  - lib/zendesk2/client/models/ticket_audits.rb
108
+ - lib/zendesk2/client/models/ticket_change.rb
109
+ - lib/zendesk2/client/models/ticket_comment.rb
110
+ - lib/zendesk2/client/models/ticket_comment_privacy_change.rb
111
+ - lib/zendesk2/client/models/ticket_create.rb
112
+ - lib/zendesk2/client/models/ticket_notification.rb
113
+ - lib/zendesk2/client/models/ticket_voice_comment.rb
108
114
  - lib/zendesk2/client/models/tickets.rb
109
115
  - lib/zendesk2/client/models/topic.rb
110
116
  - lib/zendesk2/client/models/topic_comment.rb
@@ -210,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
216
  none: false
211
217
  requirements: []
212
218
  rubyforge_project:
213
- rubygems_version: 1.8.24
219
+ rubygems_version: 1.8.25
214
220
  signing_key:
215
221
  specification_version: 3
216
222
  summary: Zendesk V2 API client
@@ -227,4 +233,3 @@ test_files:
227
233
  - spec/topics_spec.rb
228
234
  - spec/user_identities_spec.rb
229
235
  - spec/users_spec.rb
230
- has_rdoc: