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 +4 -4
- data/lib/support_readiness/client.rb +83 -0
- data/lib/support_readiness/repos/automations.rb +1 -0
- data/lib/support_readiness/repos/macros.rb +10 -0
- data/lib/support_readiness/repos/sla_policies.rb +1 -0
- data/lib/support_readiness/repos/ticket_forms.rb +4 -0
- data/lib/support_readiness/repos/triggers.rb +1 -0
- data/lib/support_readiness/repos/views.rb +1 -0
- data/lib/support_readiness/zendesk/brands.rb +102 -0
- data/lib/support_readiness/zendesk.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a2b0108587e5e82022714ed390e5810b3fc139fe9192649b1216b18a957605a
|
4
|
+
data.tar.gz: 70948909b5727d437b9c396abdc6bd07c36273a297cbb9ebfd5e47f27dcef842
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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-
|
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
|