gitlab_support_readiness 1.0.111 → 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: 76db68661570a026ab3995ec2a8b9ab882372b5589ed401881844485298ca670
4
- data.tar.gz: 1bdb1a5122dca406871c78e1b65449c12422824163384e9bfff4c2d14145b8c7
3
+ metadata.gz: 8edd59d6823d5030545aa74b9ce7dba68822470283bc7384a6e071ea04003f94
4
+ data.tar.gz: 8f0871238aa1a5d14879f036b1e0dbaeff16e3a507c17451b51461093ec4f843
5
5
  SHA512:
6
- metadata.gz: 4fe8cce60d44b4874f4d91bb8f1d3d5a6f50c8692e2f066cfc7ff232200d5f8fde8ed837bc9868facfaa294eea4ee2c0230dd00bebc23518afa7dbef7b5b7612
7
- data.tar.gz: 81ffcf980569383eb449ad461e47a0f7185d9f7025ebd6e0bad8668e0567a7d9983fb18a54d8691852a84aeb30faff77b64941b0556e5166e1ad9e7de9d05fcd
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,140 +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 if code.empty?
180
- next if %r{^[0-9]+$}.match code
181
-
182
- search = Readiness::Zendesk::Search.organizations(@zendesk_client, "salesforce_id:#{code}")
183
- if search.count == 1
184
- trigger['conditions'][type][i]['value'] = search.first.id.to_s
185
- end
186
- end
187
- if c['field'] == 'satisfaction_reason_code'
188
- reason = Readiness::Zendesk::SatisfactionReasons.find_by_name(@zendesk_client, c['value'], @satisfaction_reasons)
189
- unless reason.nil?
190
- trigger['conditions'][type][i]['value'] = reason.reason_code.to_s
191
- end
192
- end
193
- if c['field'] == 'via_id'
194
- via_type = Readiness::Zendesk::ViaTypes.find_by_name(c['value'])
195
- unless via_type.nil?
196
- trigger['conditions'][type][i]['value'] = via_type.id.to_s
197
- end
198
- end
199
- if c['field'] == 'requester_role'
200
- role = Readiness::Zendesk::RequesterRoles.find_by_name(c['value'])
201
- unless role.nil?
202
- trigger['conditions'][type][i]['value'] = role.id.to_s
203
- end
204
- end
205
- if c['field'] == 'role'
206
- role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
207
- unless role.nil?
208
- trigger['conditions'][type][i]['value'] = role.id.to_s
209
- end
210
- end
211
- if c['field'] == 'assignee_id'
212
- unless ['', 'current_user', 'requester_id'].include? c['value']
213
- search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{c['value']}")
214
- if search.count == 1
215
- trigger['conditions'][type][i]['value'] = search.first.id.to_s
216
- end
217
- end
218
- end
219
- if c['field'] == 'ticket_form_id'
220
- if c['value'] =~ /Form\:\ /
221
- name = c['value'].split('Form: ').last
222
- ticket_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, name, @ticket_forms)
223
- trigger['conditions'][type][i]['value'] = ticket_form.id.to_s
224
- end
225
- end
226
- if c['field'] =~ /Field\:\ /
227
- name = c['field'].split('Field: ').last
228
- ticket_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, name, @ticket_fields)
229
- trigger['conditions'][type][i]['field'] = "custom_fields_#{ticket_field.id}"
230
- end
231
- if c['value'].to_s =~ /Schedule\:\ /
232
- name = c['value'].split('Schedule: ').last
233
- schedule = Readiness::Zendesk::Schedules.find_by_name(@zendesk_client, name, @schedules)
234
- trigger['conditions'][type][i]['value'] = schedule.id.to_s
235
- end
236
- end
237
- end
238
- trigger['actions'].each_with_index do |a, i|
239
- if a['field'] == 'organization_id'
240
- code = a['value']
241
- next if code.empty?
242
- next if %r{^[0-9]+$}.match code
243
-
244
- search = Readiness::Zendesk::Search.organizations(@zendesk_client, "salesforce_id:#{code}")
245
- if search.count == 1
246
- trigger['actions'][i]['value'][0] = search.first.id.to_s
247
- end
248
- end
249
- if a['field'] == 'notification_target'
250
- if a['value'].first =~ /^Target\:\ /
251
- name = a['value'].first.split('Target: ').last
252
- target = Readiness::Zendesk::Targets.find_by_name(@zendesk_client, name, @targets)
253
- trigger['actions'][i]['value'][0] = target.id.to_s
254
- end
255
- end
256
- if a['field'] == 'role'
257
- role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
258
- unless role.nil?
259
- trigger['actions'][i]['value'] = role.id.to_s
260
- end
261
- end
262
- if a['field'] == 'assignee_id'
263
- unless ['', 'current_user', 'requester_id'].include? a['value']
264
- search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{a['value']}")
265
- if search.count == 1
266
- trigger['actions'][i]['value'] = search.first.id.to_s
267
- else
268
- puts "Cannot find user #{a['value']} for #{trigger['title']}"
269
- exit 1
270
- end
271
- end
272
- end
273
- if a['field'] == 'notification_webhook'
274
- if a['value'].first =~ /^Webhook\:\ /
275
- name = a['value'].first.split('Webhook: ').last
276
- webhook = Readiness::Zendesk::Webhooks.find_by_name(@zendesk_client, name, @webhooks)
277
- trigger['actions'][i]['value'][0] = webhook.id.to_s
278
- end
279
- end
280
- if a['field'] == 'ticket_form_id'
281
- if a['value'] =~ /Form\:\ /
282
- name = a['value'].split('Form: ').last
283
- ticket_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, name, @ticket_forms)
284
- trigger['actions'][i]['value'] = ticket_form.id.to_s
285
- end
286
- end
287
- if a['field'] =~ /Field\:\ /
288
- name = a['field'].split('Field: ').last
289
- ticket_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, name, @ticket_fields)
290
- trigger['actions'][i]['field'] = "custom_fields_#{ticket_field.id}"
291
- end
292
- if a['field'] == 'set_schedule' && a['value'].to_s =~ /Schedule\:\ /
293
- name = a['value'].split('Schedule: ').last
294
- schedule = Readiness::Zendesk::Schedules.find_by_name(@zendesk_client, name, @schedules)
295
- trigger['actions'][i]['value'] = schedule.id.to_s
296
- end
297
- end
298
- trigger
299
- end
300
-
301
168
  ##
302
169
  # Outputs an error report and exits with a status code of 1
303
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.111
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-02-01 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