zendesk2 0.3.0 → 0.3.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.
- data/lib/zendesk2/client/models/ticket.rb +7 -2
- data/lib/zendesk2/client/models/ticket_comments.rb +23 -0
- data/lib/zendesk2/client/models/ticket_metric.rb +54 -0
- data/lib/zendesk2/client/models/ticket_metrics.rb +10 -0
- data/lib/zendesk2/client/requests/get_ticket_comments.rb +22 -0
- data/lib/zendesk2/client/requests/get_ticket_metric.rb +43 -0
- data/lib/zendesk2/client/requests/get_ticket_metrics.rb +22 -0
- data/lib/zendesk2/client/requests/update_ticket.rb +13 -10
- data/lib/zendesk2/client.rb +8 -0
- data/lib/zendesk2/version.rb +1 -1
- metadata +9 -2
@@ -115,9 +115,14 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
|
|
115
115
|
self.connection.ticket_audits(ticket_id: self.identity).all
|
116
116
|
end
|
117
117
|
|
118
|
-
# @return [
|
118
|
+
# @return [Zendesk2::Client::TicketMetric] metrics for this ticket
|
119
|
+
def metrics
|
120
|
+
Zendesk2::Client::TicketMetric.new(self.connection.get_ticket_metric("ticket_id" => self.identity).body["ticket_metric"])
|
121
|
+
end
|
122
|
+
|
123
|
+
# @return [Array<Zendesk2::Client::TicketComment>] all comments for this ticket
|
119
124
|
def comments
|
120
|
-
|
125
|
+
self.connection.ticket_comments(ticket_id: self.identity).all
|
121
126
|
end
|
122
127
|
|
123
128
|
private
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Zendesk2::Client::TicketComments < Zendesk2::Collection
|
2
|
+
|
3
|
+
model Zendesk2::Client::TicketComment
|
4
|
+
|
5
|
+
attribute :ticket_id, type: :integer
|
6
|
+
|
7
|
+
self.collection_method = :get_ticket_comments
|
8
|
+
self.collection_root = "comments"
|
9
|
+
|
10
|
+
def ticket
|
11
|
+
self.connection.tickets.get(self.ticket_id)
|
12
|
+
end
|
13
|
+
|
14
|
+
def all(params={})
|
15
|
+
requires :ticket_id
|
16
|
+
|
17
|
+
body = connection.send(collection_method, {"ticket_id" => self.ticket_id}.merge(params)).body
|
18
|
+
|
19
|
+
collection = self.clone.load(body[collection_root])
|
20
|
+
collection.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
|
21
|
+
collection
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class Zendesk2::Client::TicketMetric < Cistern::Model
|
2
|
+
extend Zendesk2::Attributes
|
3
|
+
|
4
|
+
# @return [Integer] Automatically assigned
|
5
|
+
identity :id, type: :integer
|
6
|
+
# @return [Integer] The ID of the associated ticket
|
7
|
+
attribute :ticket_id, type: :integer
|
8
|
+
# @return [Time] The time the audit was created
|
9
|
+
attribute :created_at, type: :time
|
10
|
+
# @return [Time] The time the audit was last updated
|
11
|
+
attribute :updated_at, type: :time
|
12
|
+
|
13
|
+
# @return [Integer] Number of groups this ticket passed through
|
14
|
+
attribute :group_stations, type: :integer
|
15
|
+
# @return [Integer] Number of assignees this ticket had
|
16
|
+
attribute :assignee_stations, type: :integer
|
17
|
+
# @return [Integer] Total number of times the ticket was reopened
|
18
|
+
attribute :reopens, type: :integer
|
19
|
+
# @return [Integer] Total number of times ticket was replied to
|
20
|
+
attribute :replies, type: :integer
|
21
|
+
|
22
|
+
# @return [Time] When the assignee last updated the ticket
|
23
|
+
attribute :assignee_updated_at, type: :time
|
24
|
+
# @return [Time] When the requester last updated the ticket
|
25
|
+
attribute :requester_updated_at, type: :time
|
26
|
+
# @return [Time] When the status was last updated
|
27
|
+
attribute :status_updated_at, type: :time
|
28
|
+
# @return [Time] When the ticket was initially assigned
|
29
|
+
attribute :initially_assigned_at, type: :time
|
30
|
+
# @return [Time] When the ticket was last assigned
|
31
|
+
attribute :assigned_at, type: :time
|
32
|
+
# @return [Time] When the ticket was solved
|
33
|
+
attribute :solved_at, type: :time
|
34
|
+
# @return [Time] When the latest comment was added
|
35
|
+
attribute :latest_comment_added_at, type: :time
|
36
|
+
|
37
|
+
# @return [Hash] Number of minutes to the first resolution time inside and out of business hours
|
38
|
+
attribute :first_resolution_time_in_minutes
|
39
|
+
# @return [Hash] Number of minutes to the first reply inside and out of business hours
|
40
|
+
attribute :reply_time_in_minutes
|
41
|
+
# @return [Hash] Number of minutes to the full resolution inside and out of business hours
|
42
|
+
attribute :full_resolution_time_in_minutes
|
43
|
+
# @return [Hash] Number of minutes the agent spent waiting inside and out of business hours
|
44
|
+
attribute :agent_wait_time_in_minutes
|
45
|
+
# @return [Hash] Number of minutes the requester spent waiting inside and out of business hours
|
46
|
+
attribute :requester_wait_time_in_minutes
|
47
|
+
|
48
|
+
def ticket
|
49
|
+
requires :ticket_id
|
50
|
+
|
51
|
+
self.connection.tickets.get(self.ticket_id)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Zendesk2::Client::TicketMetrics < Zendesk2::Collection
|
2
|
+
model Zendesk2::Client::TicketMetric
|
3
|
+
|
4
|
+
attribute :ticket_id, type: :integer
|
5
|
+
|
6
|
+
self.collection_method = :get_ticket_metrics
|
7
|
+
self.collection_root = "ticket_metrics"
|
8
|
+
self.model_method = :get_ticket_metric
|
9
|
+
self.model_root = "ticket_metric"
|
10
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def get_ticket_comments(params={})
|
4
|
+
ticket_id = params["ticket_id"]
|
5
|
+
request(
|
6
|
+
:method => :get,
|
7
|
+
:path => "/tickets/#{ticket_id}/comments.json"
|
8
|
+
)
|
9
|
+
end
|
10
|
+
end # Real
|
11
|
+
|
12
|
+
class Mock
|
13
|
+
def get_ticket_comments(params={})
|
14
|
+
ticket_id = params["ticket_id"]
|
15
|
+
|
16
|
+
page(params,
|
17
|
+
:ticket_comments,
|
18
|
+
"/tickets/#{ticket_id}/comments.json",
|
19
|
+
"comments")
|
20
|
+
end
|
21
|
+
end # Mock
|
22
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def get_ticket_metric(params={})
|
4
|
+
id = params["id"]
|
5
|
+
ticket_id = params["ticket_id"]
|
6
|
+
if id
|
7
|
+
request(
|
8
|
+
:method => :get,
|
9
|
+
:path => "/ticket_metrics/#{id}.json"
|
10
|
+
)
|
11
|
+
else
|
12
|
+
request(
|
13
|
+
:method => :get,
|
14
|
+
:path => "/tickets/#{ticket_id}/metrics.json"
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end # Real
|
19
|
+
|
20
|
+
class Mock
|
21
|
+
def get_ticket_metric(params={})
|
22
|
+
id = params["id"]
|
23
|
+
ticket_id = params["ticket_id"]
|
24
|
+
|
25
|
+
path = "/tickets_metrics/#{id}.json"
|
26
|
+
|
27
|
+
if body = self.data[:ticket_metrics][id]
|
28
|
+
response(
|
29
|
+
:path => path,
|
30
|
+
:body => {
|
31
|
+
"ticket_metric" => body
|
32
|
+
},
|
33
|
+
)
|
34
|
+
else
|
35
|
+
response(
|
36
|
+
:path => path,
|
37
|
+
:status => 404,
|
38
|
+
:body => {"error" => "RecordNotFound", "description" => "Not found"},
|
39
|
+
)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end # Mock
|
43
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def get_ticket_metrics(params={})
|
4
|
+
page_params = Zendesk2.paging_parameters(params)
|
5
|
+
|
6
|
+
request(
|
7
|
+
:params => page_params,
|
8
|
+
:method => :get,
|
9
|
+
:path => "/ticket_metrics.json",
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end # Real
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def get_ticket_metrics(params={})
|
16
|
+
page(params,
|
17
|
+
:ticket_metrics,
|
18
|
+
"/ticket_metrics.json",
|
19
|
+
"metrics")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -18,6 +18,18 @@ class Zendesk2::Client
|
|
18
18
|
body = self.data[:tickets][ticket_id].merge!(params)
|
19
19
|
|
20
20
|
if comment = params["comment"]
|
21
|
+
comment_id = self.class.new_id
|
22
|
+
comment_data = self.data[:ticket_comments][comment_id] = {
|
23
|
+
"id" => comment_id,
|
24
|
+
"type" => "Comment",
|
25
|
+
"author_id" => current_user["id"],
|
26
|
+
"body" => comment["body"],
|
27
|
+
"html_body" => "<p>#{comment["body"]}</p>",
|
28
|
+
"public" => comment["public"].nil? ? true : comment["public"],
|
29
|
+
"trusted" => comment["trusted"].nil? ? true : comment["trusted"],
|
30
|
+
"attachments" => comment["attachments"] || [],
|
31
|
+
}
|
32
|
+
|
21
33
|
audit_id = self.class.new_id
|
22
34
|
self.data[:ticket_audits][audit_id] = {
|
23
35
|
"id" => audit_id,
|
@@ -42,16 +54,7 @@ class Zendesk2::Client
|
|
42
54
|
},
|
43
55
|
"custom" => {},
|
44
56
|
},
|
45
|
-
"events" => [
|
46
|
-
"id" => self.class.new_id,
|
47
|
-
"type" => "Comment",
|
48
|
-
"author_id" => current_user["id"],
|
49
|
-
"body" => comment["body"],
|
50
|
-
"html_body" => "<p>#{comment["body"]}</p>",
|
51
|
-
"public" => comment["public"].nil? ? true : comment["public"],
|
52
|
-
"trusted" => comment["trusted"].nil? ? true : comment["trusted"],
|
53
|
-
"attachments" => comment["attachments"] || [],
|
54
|
-
]
|
57
|
+
"events" => [comment_data]
|
55
58
|
}
|
56
59
|
end
|
57
60
|
|
data/lib/zendesk2/client.rb
CHANGED
@@ -11,7 +11,9 @@ class Zendesk2::Client < Cistern::Service
|
|
11
11
|
collection :groups
|
12
12
|
collection :organizations
|
13
13
|
collection :ticket_audits
|
14
|
+
collection :ticket_metrics
|
14
15
|
collection :tickets
|
16
|
+
collection :ticket_comments
|
15
17
|
collection :topic_comments
|
16
18
|
collection :topics
|
17
19
|
collection :users
|
@@ -22,6 +24,7 @@ class Zendesk2::Client < Cistern::Service
|
|
22
24
|
model :organization
|
23
25
|
model :ticket
|
24
26
|
model :ticket_audit
|
27
|
+
model :ticket_metric
|
25
28
|
model :ticket_change
|
26
29
|
model :ticket_comment
|
27
30
|
model :ticket_comment_privacy_change
|
@@ -70,6 +73,9 @@ class Zendesk2::Client < Cistern::Service
|
|
70
73
|
request :get_ticket
|
71
74
|
request :get_ticket_audit
|
72
75
|
request :get_ticket_audits
|
76
|
+
request :get_ticket_comments
|
77
|
+
request :get_ticket_metric
|
78
|
+
request :get_ticket_metrics
|
73
79
|
request :get_tickets
|
74
80
|
request :get_topic
|
75
81
|
request :get_topic_comment
|
@@ -171,6 +177,8 @@ class Zendesk2::Client < Cistern::Service
|
|
171
177
|
:identities => {},
|
172
178
|
:organizations => {},
|
173
179
|
:ticket_audits => {},
|
180
|
+
:ticket_comments => {},
|
181
|
+
:ticket_metrics => {},
|
174
182
|
:tickets => {},
|
175
183
|
:topic_comments => {},
|
176
184
|
:topics => {},
|
data/lib/zendesk2/version.rb
CHANGED
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.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -125,7 +125,10 @@ files:
|
|
125
125
|
- lib/zendesk2/client/models/ticket_change.rb
|
126
126
|
- lib/zendesk2/client/models/ticket_comment.rb
|
127
127
|
- lib/zendesk2/client/models/ticket_comment_privacy_change.rb
|
128
|
+
- lib/zendesk2/client/models/ticket_comments.rb
|
128
129
|
- lib/zendesk2/client/models/ticket_create.rb
|
130
|
+
- lib/zendesk2/client/models/ticket_metric.rb
|
131
|
+
- lib/zendesk2/client/models/ticket_metrics.rb
|
129
132
|
- lib/zendesk2/client/models/ticket_notification.rb
|
130
133
|
- lib/zendesk2/client/models/ticket_voice_comment.rb
|
131
134
|
- lib/zendesk2/client/models/tickets.rb
|
@@ -174,6 +177,9 @@ files:
|
|
174
177
|
- lib/zendesk2/client/requests/get_ticket.rb
|
175
178
|
- lib/zendesk2/client/requests/get_ticket_audit.rb
|
176
179
|
- lib/zendesk2/client/requests/get_ticket_audits.rb
|
180
|
+
- lib/zendesk2/client/requests/get_ticket_comments.rb
|
181
|
+
- lib/zendesk2/client/requests/get_ticket_metric.rb
|
182
|
+
- lib/zendesk2/client/requests/get_ticket_metrics.rb
|
177
183
|
- lib/zendesk2/client/requests/get_tickets.rb
|
178
184
|
- lib/zendesk2/client/requests/get_topic.rb
|
179
185
|
- lib/zendesk2/client/requests/get_topic_comment.rb
|
@@ -254,3 +260,4 @@ test_files:
|
|
254
260
|
- spec/topics_spec.rb
|
255
261
|
- spec/user_identities_spec.rb
|
256
262
|
- spec/users_spec.rb
|
263
|
+
has_rdoc:
|