gitlab_support_readiness 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/lib/support_readiness/client.rb +108 -0
  3. data/lib/support_readiness/gitlab/client.rb +64 -0
  4. data/lib/support_readiness/gitlab/configuration.rb +46 -0
  5. data/lib/support_readiness/gitlab/groups.rb +180 -0
  6. data/lib/support_readiness/gitlab/issues.rb +410 -0
  7. data/lib/support_readiness/gitlab/namespaces.rb +190 -0
  8. data/lib/support_readiness/gitlab/projects.rb +510 -0
  9. data/lib/support_readiness/gitlab/repositories.rb +267 -0
  10. data/lib/support_readiness/gitlab/users.rb +488 -0
  11. data/lib/support_readiness/gitlab.rb +19 -0
  12. data/lib/support_readiness/pagerduty/client.rb +66 -0
  13. data/lib/support_readiness/pagerduty/configuration.rb +43 -0
  14. data/lib/support_readiness/pagerduty/escalation_policies.rb +123 -0
  15. data/lib/support_readiness/pagerduty/schedules.rb +223 -0
  16. data/lib/support_readiness/pagerduty/services.rb +132 -0
  17. data/lib/support_readiness/pagerduty.rb +16 -0
  18. data/lib/support_readiness/redis.rb +90 -0
  19. data/lib/support_readiness/zendesk/articles.rb +210 -0
  20. data/lib/support_readiness/zendesk/automations.rb +304 -0
  21. data/lib/support_readiness/zendesk/client.rb +84 -0
  22. data/lib/support_readiness/zendesk/configuration.rb +49 -0
  23. data/lib/support_readiness/zendesk/group_memberships.rb +256 -0
  24. data/lib/support_readiness/zendesk/groups.rb +249 -0
  25. data/lib/support_readiness/zendesk/job_statuses.rb +188 -0
  26. data/lib/support_readiness/zendesk/macros.rb +267 -0
  27. data/lib/support_readiness/zendesk/organization_fields.rb +233 -0
  28. data/lib/support_readiness/zendesk/organization_memberships.rb +257 -0
  29. data/lib/support_readiness/zendesk/organizations.rb +515 -0
  30. data/lib/support_readiness/zendesk/roles.rb +194 -0
  31. data/lib/support_readiness/zendesk/search.rb +159 -0
  32. data/lib/support_readiness/zendesk/sla_policies.rb +232 -0
  33. data/lib/support_readiness/zendesk/ticket_fields.rb +222 -0
  34. data/lib/support_readiness/zendesk/ticket_forms.rb +290 -0
  35. data/lib/support_readiness/zendesk/tickets.rb +854 -0
  36. data/lib/support_readiness/zendesk/triggers.rb +269 -0
  37. data/lib/support_readiness/zendesk/users.rb +946 -0
  38. data/lib/support_readiness/zendesk/views.rb +469 -0
  39. data/lib/support_readiness/zendesk.rb +31 -0
  40. data/lib/support_readiness.rb +29 -0
  41. 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"