gitlab_support_readiness 1.0.110 → 1.0.112

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcaad3ddf5dae80d44628c64919b1816fdcf5b9f55bcaf16be572abda1d39f40
4
- data.tar.gz: a4e96419eda25a20c671d05ad98b4b368bd32a9585eb3d078cfdfb8f670100c5
3
+ metadata.gz: 8edd59d6823d5030545aa74b9ce7dba68822470283bc7384a6e071ea04003f94
4
+ data.tar.gz: 8f0871238aa1a5d14879f036b1e0dbaeff16e3a507c17451b51461093ec4f843
5
5
  SHA512:
6
- metadata.gz: e0f612510cf7978298d2efdd89c7f7472c8662a5de27be23a81ad4bcf6741ef3265cb9c6ce74d4c0cd843895f17ead184c7dc2a12468b7fa22a115a878007536
7
- data.tar.gz: e0541f1e0afc68ae449e67511d929a77eda037d5e9c5b29bd81eee49e15bc91748ba7447a905b60684125fd1e6b2def101746071241b7471129db6eebac73614
6
+ metadata.gz: bc6f3c2f6f6a4408f1639a2276c74305417af57536bf3f6a0d7b268c0c7b85283613b93ef9454c44bd6f7b7fcf465d58e85cc8ea9fda18dd2d83f85329576097
7
+ data.tar.gz: b7af37d1003e016d0269015402781d45c9cb25827d66024f3a3d5e7911866e7b37cc723fcdbdb087921ac2032554ced35f0dc411f06b4382da9adbfb7bcd3f26
@@ -231,5 +231,171 @@ module Readiness
231
231
  def self.erb_renderer(file)
232
232
  ERB.new(File.read(file))
233
233
  end
234
+
235
+ ##
236
+ # Convert user friendly Strings into Zendesk values for standard objects
237
+ #
238
+ # @author Jason Colyer
239
+ # @since 1.0.112
240
+ # @param object [Object] The object to parse
241
+ def self.convert_standard_names_to_ids(object)
242
+ new_object = convert_conditions(object)
243
+ convert_actions(new_object)
244
+ end
245
+
246
+ ##
247
+ # Convert user friendly Strings within conditions into Zendesk values for standard objects
248
+ #
249
+ # @author Jason Colyer
250
+ # @since 1.0.112
251
+ # @param object [Object] The object to parse
252
+ def self.convert_conditions(object)
253
+ %w[any all].each do |type|
254
+ object['conditions'][type].each_with_index do |c, i|
255
+ if c['field'] == 'group_id'
256
+ group = Readiness::Zendesk::Groups.find_by_name(@zendesk_client, c['value'], @groups)
257
+ unless group.nil?
258
+ object['conditions'][type][i]['value'] = group.id.to_s
259
+ end
260
+ end
261
+ if c['field'] == 'organization_id'
262
+ code = c['value']
263
+ next if code.empty?
264
+ next if %r{^[0-9]+$}.match code
265
+
266
+ search = Readiness::Zendesk::Search.organizations(@zendesk_client, "salesforce_id:#{code}")
267
+ if search.count == 1
268
+ object['conditions'][type][i]['value'] = search.first.id.to_s
269
+ end
270
+ end
271
+ if c['field'] == 'satisfaction_reason_code'
272
+ reason = Readiness::Zendesk::SatisfactionReasons.find_by_name(@zendesk_client, c['value'], @satisfaction_reasons)
273
+ unless reason.nil?
274
+ object['conditions'][type][i]['value'] = reason.reason_code.to_s
275
+ end
276
+ end
277
+ if c['field'] == 'via_id'
278
+ via_type = Readiness::Zendesk::ViaTypes.find_by_name(c['value'])
279
+ unless via_type.nil?
280
+ object['conditions'][type][i]['value'] = via_type.id.to_s
281
+ end
282
+ end
283
+ if c['field'] == 'requester_role'
284
+ role = Readiness::Zendesk::RequesterRoles.find_by_name(c['value'])
285
+ unless role.nil?
286
+ object['conditions'][type][i]['value'] = role.id.to_s
287
+ end
288
+ end
289
+ if c['field'] == 'role'
290
+ role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
291
+ unless role.nil?
292
+ object['conditions'][type][i]['value'] = role.id.to_s
293
+ end
294
+ end
295
+ if c['field'] == 'assignee_id'
296
+ unless ['', 'current_user', 'requester_id'].include? c['value']
297
+ search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{c['value']}")
298
+ if search.count == 1
299
+ object['conditions'][type][i]['value'] = search.first.id.to_s
300
+ end
301
+ end
302
+ end
303
+ if c['field'] == 'ticket_form_id'
304
+ if c['value'] =~ /Form\:\ /
305
+ name = c['value'].split('Form: ').last
306
+ ticket_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, name, @ticket_forms)
307
+ object['conditions'][type][i]['value'] = ticket_form.id.to_s
308
+ end
309
+ end
310
+ if c['field'] =~ /Field\:\ /
311
+ name = c['field'].split('Field: ').last
312
+ ticket_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, name, @ticket_fields)
313
+ object['conditions'][type][i]['field'] = "custom_fields_#{ticket_field.id}"
314
+ end
315
+ if c['value'].to_s =~ /Schedule\:\ /
316
+ name = c['value'].split('Schedule: ').last
317
+ schedule = Readiness::Zendesk::Schedules.find_by_name(@zendesk_client, name, @schedules)
318
+ object['conditions'][type][i]['value'] = schedule.id.to_s
319
+ end
320
+ end
321
+ end
322
+ object
323
+ end
324
+
325
+ ##
326
+ # Convert user friendly Strings within actions into Zendesk values for standard objects
327
+ #
328
+ # @author Jason Colyer
329
+ # @since 1.0.112
330
+ # @param object [Object] The object to parse
331
+ def self.convert_actions(object)
332
+ object['actions'].each_with_index do |a, i|
333
+ if a['field'] == 'group_id'
334
+ group = Readiness::Zendesk::Groups.find_by_name(@zendesk_client, a['value'], @groups)
335
+ unless group.nil?
336
+ object['actions'][i]['value'] = group.id.to_s
337
+ end
338
+ end
339
+ if a['field'] == 'organization_id'
340
+ code = a['value']
341
+ next if code.empty?
342
+ next if %r{^[0-9]+$}.match code
343
+
344
+ search = Readiness::Zendesk::Search.organizations(@zendesk_client, "salesforce_id:#{code}")
345
+ if search.count == 1
346
+ object['actions'][i]['value'][0] = search.first.id.to_s
347
+ end
348
+ end
349
+ if a['field'] == 'notification_target'
350
+ if a['value'].first =~ /^Target\:\ /
351
+ name = a['value'].first.split('Target: ').last
352
+ target = Readiness::Zendesk::Targets.find_by_name(@zendesk_client, name, @targets)
353
+ object['actions'][i]['value'][0] = target.id.to_s
354
+ end
355
+ end
356
+ if a['field'] == 'role'
357
+ role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
358
+ unless role.nil?
359
+ object['actions'][i]['value'] = role.id.to_s
360
+ end
361
+ end
362
+ if a['field'] == 'assignee_id'
363
+ unless ['', 'current_user', 'requester_id'].include? a['value']
364
+ search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{a['value']}")
365
+ if search.count == 1
366
+ object['actions'][i]['value'] = search.first.id.to_s
367
+ else
368
+ puts "Cannot find user #{a['value']} for #{object['title']}"
369
+ exit 1
370
+ end
371
+ end
372
+ end
373
+ if a['field'] == 'notification_webhook'
374
+ if a['value'].first =~ /^Webhook\:\ /
375
+ name = a['value'].first.split('Webhook: ').last
376
+ webhook = Readiness::Zendesk::Webhooks.find_by_name(@zendesk_client, name, @webhooks)
377
+ object['actions'][i]['value'][0] = webhook.id.to_s
378
+ end
379
+ end
380
+ if a['field'] == 'ticket_form_id'
381
+ if a['value'] =~ /Form\:\ /
382
+ name = a['value'].split('Form: ').last
383
+ ticket_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, name, @ticket_forms)
384
+ object['actions'][i]['value'] = ticket_form.id.to_s
385
+ end
386
+ end
387
+ if a['field'] =~ /Field\:\ /
388
+ name = a['field'].split('Field: ').last
389
+ ticket_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, name, @ticket_fields)
390
+ object['actions'][i]['field'] = "custom_fields_#{ticket_field.id}"
391
+ end
392
+ if a['field'] == 'set_schedule' && a['value'].to_s =~ /Schedule\:\ /
393
+ name = a['value'].split('Schedule: ').last
394
+ schedule = Readiness::Zendesk::Schedules.find_by_name(@zendesk_client, name, @schedules)
395
+ object['actions'][i]['value'] = schedule.id.to_s
396
+ end
397
+ end
398
+ object
399
+ end
234
400
  end
235
401
  end
@@ -136,6 +136,7 @@ module Readiness
136
136
  # # => 35
137
137
  def self.gather(location = 'data')
138
138
  @categories = Readiness::Zendesk::TriggerCategories.list(@zendesk_client)
139
+ @groups = Readiness::Zendesk::Groups.list(@zendesk_client)
139
140
  @schedules = Readiness::Zendesk::Schedules.list(@zendesk_client)
140
141
  @satisfaction_reasons = Readiness::Zendesk::SatisfactionReasons.list(@zendesk_client)
141
142
  @targets = Readiness::Zendesk::Targets.list(@zendesk_client)
@@ -150,7 +151,7 @@ module Readiness
150
151
  object = convert_managed_content(object, f) if object['contains_managed_content']
151
152
  object['default'] = false
152
153
  #object = convert_managed_webhook(object, f) if object['contains_managed_webhook']
153
- object = convert_names_to_ids(object)
154
+ object = convert_standard_names_to_ids(object)
154
155
  if object['category_id'].to_i.zero?
155
156
  trigger_category = Readiness::Zendesk::TriggerCategories.find_by_name(@zendesk_client, object['category_id'], @categories)
156
157
  object['category_id'] = trigger_category.id.to_s
@@ -164,136 +165,6 @@ module Readiness
164
165
  array
165
166
  end
166
167
 
167
- ##
168
- # Converts various user Strings to the proper ID value
169
- #
170
- # @author Jason Colyer
171
- # @since 1.0.92
172
- # @param trigger [Hash] The trigger information from the YAMl file
173
- # @return [Hash]
174
- def self.convert_names_to_ids(trigger)
175
- %w[any all].each do |type|
176
- trigger['conditions'][type].each_with_index do |c, i|
177
- if c['field'] == 'organization_id'
178
- code = c['value']
179
- next unless code.to_i.zero?
180
-
181
- search = Readiness::Zendesk::Search.organizations(@zendesk_client, "salesforce_id:#{code}")
182
- if search.count == 1
183
- trigger['conditions'][type][i]['value'] = search.first.id.to_s
184
- end
185
- end
186
- if c['field'] == 'satisfaction_reason_code'
187
- reason = Readiness::Zendesk::SatisfactionReasons.find_by_name(@zendesk_client, c['value'], @satisfaction_reasons)
188
- unless reason.nil?
189
- trigger['conditions'][type][i]['value'] = reason.reason_code.to_s
190
- end
191
- end
192
- if c['field'] == 'via_id'
193
- via_type = Readiness::Zendesk::ViaTypes.find_by_name(c['value'])
194
- unless via_type.nil?
195
- trigger['conditions'][type][i]['value'] = via_type.id.to_s
196
- end
197
- end
198
- if c['field'] == 'requester_role'
199
- role = Readiness::Zendesk::RequesterRoles.find_by_name(c['value'])
200
- unless role.nil?
201
- trigger['conditions'][type][i]['value'] = role.id.to_s
202
- end
203
- end
204
- if c['field'] == 'role'
205
- role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
206
- unless role.nil?
207
- trigger['conditions'][type][i]['value'] = role.id.to_s
208
- end
209
- end
210
- if c['field'] == 'assignee_id'
211
- unless ['', 'current_user', 'requester_id'].include? c['value']
212
- search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{c['value']}")
213
- if search.count == 1
214
- trigger['conditions'][type][i]['value'] = search.first.id.to_s
215
- end
216
- end
217
- end
218
- if c['field'] == 'ticket_form_id'
219
- if c['value'] =~ /Form\:\ /
220
- name = c['value'].split('Form: ').last
221
- ticket_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, name, @ticket_forms)
222
- trigger['conditions'][type][i]['value'] = ticket_form.id.to_s
223
- end
224
- end
225
- if c['field'] =~ /Field\:\ /
226
- name = c['field'].split('Field: ').last
227
- ticket_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, name, @ticket_fields)
228
- trigger['conditions'][type][i]['field'] = "custom_fields_#{ticket_field.id}"
229
- end
230
- if c['value'].to_s =~ /Schedule\:\ /
231
- name = c['value'].split('Schedule: ').last
232
- schedule = Readiness::Zendesk::Schedules.find_by_name(@zendesk_client, name, @schedules)
233
- trigger['conditions'][type][i]['value'] = schedule.id.to_s
234
- end
235
- end
236
- end
237
- trigger['actions'].each_with_index do |a, i|
238
- if a['field'] == 'organization_id'
239
- code = a['value']
240
- search = Readiness::Zendesk::Search.organizations(@zendesk_client, "salesforce_id:#{code}")
241
- if search.count == 1
242
- trigger['actions'][i]['value'][0] = search.first.id.to_s
243
- end
244
- end
245
- if a['field'] == 'notification_target'
246
- if a['value'].first =~ /^Target\:\ /
247
- name = a['value'].first.split('Target: ').last
248
- target = Readiness::Zendesk::Targets.find_by_name(@zendesk_client, name, @targets)
249
- trigger['actions'][i]['value'][0] = target.id.to_s
250
- end
251
- end
252
- if a['field'] == 'role'
253
- role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
254
- unless role.nil?
255
- trigger['actions'][i]['value'] = role.id.to_s
256
- end
257
- end
258
- if a['field'] == 'assignee_id'
259
- unless ['', 'current_user', 'requester_id'].include? a['value']
260
- search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{a['value']}")
261
- if search.count == 1
262
- trigger['actions'][i]['value'] = search.first.id.to_s
263
- else
264
- puts "Cannot find user #{a['value']} for #{trigger['title']}"
265
- exit 1
266
- end
267
- end
268
- end
269
- if a['field'] == 'notification_webhook'
270
- if a['value'].first =~ /^Webhook\:\ /
271
- name = a['value'].first.split('Webhook: ').last
272
- webhook = Readiness::Zendesk::Webhooks.find_by_name(@zendesk_client, name, @webhooks)
273
- trigger['actions'][i]['value'][0] = webhook.id.to_s
274
- end
275
- end
276
- if a['field'] == 'ticket_form_id'
277
- if a['value'] =~ /Form\:\ /
278
- name = a['value'].split('Form: ').last
279
- ticket_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, name, @ticket_forms)
280
- trigger['actions'][i]['value'] = ticket_form.id.to_s
281
- end
282
- end
283
- if a['field'] =~ /Field\:\ /
284
- name = a['field'].split('Field: ').last
285
- ticket_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, name, @ticket_fields)
286
- trigger['actions'][i]['field'] = "custom_fields_#{ticket_field.id}"
287
- end
288
- if a['field'] == 'set_schedule' && a['value'].to_s =~ /Schedule\:\ /
289
- name = a['value'].split('Schedule: ').last
290
- schedule = Readiness::Zendesk::Schedules.find_by_name(@zendesk_client, name, @schedules)
291
- trigger['actions'][i]['value'] = schedule.id.to_s
292
- end
293
- end
294
- trigger
295
- end
296
-
297
168
  ##
298
169
  # Outputs an error report and exits with a status code of 1
299
170
  #
@@ -130,6 +130,34 @@ module Readiness
130
130
  Groups.new(Oj.load(response.body)['group'])
131
131
  end
132
132
 
133
+ ##
134
+ # Locates a group within Zendesk by name. Can utilize a cacheh for quicker results
135
+ #
136
+ # @author Jason Colyer
137
+ # @since 1.0.112
138
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
139
+ # @param name [String] The group name to look for
140
+ # @param cache [Array] The results of {Readiness::Zendesk::Groups#list}
141
+ # @return [Object] An instance of {Readiness::Zendesk::Groups}
142
+ # @example
143
+ # require 'support_readiness'
144
+ # config = Readiness::Zendesk::Configuration.new
145
+ # config.username = 'alice@example.com'
146
+ # config.token = 'test123abc'
147
+ # config.url = 'https://example.zendesk.com/api/v2'
148
+ # client = Readiness::Zendesk::Client.new(config)
149
+ # field = Readiness::Zendesk::Groups.find_by_name(client, 'Security')
150
+ # pp field.id
151
+ # # => 456
152
+ def self.find_by_name(client, name, cache = nil)
153
+ groups = if cache.nil?
154
+ Groups.list(client)
155
+ else
156
+ cache
157
+ end
158
+ groups.detect { |f| f.name == name }
159
+ end
160
+
133
161
  ##
134
162
  # Creates a group. Will exit if unsuccessful
135
163
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab_support_readiness
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.110
4
+ version: 1.0.112
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Colyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-31 00:00:00.000000000 Z
11
+ date: 2025-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport