gitlab_support_readiness 1.0.0
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 +7 -0
- data/lib/support_readiness/client.rb +108 -0
- data/lib/support_readiness/gitlab/client.rb +64 -0
- data/lib/support_readiness/gitlab/configuration.rb +46 -0
- data/lib/support_readiness/gitlab/groups.rb +180 -0
- data/lib/support_readiness/gitlab/issues.rb +410 -0
- data/lib/support_readiness/gitlab/namespaces.rb +190 -0
- data/lib/support_readiness/gitlab/projects.rb +510 -0
- data/lib/support_readiness/gitlab/repositories.rb +267 -0
- data/lib/support_readiness/gitlab/users.rb +488 -0
- data/lib/support_readiness/gitlab.rb +19 -0
- data/lib/support_readiness/pagerduty/client.rb +66 -0
- data/lib/support_readiness/pagerduty/configuration.rb +43 -0
- data/lib/support_readiness/pagerduty/escalation_policies.rb +123 -0
- data/lib/support_readiness/pagerduty/schedules.rb +223 -0
- data/lib/support_readiness/pagerduty/services.rb +132 -0
- data/lib/support_readiness/pagerduty.rb +16 -0
- data/lib/support_readiness/redis.rb +90 -0
- data/lib/support_readiness/zendesk/articles.rb +210 -0
- data/lib/support_readiness/zendesk/automations.rb +304 -0
- data/lib/support_readiness/zendesk/client.rb +84 -0
- data/lib/support_readiness/zendesk/configuration.rb +49 -0
- data/lib/support_readiness/zendesk/group_memberships.rb +256 -0
- data/lib/support_readiness/zendesk/groups.rb +249 -0
- data/lib/support_readiness/zendesk/job_statuses.rb +188 -0
- data/lib/support_readiness/zendesk/macros.rb +267 -0
- data/lib/support_readiness/zendesk/organization_fields.rb +233 -0
- data/lib/support_readiness/zendesk/organization_memberships.rb +257 -0
- data/lib/support_readiness/zendesk/organizations.rb +515 -0
- data/lib/support_readiness/zendesk/roles.rb +194 -0
- data/lib/support_readiness/zendesk/search.rb +159 -0
- data/lib/support_readiness/zendesk/sla_policies.rb +232 -0
- data/lib/support_readiness/zendesk/ticket_fields.rb +222 -0
- data/lib/support_readiness/zendesk/ticket_forms.rb +290 -0
- data/lib/support_readiness/zendesk/tickets.rb +854 -0
- data/lib/support_readiness/zendesk/triggers.rb +269 -0
- data/lib/support_readiness/zendesk/users.rb +946 -0
- data/lib/support_readiness/zendesk/views.rb +469 -0
- data/lib/support_readiness/zendesk.rb +31 -0
- data/lib/support_readiness.rb +29 -0
- metadata +215 -0
@@ -0,0 +1,269 @@
|
|
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 Triggers within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
class Triggers < Readiness::Client
|
13
|
+
attr_accessor :actions, :active, :category_id, :conditions, :default, :description, :id, :position, :title
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::Triggers} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.0
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::Triggers}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::Triggers.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@actions = object['actions']
|
26
|
+
@active = object['active']
|
27
|
+
@category_id = object['category_id']
|
28
|
+
@conditions = object['conditions']
|
29
|
+
@default = object['default']
|
30
|
+
@description = object['description']
|
31
|
+
@id = object['id']
|
32
|
+
@position = object['position']
|
33
|
+
@title = object['title']
|
34
|
+
end
|
35
|
+
|
36
|
+
##
|
37
|
+
# Lists triggers
|
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/triggers/#list-ticket-triggers Zendesk API > Ticket Triggers > List Ticket Triggers
|
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
|
+
# triggers = Readiness::Zendesk::Triggers.list(client)
|
52
|
+
# pp triggers.first.id
|
53
|
+
# # => 25
|
54
|
+
def self.list(client)
|
55
|
+
array = []
|
56
|
+
opts = "page[size]=100"
|
57
|
+
loop do
|
58
|
+
response = client.connection.get("triggers?#{opts}")
|
59
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
60
|
+
body = Oj.load(response.body)
|
61
|
+
array += body['triggers'].map { |t| Triggers.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 trigger 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 tid [Integer] The trigger ID to find
|
76
|
+
# @return [Hash]
|
77
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/triggers/#show-ticket-trigger Zendesk API > Ticket Triggers > Show Ticket Trigger
|
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
|
+
# trigger = Readiness::Zendesk::Triggers.find(client, 25)
|
86
|
+
# pp trigger.title
|
87
|
+
# # => "Close and Save"
|
88
|
+
def self.find(client, tid)
|
89
|
+
response = client.connection.get("triggers/#{tid}")
|
90
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: tid }) unless response.status == 200
|
91
|
+
return Triggers.new(Oj.load(response.body)['trigger']) if response.status == 200
|
92
|
+
|
93
|
+
Oj.load(response.body)
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# Locates a trigger 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 tid [Integer] The trigger ID to find
|
103
|
+
# @return [Object] An instance of {Readiness::Zendesk::Triggers}
|
104
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/triggers/#show-ticket-trigger Zendesk API > Ticket Triggers > Show Ticket Trigger
|
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
|
+
# trigger = Readiness::Zendesk::Triggers.find!(client, 25)
|
113
|
+
# pp trigger.title
|
114
|
+
# # => "Close and Save"
|
115
|
+
def self.find!(client, tid)
|
116
|
+
response = client.connection.get("triggers/#{tid}")
|
117
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find trigger', id: tid }) unless response.status == 200
|
118
|
+
Triggers.new(Oj.load(response.body)['trigger'])
|
119
|
+
end
|
120
|
+
|
121
|
+
##
|
122
|
+
# Creates a trigger. Will exit if unsuccessful
|
123
|
+
#
|
124
|
+
# @author Jason Colyer
|
125
|
+
# @since 1.0.0
|
126
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
127
|
+
# @param trigger [Object] An instance of {Readiness::Zendesk::Triggers}
|
128
|
+
# @return [Object] An instance of {Readiness::Zendesk::Triggers}
|
129
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/triggers/#create-trigger Zendesk API > Ticket Triggers > Create Ticket Trigger
|
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
|
+
# trigger = Readiness::Zendesk::Triggers.new
|
138
|
+
# trigger.title = 'Roger Wilco'
|
139
|
+
# trigger.conditions = {
|
140
|
+
# all: [
|
141
|
+
# { field: 'status', operator: 'is', value: 'open' },
|
142
|
+
# { field: 'priority', operator: 'less_than', value: 'high' }
|
143
|
+
# ],
|
144
|
+
# any: []
|
145
|
+
# }
|
146
|
+
# trigger.actions = [
|
147
|
+
# { field: 'group_id', value: '20455932' }
|
148
|
+
# ]
|
149
|
+
# trigger.category_id = '10026'
|
150
|
+
# create = Readiness::Zendesk::Triggers.create!(client, trigger)
|
151
|
+
# pp create.id
|
152
|
+
# # => 25
|
153
|
+
def self.create!(client, trigger)
|
154
|
+
response = client.connection.post 'triggers', to_clean_json_with_key(trigger, 'trigger')
|
155
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create trigger', message: Oj.load(response.body)}) unless response.status == 201
|
156
|
+
Triggers.new(Oj.load(response.body)['trigger'])
|
157
|
+
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# Updates a trigger. Will exit if unsuccessful
|
161
|
+
#
|
162
|
+
# @author Jason Colyer
|
163
|
+
# @since 1.0.0
|
164
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
165
|
+
# @param trigger [Object] An instance of {Readiness::Zendesk::Triggers}
|
166
|
+
# @return [Object] An instance of {Readiness::Zendesk::Triggers}
|
167
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/triggers/#update-ticket-trigger Zendesk API > Ticket Triggers > Update Ticket Trigger
|
168
|
+
# @example
|
169
|
+
# require 'support_readiness'
|
170
|
+
# config = Readiness::Zendesk::Configuration.new
|
171
|
+
# config.username = 'alice@example.com'
|
172
|
+
# config.token = 'test123abc'
|
173
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
174
|
+
# client = Readiness::Zendesk::Client.new(config)
|
175
|
+
# trigger = Readiness::Zendesk::Triggers.find!(client, 25)
|
176
|
+
# trigger.title = 'Assign to priority group'
|
177
|
+
# update = Readiness::Zendesk::Triggers.update!(client, trigger)
|
178
|
+
# pp update.title
|
179
|
+
# # => "Assign to priority group"
|
180
|
+
def self.update!(client, trigger)
|
181
|
+
response = client.connection.put "triggers/#{trigger.id}", to_clean_json_with_key(trigger, 'trigger')
|
182
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update trigger', id: trigger.id, message: Oj.load(response.body)}) unless response.status == 200
|
183
|
+
Triggers.new(Oj.load(response.body)['trigger'])
|
184
|
+
end
|
185
|
+
|
186
|
+
##
|
187
|
+
# Updates multiple triggers via a batch job
|
188
|
+
#
|
189
|
+
# @author Jason Colyer
|
190
|
+
# @since 1.0.0
|
191
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
192
|
+
# @param triggers [Array] An array of {Readiness::Zendesk::Triggers} instances
|
193
|
+
# @return [Array] An array of {Readiness::Zendesk::Triggers} instances
|
194
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/triggers/#update-many-ticket-triggers Zendesk API > Ticket Triggers > Update Many Ticket Triggers
|
195
|
+
# @example
|
196
|
+
# require 'support_readiness'
|
197
|
+
# config = Readiness::Zendesk::Configuration.new
|
198
|
+
# config.username = 'alice@example.com'
|
199
|
+
# config.token = 'test123abc'
|
200
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
201
|
+
# client = Readiness::Zendesk::Client.new(config)
|
202
|
+
# trigger1 = Readiness::Zendesk::Triggers.find!(client, 25)
|
203
|
+
# trigger1.category_id = '10027'
|
204
|
+
# trigger2 = Readiness::Zendesk::Triggers.find!(client, 26)
|
205
|
+
# trigger2.category_id = '10027'
|
206
|
+
# triggers = [trigger1, trigger2]
|
207
|
+
# updates = Readiness::Zendesk::Triggers.update_many!(client, triggers)
|
208
|
+
# pp updates.map { |u| u.category_id }
|
209
|
+
# # => ["10027", "10027"]
|
210
|
+
def self.update_many!(client, triggers)
|
211
|
+
data = { triggers: triggers.map { |t| to_hash(t).compact } }.to_json
|
212
|
+
response = client.connection.put('triggers/update_many', data)
|
213
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update many triggers', message: Oj.load(response.body)}) unless response.status == 200
|
214
|
+
Oj.load(response.body)['trigger'].map { |t| Triggers.new(t) }
|
215
|
+
end
|
216
|
+
|
217
|
+
##
|
218
|
+
# Deletes a trigger. Will exit if unsuccessful
|
219
|
+
#
|
220
|
+
# @author Jason Colyer
|
221
|
+
# @since 1.0.0
|
222
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
223
|
+
# @param trigger [Object] An instance of {Readiness::Zendesk::Triggers}
|
224
|
+
# @return [Boolean]
|
225
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/triggers/#delete-ticket-trigger Zendesk API > Ticket Triggers > Delete Ticket Trigger
|
226
|
+
# @example
|
227
|
+
# require 'support_readiness'
|
228
|
+
# config = Readiness::Zendesk::Configuration.new
|
229
|
+
# config.username = 'alice@example.com'
|
230
|
+
# config.token = 'test123abc'
|
231
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
232
|
+
# client = Readiness::Zendesk::Client.new(config)
|
233
|
+
# trigger = Readiness::Zendesk::Triggers.find!(client, 198)
|
234
|
+
# delete = Readiness::Zendesk::Triggers.delete!(client, trigger)
|
235
|
+
# pp delete
|
236
|
+
# # => true
|
237
|
+
def self.delete!(client, trigger)
|
238
|
+
response = client.connection.delete "triggers/#{trigger.id}"
|
239
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete a trigger', id: trigger.id, message: Oj.load(response.body)}) unless response.status == 204
|
240
|
+
true
|
241
|
+
end
|
242
|
+
|
243
|
+
##
|
244
|
+
# Deletes multiple triggers via a batch job
|
245
|
+
#
|
246
|
+
# @author Jason Colyer
|
247
|
+
# @since 1.0.0
|
248
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
249
|
+
# @param tids [Array] An array of trigger IDs
|
250
|
+
# @return [Boolean]
|
251
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/business-rules/triggers/#bulk-delete-ticket-triggers Zendesk API > Ticket Triggers > Bulk Delete Ticket Triggers
|
252
|
+
# @example
|
253
|
+
# require 'support_readiness'
|
254
|
+
# config = Readiness::Zendesk::Configuration.new
|
255
|
+
# config.username = 'alice@example.com'
|
256
|
+
# config.token = 'test123abc'
|
257
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
258
|
+
# client = Readiness::Zendesk::Client.new(config)
|
259
|
+
# deletes = Readiness::Zendesk::Triggers.delete!(client, [25, 23, 27, 22])
|
260
|
+
# pp deletes
|
261
|
+
# # => true
|
262
|
+
def self.delete_many(client, tids)
|
263
|
+
response = client.connection.delete("triggers/destroy_many?ids=#{tids.join(',')}")
|
264
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete many triggers', message: Oj.load(response.body)}) unless response.status == 204
|
265
|
+
true
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|