lita-zendesk 0.0.5 → 0.0.6
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 +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +3 -0
- data/lib/lita/handlers/zendesk.rb +29 -18
- data/lita-zendesk.gemspec +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f63a7f1bbf0fd4a6a93e619e1f763fd63e995393
|
4
|
+
data.tar.gz: 8d74f5d3f2c59e1b9a505b63eb3d510460ce51b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21f85ea9ec84d9e7cc735408da833d378e7939d319957ed8fe20b17104bd058bb6231fc1ad748095fa505ec186c5f5830059c1018153f36b23827489e95d1c84
|
7
|
+
data.tar.gz: 8500af1c1e8f18900892da420e741130335b3147a29fb197623af66669da48291faf197df75a24abf1ca977c045b47c5a5e1d92939524eba1238e43e4ac71858
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -2,10 +2,11 @@ require 'base64'
|
|
2
2
|
require 'faraday'
|
3
3
|
require 'faraday_middleware'
|
4
4
|
|
5
|
+
require 'pp'
|
6
|
+
|
5
7
|
module Lita
|
6
8
|
module Handlers
|
7
9
|
class Zendesk < Handler
|
8
|
-
is_command = false
|
9
10
|
|
10
11
|
VERSION_URL = 'api/v2'
|
11
12
|
QUERY_SEARCH_PREFIX = 'search.json?query='
|
@@ -19,6 +20,8 @@ module Lita
|
|
19
20
|
QUERY_TICKETS_UNSOLVED = 'search.json?query=status<solved+type:ticket'
|
20
21
|
QUERY_USERS = 'users'
|
21
22
|
|
23
|
+
config :use_command, types: [TrueClass, FalseClass], default: true
|
24
|
+
|
22
25
|
config :subdomain, type: String, required: true
|
23
26
|
config :auth_type, type: String, default: 'password' # or token
|
24
27
|
config :user, type: String, required: true
|
@@ -66,94 +69,95 @@ module Lita
|
|
66
69
|
|
67
70
|
# General
|
68
71
|
|
69
|
-
route(/^(?:zd|zendesk)\s+connection\s
|
72
|
+
route(/^(?:zd|zendesk)\s+connection\s*$/i, :zd_instance_info, command: true, help: { 'zd connection' => 'returns information on the Zendesk connection' })
|
70
73
|
def zd_instance_info(response)
|
71
74
|
response.reply "Using Zendesk instance at: #{base_url}"
|
72
75
|
end
|
73
76
|
|
74
|
-
route(/^(?:zd|zendesk)\s+search\s+tickets?\s+(\S.*?)\s
|
77
|
+
route(/^(?:zd|zendesk)\s+search\s+tickets?\s+(\S.*?)\s*$/i, :search_tickets, command: true, help: { 'zd search tickets <QUERY>' => 'returns search results' })
|
75
78
|
def search_tickets(response)
|
76
79
|
ticket_search response, QUERY_TICKETS_SEARCH, response.matches[0][0]
|
77
80
|
end
|
78
81
|
|
79
82
|
# Ticket Counts
|
80
83
|
|
81
|
-
route(/^(?:zd|zendesk)(\s+unsolved)?\s+tickets?\s
|
84
|
+
route(/^(?:zd|zendesk)(\s+unsolved)?\s+tickets?\s*$/i, :unsolved_tickets, command: true, help: { 'zd tickets' => 'returns the total count of all unsolved tickets' })
|
82
85
|
def unsolved_tickets(response)
|
83
86
|
ticket_count response, QUERY_TICKETS_UNSOLVED, 'unsolved'
|
84
87
|
end
|
85
88
|
|
86
|
-
route(/^(?:zd|zendesk)\s+(all|total)\s+tickets?\s
|
89
|
+
route(/^(?:zd|zendesk)\s+(all|total)\s+tickets?\s*$/i, :total_tickets, command: true, help: { 'zd all tickets' => 'returns the count of all tickets' })
|
87
90
|
def total_tickets(response)
|
88
91
|
ticket_count response, QUERY_TICKETS_ALL, 'total'
|
89
92
|
end
|
90
93
|
|
91
|
-
route(/^(?:zd|zendesk)\s+pending\s+tickets?\s
|
94
|
+
route(/^(?:zd|zendesk)\s+pending\s+tickets?\s*$/i, :pending_tickets, command: true, help: { 'zd pending tickets' => 'returns a count of tickets that are pending' })
|
92
95
|
def pending_tickets(response)
|
93
96
|
ticket_count response, QUERY_TICKETS_PENDING, 'pending'
|
94
97
|
end
|
95
98
|
|
96
|
-
route(/^(?:zd|zendesk)\s+new\s+tickets?\s
|
99
|
+
route(/^(?:zd|zendesk)\s+new\s+tickets?\s*$/i, :new_tickets, command: true, help: { 'zd new tickets' => 'returns the count of all new (unassigned) tickets' })
|
97
100
|
def new_tickets(response)
|
98
101
|
ticket_count response, QUERY_TICKETS_NEW, 'new'
|
99
102
|
end
|
100
103
|
|
101
|
-
route(/^(?:zd|zendesk)\s+escalated\s+tickets?\s
|
104
|
+
route(/^(?:zd|zendesk)\s+escalated\s+tickets?\s*$/i, :escalated_tickets, command: true, help: { 'zd escalated tickets' => 'returns a count of tickets with escalated tag that are open or pending' })
|
102
105
|
def escalated_tickets(response)
|
103
106
|
ticket_count response, QUERY_TICKETS_ESCALATED, 'escalated'
|
104
107
|
end
|
105
108
|
|
106
|
-
route(/^(?:zd|zendesk)\s+open\s+tickets?\s
|
109
|
+
route(/^(?:zd|zendesk)\s+open\s+tickets?\s*$/i, :open_tickets, command: true, help: { 'zd open tickets' => 'returns the count of all open tickets' })
|
107
110
|
def open_tickets(response)
|
108
111
|
ticket_count response, QUERY_TICKETS_OPEN, 'open'
|
109
112
|
end
|
110
113
|
|
111
|
-
route(/^(?:zd|zendesk)\s+on\s+hold\s+tickets?\s
|
114
|
+
route(/^(?:zd|zendesk)\s+on\s+hold\s+tickets?\s*$/i, :onhold_tickets, command: true, help: { 'zd on hold tickets' => 'returns the count of all on hold tickets' })
|
112
115
|
def onhold_tickets(response)
|
113
116
|
ticket_count response, QUERY_TICKETS_HOLD, 'on hold'
|
114
117
|
end
|
115
118
|
|
116
119
|
# Ticket Lists
|
117
120
|
|
118
|
-
route(/^(?:zd|zendesk)\s+list(\s+unsolved)?\s+tickets?\s
|
121
|
+
route(/^(?:zd|zendesk)\s+list(\s+unsolved)?\s+tickets?\s*$/i, :unsolved_tickets_list, command: true, help: { 'zd list tickets' => 'returns a list of unsolved tickets' })
|
119
122
|
def unsolved_tickets_list(response)
|
120
123
|
ticket_list response, QUERY_TICKETS_UNSOLVED, 'unsolved'
|
121
124
|
end
|
122
125
|
|
123
|
-
route(/^(?:zd|zendesk)\s+list\s+(all|total)\s+tickets?\s
|
126
|
+
route(/^(?:zd|zendesk)\s+list\s+(all|total)\s+tickets?\s*$/i, :total_tickets_list, command: true, help: { 'zd list all tickets' => 'returns a list of all tickets' })
|
124
127
|
def total_tickets_list(response)
|
125
128
|
ticket_list response, QUERY_TICKETS_ALL, 'total'
|
126
129
|
end
|
127
130
|
|
128
|
-
route(/^(?:zd|zendesk)\s+list\s+pending\s+tickets?\s
|
131
|
+
route(/^(?:zd|zendesk)\s+list\s+pending\s+tickets?\s*$/i, :pending_tickets_list, command: true, help: { 'zd list pending tickets' => 'returns a list of pending tickets' })
|
129
132
|
def pending_tickets_list(response)
|
130
133
|
ticket_list response, QUERY_TICKETS_PENDING, 'pending'
|
131
134
|
end
|
132
135
|
|
133
|
-
route(/^(?:zd|zendesk)\s+list\s+new\s+tickets?\s
|
136
|
+
route(/^(?:zd|zendesk)\s+list\s+new\s+tickets?\s*$/i, :new_tickets_list, command: true, help: { 'zd list new tickets' => 'returns a list of new tickets' })
|
134
137
|
def new_tickets_list(response)
|
135
138
|
ticket_list response, QUERY_TICKETS_NEW, 'new'
|
136
139
|
end
|
137
140
|
|
138
|
-
route(/^(?:zd|zendesk)\s+list\s+escalated\s+tickets?\s
|
141
|
+
route(/^(?:zd|zendesk)\s+list\s+escalated\s+tickets?\s*$/i, :escalated_tickets_list, command: true, help: { 'zd list esclated tickets' => 'returns a list of escalated tickets' })
|
139
142
|
def escalated_tickets_list(response)
|
140
143
|
ticket_list response, QUERY_TICKETS_ESCALATED, 'escalated'
|
141
144
|
end
|
142
145
|
|
143
|
-
route(/^(?:zd|zendesk)\s+list\s+open\s+tickets?\s
|
146
|
+
route(/^(?:zd|zendesk)\s+list\s+open\s+tickets?\s*$/i, :open_tickets_list, command: true, help: { 'zd list open tickets' => 'returns a list of open tickets' })
|
144
147
|
def open_tickets_list(response)
|
145
148
|
ticket_list response, QUERY_TICKETS_OPEN, 'open'
|
146
149
|
end
|
147
150
|
|
148
|
-
route(/^(?:zd|zendesk)\s+list\s+on\s+hold\s+tickets?\s
|
151
|
+
route(/^(?:zd|zendesk)\s+list\s+on\s+hold\s+tickets?\s*$/i, :onhold_tickets_list, command: true, help: { 'zd list onhold tickets' => 'returns a list of on hold tickets' })
|
149
152
|
def onhold_tickets_list(response)
|
150
153
|
ticket_list response, QUERY_TICKETS_HOLD, 'on hold'
|
151
154
|
end
|
152
155
|
|
153
156
|
# Ticket Details
|
154
157
|
|
155
|
-
route(/^(?:zd|zendesk)\s+ticket\s+(\d+)\s
|
158
|
+
route(/^(?:zd|zendesk)\s+ticket\s+(\d+)\s*$/i, :ticket_details, command: true, help: { 'zd ticket <ID>' => 'returns information about the specified ticket' })
|
156
159
|
def ticket_details(response)
|
160
|
+
Lita.logger.info "#{logger_prefix}Processing Zendesk Ticket Details"
|
157
161
|
ticket_id = response.matches[0][0]
|
158
162
|
url = "#{QUERY_TICKETS_ALL}/#{ticket_id}.json"
|
159
163
|
res = zendesk_request url
|
@@ -171,6 +175,7 @@ module Lita
|
|
171
175
|
private
|
172
176
|
|
173
177
|
def ticket_count(response, url, ticket_type = '')
|
178
|
+
Lita.logger.info "#{logger_prefix}Processing Zendesk Ticket Count"
|
174
179
|
res = zendesk_request url
|
175
180
|
ticket_count = res.body['count']
|
176
181
|
ticket_word = ticket_count == 1 ? 'ticket' : 'tickets'
|
@@ -179,6 +184,7 @@ module Lita
|
|
179
184
|
end
|
180
185
|
|
181
186
|
def ticket_search(response, url, query)
|
187
|
+
Lita.logger.info "#{logger_prefix}Processing Zendesk Ticket Search"
|
182
188
|
url += query
|
183
189
|
res = zendesk_request url
|
184
190
|
tickets = res.body['results']
|
@@ -192,6 +198,7 @@ module Lita
|
|
192
198
|
end
|
193
199
|
|
194
200
|
def ticket_list(response, url, ticket_type = '')
|
201
|
+
Lita.logger.info "#{logger_prefix}Processing Zendesk Ticket List"
|
195
202
|
res = zendesk_request url
|
196
203
|
tickets = res.body['results']
|
197
204
|
tickets.each do |ticket|
|
@@ -207,6 +214,10 @@ module Lita
|
|
207
214
|
def tickets(count)
|
208
215
|
count == 1 ? 'ticket' : 'tickets'
|
209
216
|
end
|
217
|
+
|
218
|
+
def logger_prefix
|
219
|
+
" -- #{self.class.name}: "
|
220
|
+
end
|
210
221
|
end
|
211
222
|
|
212
223
|
Lita.register_handler(Zendesk)
|
data/lita-zendesk.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = 'lita-zendesk'
|
3
|
-
spec.date = '2016-
|
4
|
-
spec.version = '0.0.
|
3
|
+
spec.date = '2016-09-05'
|
4
|
+
spec.version = '0.0.6'
|
5
5
|
spec.authors = ['John Wang']
|
6
6
|
spec.email = ['johncwang@gmail.com']
|
7
7
|
spec.description = %q{A Zendesk handler for Lita.}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-zendesk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Wang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|