gitlab_support_readiness 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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