gitlab_support_readiness 1.0.117 → 1.0.119

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2cf9fab733d81a7aa5c5c5d9e471a0f227c8d18a054c8dc0c9da5f968697a107
4
- data.tar.gz: c0203eb2c3522b57969e8ec42b85115e994ebbe619de02024e832e0f9e349e7b
3
+ metadata.gz: 5a2b0108587e5e82022714ed390e5810b3fc139fe9192649b1216b18a957605a
4
+ data.tar.gz: 70948909b5727d437b9c396abdc6bd07c36273a297cbb9ebfd5e47f27dcef842
5
5
  SHA512:
6
- metadata.gz: 41579e75455d37c9139d7df45f2a413cdf5629469e51977af063e1bea5b28c024ce7c8222d4ab6da3a5aa0a4c8f12cf6a11e6fe399fe51702c931be1362465f5
7
- data.tar.gz: 1931b9f5d11cf0fdab299ea3a73c31256d73d309510c996a176f598d7bebe1d4df201ef23b3da8b2b45ba61afe5a070fe26b041c81593562b633124351844d3a
6
+ metadata.gz: 923828b4dc892451fb3d542503bd46a70cc115e99a258558160c2fee030e90210de87b66521ce015b687c98c4c101ab92cfdaa53d7a69dba7fd5427684c5ccc5
7
+ data.tar.gz: fdfca9336366bea66430ee3d2acb3aecdfbcfa955f62509661dceb0127288baae3b4bc7fd3eccc18848e50ab23cee1effc12de071058b007db207bd0519959fb
@@ -336,6 +336,12 @@ module Readiness
336
336
  # @param object [Object] The object to parse
337
337
  def self.convert_actions(object)
338
338
  object['actions'].each_with_index do |a, i|
339
+ if a['field'] == 'brand_id'
340
+ brand = Readiness::Zendesk::Brands.find_by_name(@zendesk_client, a['value'], @brands)
341
+ unless brand.nil?
342
+ object['actions'][i]['value'] = brand.id.to_s
343
+ end
344
+ end
339
345
  if a['field'] == 'group_id'
340
346
  group = Readiness::Zendesk::Groups.find_by_name(@zendesk_client, a['value'], @groups)
341
347
  unless group.nil?
@@ -439,5 +445,82 @@ module Readiness
439
445
  end
440
446
  object
441
447
  end
448
+
449
+ ##
450
+ # Convert user friendly Strings into Zendesk values for ticket form objects
451
+ #
452
+ # @author Jason Colyer
453
+ # @since 1.0.118
454
+ # @param object [Object] The object to parse
455
+ def self.convert_ticket_form_names_to_ids(object)
456
+ new_object = covert_ticket_form_field_ids(object)
457
+ new_object = convert_ticket_form_end_user_conditions(new_object)
458
+ new_object = convert_ticket_form_agent_conditions(new_object)
459
+ convert_ticket_form_brands(new_object)
460
+ end
461
+
462
+ ##
463
+ # Convert user friendly Strings into Zendesk values for ticket form field IDs
464
+ #
465
+ # @author Jason Colyer
466
+ # @since 1.0.118
467
+ # @param object [Object] The ticket form to parse
468
+ def self.covert_ticket_form_field_ids(object)
469
+ object['ticket_field_ids'] = object['ticket_field_ids'].map do |f|
470
+ field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, f, @ticket_fields)
471
+ field.nil? ? f : field.id
472
+ end
473
+ object
474
+ end
475
+
476
+ ##
477
+ # Convert user friendly Strings into Zendesk values for ticket form end_user conditions
478
+ #
479
+ # @author Jason Colyer
480
+ # @since 1.0.118
481
+ # @param object [Object] The ticket form to parse
482
+ def self.convert_ticket_form_end_user_conditions(object)
483
+ object['end_user_conditions'].each_with_index do |c, ci|
484
+ parent_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, c['parent_field_id'], @ticket_fields)
485
+ object['end_user_conditions'][ci]['parent_field_id'] = parent_field.id unless parent_field.nil?
486
+ c['child_fields'].each_with_index do |cf, cfi|
487
+ child_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, cf['id'], @ticket_fields)
488
+ object['end_user_conditions'][ci]['child_fields'][cfi]['id'] = child_field.id unless child_field.nil?
489
+ end
490
+ end
491
+ object
492
+ end
493
+
494
+ ##
495
+ # Convert user friendly Strings into Zendesk values for ticket form agent conditions
496
+ #
497
+ # @author Jason Colyer
498
+ # @since 1.0.118
499
+ # @param object [Object] The ticket form to parse
500
+ def self.convert_ticket_form_agent_conditions(object)
501
+ object['agent_conditions'].each_with_index do |c, ci|
502
+ parent_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, c['parent_field_id'], @ticket_fields)
503
+ object['agent_conditions'][ci]['parent_field_id'] = parent_field.id unless parent_field.nil?
504
+ c['child_fields'].each_with_index do |cf, cfi|
505
+ child_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, cf['id'], @ticket_fields)
506
+ object['agent_conditions'][ci]['child_fields'][cfi]['id'] = child_field.id unless child_field.nil?
507
+ end
508
+ end
509
+ object
510
+ end
511
+
512
+ ##
513
+ # Convert user friendly Strings into Zendesk values for ticket form brands
514
+ #
515
+ # @author Jason Colyer
516
+ # @since 1.0.118
517
+ # @param object [Object] The ticket form to parse
518
+ def self.convert_ticket_form_brands(object)
519
+ object['restricted_brand_ids'] = object['restricted_brand_ids'].map do |b|
520
+ brand = Readiness::Zendesk::Brands.find_by_name(@zendesk_client, b, @brands)
521
+ brand.nil? ? b : brand.id
522
+ end
523
+ object
524
+ end
442
525
  end
443
526
  end
@@ -130,6 +130,7 @@ module Readiness
130
130
  # pp repo.count
131
131
  # # => 35
132
132
  def self.gather(location = 'data')
133
+ @brands = Readiness::Zendesk::Brands.list(@zendesk_client)
133
134
  @categories = Readiness::Zendesk::TriggerCategories.list(@zendesk_client)
134
135
  @groups = Readiness::Zendesk::Groups.list(@zendesk_client)
135
136
  @schedules = Readiness::Zendesk::Schedules.list(@zendesk_client)
@@ -48,6 +48,7 @@ module Readiness
48
48
  # pp diffs[:updates.count]
49
49
  # # => 1
50
50
  def self.compare(zendesk_client, location = 'data', verbose = false)
51
+ @zendesk_client = zendesk_client
51
52
  diffs = {
52
53
  updates: [],
53
54
  creates: []
@@ -129,12 +130,21 @@ module Readiness
129
130
  # pp repo.count
130
131
  # # => 35
131
132
  def self.gather(location = 'data')
133
+ @brands = Readiness::Zendesk::Brands.list(@zendesk_client)
134
+ @groups = Readiness::Zendesk::Groups.list(@zendesk_client)
135
+ @schedules = Readiness::Zendesk::Schedules.list(@zendesk_client)
136
+ @satisfaction_reasons = Readiness::Zendesk::SatisfactionReasons.list(@zendesk_client)
137
+ @targets = Readiness::Zendesk::Targets.list(@zendesk_client)
138
+ @ticket_fields = Readiness::Zendesk::TicketFields.list(@zendesk_client)
139
+ @ticket_forms = Readiness::Zendesk::TicketForms.list(@zendesk_client)
132
140
  @errors = []
133
141
  @location = location
134
142
  array = []
135
143
  Dir["#{@location}/**/*.yaml"].each do |f|
136
144
  object = YAML.safe_load_file(f)
137
145
  object = convert_managed_content(object) if object['contains_managed_content']
146
+ object = convert_actions(object)
147
+ object = convert_view_restrictions(object)
138
148
  validity_check(f, object)
139
149
  object['id'] = nil
140
150
  array.push(Zendesk::Macros.new(object))
@@ -134,6 +134,7 @@ module Readiness
134
134
  # pp repo.count
135
135
  # # => 35
136
136
  def self.gather(location = 'data')
137
+ @brands = Readiness::Zendesk::Brands.list(@zendesk_client)
137
138
  @categories = Readiness::Zendesk::TriggerCategories.list(@zendesk_client)
138
139
  @groups = Readiness::Zendesk::Groups.list(@zendesk_client)
139
140
  @schedules = Readiness::Zendesk::Schedules.list(@zendesk_client)
@@ -48,6 +48,7 @@ module Readiness
48
48
  # pp diffs[:updates.count]
49
49
  # # => 1
50
50
  def self.compare(zendesk_client, location = 'data', verbose = false)
51
+ @zendesk_client = zendesk_client
51
52
  diffs = {
52
53
  updates: [],
53
54
  creates: []
@@ -138,11 +139,14 @@ module Readiness
138
139
  # pp repo.count
139
140
  # # => 35
140
141
  def self.gather(location = 'data')
142
+ @brands = Readiness::Zendesk::Brands.list(@zendesk_client)
143
+ @ticket_fields = Readiness::Zendesk::TicketFields.list(@zendesk_client)
141
144
  @errors = []
142
145
  @location = location
143
146
  array = []
144
147
  Dir["#{@location}/**/*.yaml"].each do |f|
145
148
  object = YAML.safe_load_file(f)
149
+ object = convert_ticket_form_names_to_ids(object)
146
150
  validity_check(f, object)
147
151
  object['id'] = nil
148
152
  array.push(Zendesk::TicketForms.new(object))
@@ -135,6 +135,7 @@ module Readiness
135
135
  # pp repo.count
136
136
  # # => 35
137
137
  def self.gather(location = 'data')
138
+ @brands = Readiness::Zendesk::Brands.list(@zendesk_client)
138
139
  @categories = Readiness::Zendesk::TriggerCategories.list(@zendesk_client)
139
140
  @groups = Readiness::Zendesk::Groups.list(@zendesk_client)
140
141
  @schedules = Readiness::Zendesk::Schedules.list(@zendesk_client)
@@ -136,6 +136,7 @@ module Readiness
136
136
  # pp repo.count
137
137
  # # => 35
138
138
  def self.gather(config, location = 'data')
139
+ @brands = Readiness::Zendesk::Brands.list(@zendesk_client)
139
140
  @groups = Readiness::Zendesk::Groups.list(@zendesk_client)
140
141
  @schedules = Readiness::Zendesk::Schedules.list(@zendesk_client)
141
142
  @satisfaction_reasons = Readiness::Zendesk::SatisfactionReasons.list(@zendesk_client)
@@ -0,0 +1,102 @@
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 Brands within the module {Readiness::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.118
12
+ # @todo find
13
+ # @todo find!
14
+ # @todo Create
15
+ # @todo Update
16
+ # @todo Delete
17
+ # @todo Check Host Mapping Validity
18
+ # @todo Check Host Mapping Validity for an Existing Brand
19
+ class Brands < Readiness::Client
20
+ attr_accessor :active, :brand_url, :created_at, :default, :has_help_center, :help_center_state, :host_mapping, :id, :logo, :name, :signature_template, :subdomain, :ticket_form_ids, :updated_at
21
+
22
+ ##
23
+ # Creates a new {Readiness::Zendesk::Brands} instance
24
+ #
25
+ # @author Jason Colyer
26
+ # @since 1.0.118
27
+ # @param object [Object] An instance of {Readiness::Zendesk::Brands}
28
+ # @example
29
+ # require 'support_readiness'
30
+ # Readiness::Zendesk::Brands.new
31
+ def initialize(object = {})
32
+ @active = object['active']
33
+ @brand_url = object['brand_url']
34
+ @created_at = object['created_at']
35
+ @default = object['default']
36
+ @has_help_center = object['has_help_center']
37
+ @help_center_state = object['help_center_state']
38
+ @host_mapping = object['host_mapping']
39
+ @id = object['id']
40
+ @logo = object['logo']
41
+ @name = object['name']
42
+ @signature_template = object['signature_template']
43
+ @subdomain = object['subdomain']
44
+ @ticket_form_ids = object['ticket_form_ids']
45
+ @updated_at = object['updated_at']
46
+ end
47
+
48
+ ##
49
+ # Lists all brands.
50
+ #
51
+ # @author Jason Colyer
52
+ # @since 1.0.118
53
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
54
+ # @return [Array]
55
+ # @see https://developer.zendesk.com/api-reference/ticketing/account-configuration/brands/#list-brands Zendesk API > Brands > List Brands
56
+ # @example
57
+ # require 'support_readiness'
58
+ # config = Readiness::Zendesk::Configuration.new
59
+ # config.username = 'alice@example.com'
60
+ # config.token = 'test123abc'
61
+ # config.url = 'https://example.zendesk.com/api/v2'
62
+ # client = Readiness::Zendesk::Client.new(config)
63
+ # brands = Readiness::Zendesk::Brands.list(client)
64
+ # pp brands.count
65
+ # # => 2
66
+ def self.list(client)
67
+ response = client.connection.get 'brands'
68
+ handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
69
+ body = Oj.load(response.body)
70
+ body['brands'].map { |b| Brands.new(b) }
71
+ end
72
+
73
+ ##
74
+ # Locates a brand within Zendesk by name. Can utilize a cacheh for quicker results
75
+ #
76
+ # @author Jason Colyer
77
+ # @since 1.0.118
78
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
79
+ # @param name [String] The brand name to look for
80
+ # @param cache [Array] The results of {Readiness::Zendesk::Brands#list}
81
+ # @return [Object] An instance of {Readiness::Zendesk::Brands}
82
+ # @example
83
+ # require 'support_readiness'
84
+ # config = Readiness::Zendesk::Configuration.new
85
+ # config.username = 'alice@example.com'
86
+ # config.token = 'test123abc'
87
+ # config.url = 'https://example.zendesk.com/api/v2'
88
+ # client = Readiness::Zendesk::Client.new(config)
89
+ # brand = Readiness::Zendesk::Brands.find_by_name(client, 'Brand 1')
90
+ # pp brand.id
91
+ # # => 360002783572
92
+ def self.find_by_name(client, name, cache = nil)
93
+ brands = if cache.nil?
94
+ Brands.list(client)
95
+ else
96
+ cache
97
+ end
98
+ brands.detect { |f| f.name == name }
99
+ end
100
+ end
101
+ end
102
+ end
@@ -11,6 +11,7 @@ module Readiness
11
11
  require "#{__dir__}/zendesk/apps"
12
12
  require "#{__dir__}/zendesk/articles"
13
13
  require "#{__dir__}/zendesk/automations"
14
+ require "#{__dir__}/zendesk/brands"
14
15
  require "#{__dir__}/zendesk/client"
15
16
  require "#{__dir__}/zendesk/configuration"
16
17
  require "#{__dir__}/zendesk/dynamic_content"
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.117
4
+ version: 1.0.119
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-10 00:00:00.000000000 Z
11
+ date: 2025-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -405,6 +405,7 @@ files:
405
405
  - lib/support_readiness/zendesk/apps.rb
406
406
  - lib/support_readiness/zendesk/articles.rb
407
407
  - lib/support_readiness/zendesk/automations.rb
408
+ - lib/support_readiness/zendesk/brands.rb
408
409
  - lib/support_readiness/zendesk/client.rb
409
410
  - lib/support_readiness/zendesk/configuration.rb
410
411
  - lib/support_readiness/zendesk/dynamic_content.rb