gitlab_support_readiness 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|