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.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/lib/support_readiness/client.rb +108 -0
  3. data/lib/support_readiness/gitlab/client.rb +64 -0
  4. data/lib/support_readiness/gitlab/configuration.rb +46 -0
  5. data/lib/support_readiness/gitlab/groups.rb +180 -0
  6. data/lib/support_readiness/gitlab/issues.rb +410 -0
  7. data/lib/support_readiness/gitlab/namespaces.rb +190 -0
  8. data/lib/support_readiness/gitlab/projects.rb +510 -0
  9. data/lib/support_readiness/gitlab/repositories.rb +267 -0
  10. data/lib/support_readiness/gitlab/users.rb +488 -0
  11. data/lib/support_readiness/gitlab.rb +19 -0
  12. data/lib/support_readiness/pagerduty/client.rb +66 -0
  13. data/lib/support_readiness/pagerduty/configuration.rb +43 -0
  14. data/lib/support_readiness/pagerduty/escalation_policies.rb +123 -0
  15. data/lib/support_readiness/pagerduty/schedules.rb +223 -0
  16. data/lib/support_readiness/pagerduty/services.rb +132 -0
  17. data/lib/support_readiness/pagerduty.rb +16 -0
  18. data/lib/support_readiness/redis.rb +90 -0
  19. data/lib/support_readiness/zendesk/articles.rb +210 -0
  20. data/lib/support_readiness/zendesk/automations.rb +304 -0
  21. data/lib/support_readiness/zendesk/client.rb +84 -0
  22. data/lib/support_readiness/zendesk/configuration.rb +49 -0
  23. data/lib/support_readiness/zendesk/group_memberships.rb +256 -0
  24. data/lib/support_readiness/zendesk/groups.rb +249 -0
  25. data/lib/support_readiness/zendesk/job_statuses.rb +188 -0
  26. data/lib/support_readiness/zendesk/macros.rb +267 -0
  27. data/lib/support_readiness/zendesk/organization_fields.rb +233 -0
  28. data/lib/support_readiness/zendesk/organization_memberships.rb +257 -0
  29. data/lib/support_readiness/zendesk/organizations.rb +515 -0
  30. data/lib/support_readiness/zendesk/roles.rb +194 -0
  31. data/lib/support_readiness/zendesk/search.rb +159 -0
  32. data/lib/support_readiness/zendesk/sla_policies.rb +232 -0
  33. data/lib/support_readiness/zendesk/ticket_fields.rb +222 -0
  34. data/lib/support_readiness/zendesk/ticket_forms.rb +290 -0
  35. data/lib/support_readiness/zendesk/tickets.rb +854 -0
  36. data/lib/support_readiness/zendesk/triggers.rb +269 -0
  37. data/lib/support_readiness/zendesk/users.rb +946 -0
  38. data/lib/support_readiness/zendesk/views.rb +469 -0
  39. data/lib/support_readiness/zendesk.rb +31 -0
  40. data/lib/support_readiness.rb +29 -0
  41. 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