gitlab_support_readiness 1.0.0
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 +7 -0
- data/lib/support_readiness/client.rb +108 -0
- data/lib/support_readiness/gitlab/client.rb +64 -0
- data/lib/support_readiness/gitlab/configuration.rb +46 -0
- data/lib/support_readiness/gitlab/groups.rb +180 -0
- data/lib/support_readiness/gitlab/issues.rb +410 -0
- data/lib/support_readiness/gitlab/namespaces.rb +190 -0
- data/lib/support_readiness/gitlab/projects.rb +510 -0
- data/lib/support_readiness/gitlab/repositories.rb +267 -0
- data/lib/support_readiness/gitlab/users.rb +488 -0
- data/lib/support_readiness/gitlab.rb +19 -0
- data/lib/support_readiness/pagerduty/client.rb +66 -0
- data/lib/support_readiness/pagerduty/configuration.rb +43 -0
- data/lib/support_readiness/pagerduty/escalation_policies.rb +123 -0
- data/lib/support_readiness/pagerduty/schedules.rb +223 -0
- data/lib/support_readiness/pagerduty/services.rb +132 -0
- data/lib/support_readiness/pagerduty.rb +16 -0
- data/lib/support_readiness/redis.rb +90 -0
- data/lib/support_readiness/zendesk/articles.rb +210 -0
- data/lib/support_readiness/zendesk/automations.rb +304 -0
- data/lib/support_readiness/zendesk/client.rb +84 -0
- data/lib/support_readiness/zendesk/configuration.rb +49 -0
- data/lib/support_readiness/zendesk/group_memberships.rb +256 -0
- data/lib/support_readiness/zendesk/groups.rb +249 -0
- data/lib/support_readiness/zendesk/job_statuses.rb +188 -0
- data/lib/support_readiness/zendesk/macros.rb +267 -0
- data/lib/support_readiness/zendesk/organization_fields.rb +233 -0
- data/lib/support_readiness/zendesk/organization_memberships.rb +257 -0
- data/lib/support_readiness/zendesk/organizations.rb +515 -0
- data/lib/support_readiness/zendesk/roles.rb +194 -0
- data/lib/support_readiness/zendesk/search.rb +159 -0
- data/lib/support_readiness/zendesk/sla_policies.rb +232 -0
- data/lib/support_readiness/zendesk/ticket_fields.rb +222 -0
- data/lib/support_readiness/zendesk/ticket_forms.rb +290 -0
- data/lib/support_readiness/zendesk/tickets.rb +854 -0
- data/lib/support_readiness/zendesk/triggers.rb +269 -0
- data/lib/support_readiness/zendesk/users.rb +946 -0
- data/lib/support_readiness/zendesk/views.rb +469 -0
- data/lib/support_readiness/zendesk.rb +31 -0
- data/lib/support_readiness.rb +29 -0
- metadata +215 -0
@@ -0,0 +1,469 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class Views within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
class Views < Readiness::Client
|
13
|
+
attr_accessor :active, :conditions, :default, :description, :execution, :id, :position, :restriction, :title
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::Views} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.0
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::Views}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::Views.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@active = object['active']
|
26
|
+
@conditions = object['conditions']
|
27
|
+
@default = object['default']
|
28
|
+
@description = object['description']
|
29
|
+
@execution = object['execution']
|
30
|
+
@id = object['id']
|
31
|
+
@position = object['position']
|
32
|
+
@restriction = object['restriction']
|
33
|
+
@title = object['title']
|
34
|
+
end
|
35
|
+
|
36
|
+
##
|
37
|
+
# Lists views
|
38
|
+
#
|
39
|
+
# @author Jason Colyer
|
40
|
+
# @since 1.0.0
|
41
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
42
|
+
# @return [Array]
|
43
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#list-views Zendesk API > Viuews > List Views
|
44
|
+
# @example
|
45
|
+
# require 'support_readiness'
|
46
|
+
# config = Readiness::Zendesk::Configuration.new
|
47
|
+
# config.username = 'alice@example.com'
|
48
|
+
# config.token = 'test123abc'
|
49
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
50
|
+
# client = Readiness::Zendesk::Client.new(config)
|
51
|
+
# views = Readiness::Zendesk::Views.list(client)
|
52
|
+
# pp views.first.title
|
53
|
+
# # => "Tickets updated less than 12 Hours"
|
54
|
+
def self.list(client)
|
55
|
+
array = []
|
56
|
+
opts = "page[size]=100"
|
57
|
+
loop do
|
58
|
+
response = client.connection.get("views?#{opts}")
|
59
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
60
|
+
body = Oj.load(response.body)
|
61
|
+
array += body['views'].map { |t| Views.new(t) }
|
62
|
+
break unless body['meta']['has_more']
|
63
|
+
|
64
|
+
opts = body['links'] ['next'].split('?').last
|
65
|
+
end
|
66
|
+
array
|
67
|
+
end
|
68
|
+
|
69
|
+
##
|
70
|
+
# Locates a view within Zendesk. This will not exit on error (except Authentication errors)
|
71
|
+
#
|
72
|
+
# @author Jason Colyer
|
73
|
+
# @since 1.0.0
|
74
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
75
|
+
# @param vid [Integer] The view ID to find
|
76
|
+
# @return [Hash]
|
77
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#show-view Zendesk API > Views > Show View
|
78
|
+
# @example
|
79
|
+
# require 'support_readiness'
|
80
|
+
# config = Readiness::Zendesk::Configuration.new
|
81
|
+
# config.username = 'alice@example.com'
|
82
|
+
# config.token = 'test123abc'
|
83
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
84
|
+
# client = Readiness::Zendesk::Client.new(config)
|
85
|
+
# view = Readiness::Zendesk::Views.find(client, 25)
|
86
|
+
# pp view.title
|
87
|
+
# # => "Tickets updated less than 12 Hours"
|
88
|
+
def self.find(client, vid)
|
89
|
+
response = client.connection.get("views/#{vid}")
|
90
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: vid }) unless response.status == 200
|
91
|
+
return Views.new(Oj.load(response.body)['view']) if response.status == 200
|
92
|
+
|
93
|
+
Oj.load(response.body)
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# Locates a view within Zendesk. This will exit on error
|
98
|
+
#
|
99
|
+
# @author Jason Colyer
|
100
|
+
# @since 1.0.0
|
101
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
102
|
+
# @param vid [Integer] The view ID to find
|
103
|
+
# @return [Object] An instance of {Readiness::Zendesk::Views}
|
104
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#show-view Zendesk API > Views > Show View
|
105
|
+
# @example
|
106
|
+
# require 'support_readiness'
|
107
|
+
# config = Readiness::Zendesk::Configuration.new
|
108
|
+
# config.username = 'alice@example.com'
|
109
|
+
# config.token = 'test123abc'
|
110
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
111
|
+
# client = Readiness::Zendesk::Client.new(config)
|
112
|
+
# view = Readiness::Zendesk::Views.find!(client, 25)
|
113
|
+
# pp view.title
|
114
|
+
# # => "Tickets updated less than 12 Hours"
|
115
|
+
def self.find!(client, vid)
|
116
|
+
response = client.connection.get("views/#{vid}")
|
117
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find view', id: vid }) unless response.status == 200
|
118
|
+
Views.new(Oj.load(response.body)['view'])
|
119
|
+
end
|
120
|
+
|
121
|
+
##
|
122
|
+
# Locates up to 100 views within Zendesk.
|
123
|
+
#
|
124
|
+
# @author Jason Colyer
|
125
|
+
# @since 1.0.0
|
126
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
127
|
+
# @param vids [Array] The view IDs to find
|
128
|
+
# @return [Array]
|
129
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#list-views-by-id Zendesk API > Views > List Views By ID
|
130
|
+
# @example
|
131
|
+
# require 'support_readiness'
|
132
|
+
# config = Readiness::Zendesk::Configuration.new
|
133
|
+
# config.username = 'alice@example.com'
|
134
|
+
# config.token = 'test123abc'
|
135
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
136
|
+
# client = Readiness::Zendesk::Client.new(config)
|
137
|
+
# views = Readiness::Zendesk::Views.find_many(client, [25, 26])
|
138
|
+
# pp views.map { |v| v.title }
|
139
|
+
# # => ["Tickets updated less than 12 Hours", "Tickets updated more than 12 Hours"]
|
140
|
+
def self.find_many(client, vids)
|
141
|
+
response = client.connection.get("views/show_many?ids=#{vids.join(',')}")
|
142
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: vids }) unless response.status == 200
|
143
|
+
Oj.load(response.body)['views'].map { |o| Views.new(o) }
|
144
|
+
end
|
145
|
+
|
146
|
+
##
|
147
|
+
# Creates a view. Will exit if unsuccessful
|
148
|
+
#
|
149
|
+
# @author Jason Colyer
|
150
|
+
# @since 1.0.0
|
151
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
152
|
+
# @param view [Object] An instance of {Readiness::Zendesk::Views}
|
153
|
+
# @return [Object] An instance of {Readiness::Zendesk::Views}
|
154
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#create-viewr Zendesk API > Views > Create View
|
155
|
+
# @example
|
156
|
+
# require 'support_readiness'
|
157
|
+
# config = Readiness::Zendesk::Configuration.new
|
158
|
+
# config.username = 'alice@example.com'
|
159
|
+
# config.token = 'test123abc'
|
160
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
161
|
+
# client = Readiness::Zendesk::Client.new(config)
|
162
|
+
# view = Readiness::Zendesk::Views.new
|
163
|
+
# view.title = "Kelly's tickets"
|
164
|
+
# view.description = 'Tickets that are assigned to Kelly'
|
165
|
+
# view.active = true
|
166
|
+
# view.position: 3
|
167
|
+
# view.restriction: { type: 'User', id: '213977756' }
|
168
|
+
# view.conditions = {
|
169
|
+
# all: [
|
170
|
+
# { field: 'status', operator: 'less_than', value: 'solved' },
|
171
|
+
# { field: 'group_id', operator: 'is', value: '24000932' },
|
172
|
+
# { field: 'custom_fields_360011872073', operator: 'is', value: 'Canada' }
|
173
|
+
# ],
|
174
|
+
# any: []
|
175
|
+
# }
|
176
|
+
# view.execution = {
|
177
|
+
# columns: [
|
178
|
+
# { id: 'status', title: 'Status', filterable: true, sortable: true},
|
179
|
+
# { id: 'requester', title: 'Requester', filterable: true, sortable: true},
|
180
|
+
# { id: 'assignee', title: 'Assignee', filterable: true, sortable: true},
|
181
|
+
# ]
|
182
|
+
# group_by: 'assignee',
|
183
|
+
# group_order: 'desc',
|
184
|
+
# sort_by: 'status',
|
185
|
+
# sort_order: 'desc',
|
186
|
+
# group: {
|
187
|
+
# id: 'assignee',
|
188
|
+
# title: 'Assignee',
|
189
|
+
# filterable: true,
|
190
|
+
# sortable: true,
|
191
|
+
# order: 'desc'
|
192
|
+
# }
|
193
|
+
# sort: {
|
194
|
+
# id: 'status',
|
195
|
+
# title: 'Status',
|
196
|
+
# filterable: true,
|
197
|
+
# sortable: true,
|
198
|
+
# order: 'desc'
|
199
|
+
# }
|
200
|
+
# }
|
201
|
+
# create = Readiness::Zendesk::Views.create!(client, view)
|
202
|
+
# pp create.id
|
203
|
+
# # => 9873843
|
204
|
+
def self.create!(client, view)
|
205
|
+
response = client.connection.post 'views', { view: create_or_update_object(view) }.to_json
|
206
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create view', message: Oj.load(response.body)}) unless response.status == 201
|
207
|
+
Views.new(Oj.load(response.body)['view'])
|
208
|
+
end
|
209
|
+
|
210
|
+
##
|
211
|
+
# Updates a view. Will exit if unsuccessful
|
212
|
+
#
|
213
|
+
# @author Jason Colyer
|
214
|
+
# @since 1.0.0
|
215
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
216
|
+
# @param view [Object] An instance of {Readiness::Zendesk::Views}
|
217
|
+
# @return [Object] An instance of {Readiness::Zendesk::Views}
|
218
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#update-view Zendesk API > Views > Update View
|
219
|
+
# @example
|
220
|
+
# require 'support_readiness'
|
221
|
+
# config = Readiness::Zendesk::Configuration.new
|
222
|
+
# config.username = 'alice@example.com'
|
223
|
+
# config.token = 'test123abc'
|
224
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
225
|
+
# client = Readiness::Zendesk::Client.new(config)
|
226
|
+
# view = Readiness::Zendesk::Views.find!(client, 9873843)
|
227
|
+
# view.title = 'Canada tickets'
|
228
|
+
# update = Readiness::Zendesk::Views.update!(client, view)
|
229
|
+
# pp create.title
|
230
|
+
# # => "Canada tickets"
|
231
|
+
def self.update!(client, view)
|
232
|
+
response = client.connection.put "views/#{view.id}", { view: create_or_update_object(view) }.to_json
|
233
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update view', id: view.id, message: Oj.load(response.body)}) unless response.status == 200
|
234
|
+
Views.new(Oj.load(response.body)['view'])
|
235
|
+
end
|
236
|
+
|
237
|
+
##
|
238
|
+
# Updates multiple views via a batch job
|
239
|
+
#
|
240
|
+
# @author Jason Colyer
|
241
|
+
# @since 1.0.0
|
242
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
243
|
+
# @param views [Array] An array of {Readiness::Zendesk::Views} instances
|
244
|
+
# @return [object] A {Readiness::Zendesk::JobStatuses} instance
|
245
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#update-many-views Zendesk API > Views > Update Many Views
|
246
|
+
# @example
|
247
|
+
# require 'support_readiness'
|
248
|
+
# config = Readiness::Zendesk::Configuration.new
|
249
|
+
# config.username = 'alice@example.com'
|
250
|
+
# config.token = 'test123abc'
|
251
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
252
|
+
# client = Readiness::Zendesk::Client.new(config)
|
253
|
+
# view1 = Readiness::Zendesk::Views.find!(client, 9873843)
|
254
|
+
# view1.title = 'Canada tickets'
|
255
|
+
# view2 = Readiness::Zendesk::Views.find!(client, 9873858)
|
256
|
+
# view2.title = 'Mexico tickets'
|
257
|
+
# views = [view1, view2]
|
258
|
+
# updates = Readiness::Zendesk::Views.update_many!(client, views)
|
259
|
+
# pp updates.map { |v| v.title }
|
260
|
+
# # => ["Canada tickets", "Mexico tickets"]
|
261
|
+
def self.update_many!(client, views)
|
262
|
+
data = { views: views.map { |v| create_or_update_object(view) } }.to_json
|
263
|
+
response = client.connection.put('views/update_many', data)
|
264
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update many views', message: Oj.load(response.body)}) unless response.status == 200
|
265
|
+
JobStatuses.new(Oj.load(response.body)['job_status'])
|
266
|
+
end
|
267
|
+
|
268
|
+
##
|
269
|
+
# Deletes a view. Will exit if unsuccessful
|
270
|
+
#
|
271
|
+
# @author Jason Colyer
|
272
|
+
# @since 1.0.0
|
273
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
274
|
+
# @param view [Object] An instance of {Readiness::Zendesk::Views}
|
275
|
+
# @return [Boolean]
|
276
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#delete-view Zendesk API > Views > Delete View
|
277
|
+
# @example
|
278
|
+
# require 'support_readiness'
|
279
|
+
# config = Readiness::Zendesk::Configuration.new
|
280
|
+
# config.username = 'alice@example.com'
|
281
|
+
# config.token = 'test123abc'
|
282
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
283
|
+
# client = Readiness::Zendesk::Client.new(config)
|
284
|
+
# view = Readiness::Zendesk::Views.find!(client, 9873858)
|
285
|
+
# delete = Readiness::Zendesk::Views.delete!(client, views)
|
286
|
+
# pp delete
|
287
|
+
# # => true
|
288
|
+
def self.delete!(client, view)
|
289
|
+
response = client.connection.delete "views/#{view.id}"
|
290
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete a view', id: view.id, message: Oj.load(response.body)}) unless response.status == 204
|
291
|
+
true
|
292
|
+
end
|
293
|
+
|
294
|
+
##
|
295
|
+
# Deletes multiple views via a batch job
|
296
|
+
#
|
297
|
+
# @author Jason Colyer
|
298
|
+
# @since 1.0.0
|
299
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
300
|
+
# @param vids [Array] An array of view IDs
|
301
|
+
# @return [Boolean]
|
302
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#bulk-delete-views Zendesk API > Views > Bulk Delete Views
|
303
|
+
# @example
|
304
|
+
# require 'support_readiness'
|
305
|
+
# config = Readiness::Zendesk::Configuration.new
|
306
|
+
# config.username = 'alice@example.com'
|
307
|
+
# config.token = 'test123abc'
|
308
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
309
|
+
# client = Readiness::Zendesk::Client.new(config)
|
310
|
+
# deletes = Readiness::Zendesk::Views.find!(client, [9873858, 9873843])
|
311
|
+
# pp deletes
|
312
|
+
# # => true
|
313
|
+
def self.delete_many(client, vids)
|
314
|
+
response = client.connection.delete("views/destroy_many?ids=#{vids.join(',')}")
|
315
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete many views', message: Oj.load(response.body)}) unless response.status == 204
|
316
|
+
true
|
317
|
+
end
|
318
|
+
|
319
|
+
##
|
320
|
+
# Previews what a view would look like
|
321
|
+
#
|
322
|
+
# @author Jason Colyer
|
323
|
+
# @since 1.0.0
|
324
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
325
|
+
# @param view [object] An instance of {Readiness::Zendesk::Views}
|
326
|
+
# @return [Hash]
|
327
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#preview-views Zendesk API > Views > Preview View
|
328
|
+
# @example
|
329
|
+
# require 'support_readiness'
|
330
|
+
# config = Readiness::Zendesk::Configuration.new
|
331
|
+
# config.username = 'alice@example.com'
|
332
|
+
# config.token = 'test123abc'
|
333
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
334
|
+
# client = Readiness::Zendesk::Client.new(config)
|
335
|
+
# view = Readiness::Zendesk::Views.find!(client, 9873858)
|
336
|
+
# preview = Readiness::Zendesk::Views.preview!(client, view)
|
337
|
+
# pp preview['rows']['tickets'].first['id']
|
338
|
+
# # => 12851
|
339
|
+
def self.preview!(client, view)
|
340
|
+
converted = create_or_update_object(view)
|
341
|
+
data = {
|
342
|
+
view: {
|
343
|
+
all: converted['all'],
|
344
|
+
any: converted['any'],
|
345
|
+
output: converted['output']
|
346
|
+
}
|
347
|
+
}.compact.to_json
|
348
|
+
response = client.connection.post 'views/preview', data
|
349
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Preview a view', message: Oj.load(response.body)}) unless response.status == 200
|
350
|
+
Oj.load(response.body)
|
351
|
+
end
|
352
|
+
|
353
|
+
##
|
354
|
+
# Get the tickets in a view
|
355
|
+
#
|
356
|
+
# @author Jason Colyer
|
357
|
+
# @since 1.0.0
|
358
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
359
|
+
# @param view [object] An instance of {Readiness::Zendesk::Views}
|
360
|
+
# @return [Array]
|
361
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#list-tickets-from-a-view Zendesk API > Views > List Tickets From a View
|
362
|
+
# @example
|
363
|
+
# require 'support_readiness'
|
364
|
+
# config = Readiness::Zendesk::Configuration.new
|
365
|
+
# config.username = 'alice@example.com'
|
366
|
+
# config.token = 'test123abc'
|
367
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
368
|
+
# client = Readiness::Zendesk::Client.new(config)
|
369
|
+
# view = Readiness::Zendesk::Views.find!(client, 9873858)
|
370
|
+
# tickets = Readiness::Zendesk::Views.tickets(client, view)
|
371
|
+
# pp tickets.first.id
|
372
|
+
# # => 12851
|
373
|
+
def self.tickets(client, view)
|
374
|
+
response = client.connection.get "views/#{view.id}/tickets"
|
375
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Get tickets from a view', message: Oj.load(response.body)}) unless response.status == 200
|
376
|
+
Oj.load(response.body)['tickets']
|
377
|
+
end
|
378
|
+
|
379
|
+
##
|
380
|
+
# Display count information for a view
|
381
|
+
#
|
382
|
+
# @author Jason Colyer
|
383
|
+
# @since 1.0.0
|
384
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
385
|
+
# @param view [object] An instance of {Readiness::Zendesk::Views}
|
386
|
+
# @return [Hash]
|
387
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#count-tickets-in-view Zendesk API > Views > Count Tickets in View
|
388
|
+
# @example
|
389
|
+
# require 'support_readiness'
|
390
|
+
# config = Readiness::Zendesk::Configuration.new
|
391
|
+
# config.username = 'alice@example.com'
|
392
|
+
# config.token = 'test123abc'
|
393
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
394
|
+
# client = Readiness::Zendesk::Client.new(config)
|
395
|
+
# view = Readiness::Zendesk::Views.find!(client, 9873858)
|
396
|
+
# count = Readiness::Zendesk::Views.count_tickets(client, view)
|
397
|
+
# pp value['value']
|
398
|
+
# # => 719
|
399
|
+
def self.count_tickets(client, view)
|
400
|
+
response = client.connection.get "views/#{view.id}/count"
|
401
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Count tickets in a view', message: Oj.load(response.body)}) unless response.status == 200
|
402
|
+
Oj.load(response.body)['view_count']
|
403
|
+
end
|
404
|
+
|
405
|
+
##
|
406
|
+
# Display count information for multiple views
|
407
|
+
#
|
408
|
+
# @author Jason Colyer
|
409
|
+
# @since 1.0.0
|
410
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
411
|
+
# @param vids [Array] The view IDs to get count information for
|
412
|
+
# @return [Array]
|
413
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/views/#count-tickets-in-views Zendesk API > Views > Count Tickets in Views
|
414
|
+
# @example
|
415
|
+
# require 'support_readiness'
|
416
|
+
# config = Readiness::Zendesk::Configuration.new
|
417
|
+
# config.username = 'alice@example.com'
|
418
|
+
# config.token = 'test123abc'
|
419
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
420
|
+
# client = Readiness::Zendesk::Client.new(config)
|
421
|
+
# count = Readiness::Zendesk::Views.count_tickets_in_many(client, [25, 78])
|
422
|
+
# pp value.map { |v| v['value'] }
|
423
|
+
# # => [719, nil]
|
424
|
+
def self.count_tickets_in_many(client, vids)
|
425
|
+
response = client.connection.get "views/count_many?ids=#{vids.join(',')}"
|
426
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Count tickets in views', message: Oj.load(response.body)}) unless response.status == 200
|
427
|
+
Oj.load(response.body)['view_counts']
|
428
|
+
end
|
429
|
+
|
430
|
+
##
|
431
|
+
# Returns a Hash used in creating/updating views, as the formatting does not match the Zendesk list functions
|
432
|
+
#
|
433
|
+
# @author Jason Colyer
|
434
|
+
# @since 1.0.0
|
435
|
+
# @param view [Object] An instance of {Readiness::Zendesk::Views}
|
436
|
+
# @return [Hash]
|
437
|
+
# @example
|
438
|
+
# require 'support_readiness'
|
439
|
+
# config = Readiness::Zendesk::Configuration.new
|
440
|
+
# config.username = 'alice@example.com'
|
441
|
+
# config.token = 'test123abc'
|
442
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
443
|
+
# client = Readiness::Zendesk::Client.new(config)
|
444
|
+
# view = Readiness::Zendesk::Views.find!(client, 9873858)
|
445
|
+
# object = Readiness::Zendesk::Views.create_or_update_object(view)
|
446
|
+
# pp object[:id]
|
447
|
+
# # => 9873858
|
448
|
+
def self.create_or_update_object(view)
|
449
|
+
{
|
450
|
+
id: view.id,
|
451
|
+
title: view.title,
|
452
|
+
description: view.description,
|
453
|
+
active: view.active,
|
454
|
+
position: view.position,
|
455
|
+
restriction: view.restriction,
|
456
|
+
all: view.conditions['all'],
|
457
|
+
any: view.conditions['any'],
|
458
|
+
output: {
|
459
|
+
columns: view.execution['columns'].map { |c| c['id'] },
|
460
|
+
group_by: view.execution['group_by'],
|
461
|
+
group_order: view.execution['group_order'],
|
462
|
+
sort_by: view.execution['sort_by'],
|
463
|
+
sort_order: view.execution['sort_order']
|
464
|
+
}
|
465
|
+
}.compact
|
466
|
+
end
|
467
|
+
end
|
468
|
+
end
|
469
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
##
|
6
|
+
# Defines the module Zendesk
|
7
|
+
# @author Jason Colyer
|
8
|
+
# @since 1.0.0
|
9
|
+
module Zendesk
|
10
|
+
require "#{__dir__}/zendesk/articles"
|
11
|
+
require "#{__dir__}/zendesk/automations"
|
12
|
+
require "#{__dir__}/zendesk/client"
|
13
|
+
require "#{__dir__}/zendesk/configuration"
|
14
|
+
require "#{__dir__}/zendesk/group_memberships"
|
15
|
+
require "#{__dir__}/zendesk/groups"
|
16
|
+
require "#{__dir__}/zendesk/job_statuses"
|
17
|
+
require "#{__dir__}/zendesk/macros"
|
18
|
+
require "#{__dir__}/zendesk/organization_fields"
|
19
|
+
require "#{__dir__}/zendesk/organization_memberships"
|
20
|
+
require "#{__dir__}/zendesk/organizations"
|
21
|
+
require "#{__dir__}/zendesk/roles"
|
22
|
+
require "#{__dir__}/zendesk/search"
|
23
|
+
require "#{__dir__}/zendesk/sla_policies"
|
24
|
+
require "#{__dir__}/zendesk/ticket_fields"
|
25
|
+
require "#{__dir__}/zendesk/ticket_forms"
|
26
|
+
require "#{__dir__}/zendesk/tickets"
|
27
|
+
require "#{__dir__}/zendesk/triggers"
|
28
|
+
require "#{__dir__}/zendesk/users"
|
29
|
+
require "#{__dir__}/zendesk/views"
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$VERBOSE = nil
|
4
|
+
|
5
|
+
##
|
6
|
+
# Defines the module Readiness
|
7
|
+
# @author Jason Colyer
|
8
|
+
# @since 1.0.0
|
9
|
+
module Readiness
|
10
|
+
VERSION = File.read('VERSION').chomp
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'active_support'
|
14
|
+
require 'active_support/time'
|
15
|
+
require 'base64'
|
16
|
+
require 'cgi'
|
17
|
+
require 'digest'
|
18
|
+
require 'faraday'
|
19
|
+
require 'faraday/multipart'
|
20
|
+
require 'faraday/retry'
|
21
|
+
require 'json'
|
22
|
+
require 'oj'
|
23
|
+
require 'redis'
|
24
|
+
require 'restforce'
|
25
|
+
require "#{__dir__}/support_readiness/client"
|
26
|
+
require "#{__dir__}/support_readiness/gitlab"
|
27
|
+
require "#{__dir__}/support_readiness/pagerduty"
|
28
|
+
require "#{__dir__}/support_readiness/redis"
|
29
|
+
require "#{__dir__}/support_readiness/zendesk"
|