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,256 @@
|
|
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 GroupMemberships within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
class GroupMemberships < Readiness::Client
|
13
|
+
attr_accessor :id, :default, :group_id, :user_id
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::GroupMemberships} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.0
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::GroupMemberships}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::GroupMemberships.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@id = object['id']
|
26
|
+
@default = object['default']
|
27
|
+
@group_id = object['group_id']
|
28
|
+
@user_id = object['user_id']
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Lists the first 100 group memberships
|
33
|
+
#
|
34
|
+
# @author Jason Colyer
|
35
|
+
# @since 1.0.0
|
36
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
37
|
+
# @return [Array]
|
38
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#list-memberships Zendesk API > Group Memberships > List Memberships
|
39
|
+
# @example
|
40
|
+
# require 'support_readiness'
|
41
|
+
# config = Readiness::Zendesk::Configuration.new
|
42
|
+
# config.username = 'alice@example.com'
|
43
|
+
# config.token = 'test123abc'
|
44
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
45
|
+
# client = Readiness::Zendesk::Client.new(config)
|
46
|
+
# memberships = Readiness::Zendesk::GroupMemberships.list(client)
|
47
|
+
# pp memberships.first.id
|
48
|
+
# # => 4
|
49
|
+
def self.list(client)
|
50
|
+
response = client.connection.get("group_memberships?page[size]=100")
|
51
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
52
|
+
Oj.load(response.body)['group_memberships'].map { |m| GroupMemberships.new(m) }
|
53
|
+
end
|
54
|
+
|
55
|
+
##
|
56
|
+
# Lists many group memberships. Does not stop until it ends or the page limit is hit.
|
57
|
+
# This method can take a long time to run depending on the parameters used.
|
58
|
+
#
|
59
|
+
# @author Jason Colyer
|
60
|
+
# @since 1.0.0
|
61
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
62
|
+
# @param limit [Integer] The number of pages to stop at. Using 0 means to list all.
|
63
|
+
# @return [Array]
|
64
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#list-memberships Zendesk API > Group Memberships > List Memberships
|
65
|
+
# @example
|
66
|
+
# require 'support_readiness'
|
67
|
+
# config = Readiness::Zendesk::Configuration.new
|
68
|
+
# config.username = 'alice@example.com'
|
69
|
+
# config.token = 'test123abc'
|
70
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
71
|
+
# client = Readiness::Zendesk::Client.new(config)
|
72
|
+
# memberships = Readiness::Zendesk::GroupMemberships.list_many(client)
|
73
|
+
# pp memberships.first.id
|
74
|
+
# # => 4
|
75
|
+
def self.list_many(client, limit = 0)
|
76
|
+
array = []
|
77
|
+
opts = "page[size]=100"
|
78
|
+
loop do
|
79
|
+
response = client.connection.get("group_memberships?#{opts}")
|
80
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
81
|
+
body = Oj.load(response.body)
|
82
|
+
array += body['group_memberships'].map { |o| GroupMemberships.new(o) }
|
83
|
+
break if limit != 0 && array.count >= (limit * 100)
|
84
|
+
break unless body['meta']['has_more']
|
85
|
+
|
86
|
+
opts = body['links'] ['next'].split('?').last
|
87
|
+
end
|
88
|
+
array
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# Locates a group membership within Zendesk. This will not exit on error (except Authentication errors)
|
93
|
+
#
|
94
|
+
# @author Jason Colyer
|
95
|
+
# @since 1.0.0
|
96
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
97
|
+
# @param gid [Integer] The group membership ID to find
|
98
|
+
# @return [Hash]
|
99
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#show-membership Zendesk API > Group Memberships > Show Membership
|
100
|
+
# @example
|
101
|
+
# require 'support_readiness'
|
102
|
+
# config = Readiness::Zendesk::Configuration.new
|
103
|
+
# config.username = 'alice@example.com'
|
104
|
+
# config.token = 'test123abc'
|
105
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
106
|
+
# client = Readiness::Zendesk::Client.new(config)
|
107
|
+
# membership = Readiness::Zendesk::GroupMemberships.find(client, 4)
|
108
|
+
# pp membership.user_id
|
109
|
+
# # => 29
|
110
|
+
def self.find(client, gid)
|
111
|
+
response = client.connection.get("group_memberships/#{gid}")
|
112
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: gid }) unless response.status == 200
|
113
|
+
return GroupMemberships.new(Oj.load(response.body)['group_membership']) if response.status == 200
|
114
|
+
|
115
|
+
Oj.load(response.body)
|
116
|
+
end
|
117
|
+
|
118
|
+
##
|
119
|
+
# Locates a group membership within Zendesk. This will exit on error
|
120
|
+
#
|
121
|
+
# @author Jason Colyer
|
122
|
+
# @since 1.0.0
|
123
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
124
|
+
# @param gid [Integer] The group membership ID to find
|
125
|
+
# @return [Hash]
|
126
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#show-membership Zendesk API > Group Memberships > Show Membership
|
127
|
+
# @example
|
128
|
+
# require 'support_readiness'
|
129
|
+
# config = Readiness::Zendesk::Configuration.new
|
130
|
+
# config.username = 'alice@example.com'
|
131
|
+
# config.token = 'test123abc'
|
132
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
133
|
+
# client = Readiness::Zendesk::Client.new(config)
|
134
|
+
# membership = Readiness::Zendesk::GroupMemberships.find!(client, 4)
|
135
|
+
# pp membership.user_id
|
136
|
+
# # => 29
|
137
|
+
def self.find!(client, gid)
|
138
|
+
response = client.connection.get("group_memberships/#{gid}")
|
139
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find group membership', id: gid }) unless response.status == 200
|
140
|
+
GroupMemberships.new(Oj.load(response.body)['group_membership'])
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Creates an organization membership. Will exit if unsuccessful
|
145
|
+
#
|
146
|
+
# @author Jason Colyer
|
147
|
+
# @since 1.0.0
|
148
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
149
|
+
# @param membership [Object] An instance of {Readiness::Zendesk::GroupMemberships}
|
150
|
+
# @return [Object] An instance of {Readiness::Zendesk::GroupMemberships}
|
151
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#create-membership Zendesk API > Group Memberships > Create Membership
|
152
|
+
# @example
|
153
|
+
# require 'support_readiness'
|
154
|
+
# config = Readiness::Zendesk::Configuration.new
|
155
|
+
# config.username = 'alice@example.com'
|
156
|
+
# config.token = 'test123abc'
|
157
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
158
|
+
# client = Readiness::Zendesk::Client.new(config)
|
159
|
+
# membership = Readiness::Zendesk::GroupMemberships.new
|
160
|
+
# membership.user_id = 72
|
161
|
+
# membership.group_id: 88
|
162
|
+
# create = Readiness::Zendesk::GroupMemberships.create!(client, membership)
|
163
|
+
# pp create.id
|
164
|
+
# # => 461
|
165
|
+
def self.create!(client, membership)
|
166
|
+
response = client.connection.post 'group_memberships', to_clean_json_with_key(membership, 'group_membership')
|
167
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create group membership', message: Oj.load(response.body)}) unless response.status == 201
|
168
|
+
GroupMemberships.new(Oj.load(response.body)['group_membership'])
|
169
|
+
end
|
170
|
+
|
171
|
+
##
|
172
|
+
# Creates multiple organization memberships via a batch job
|
173
|
+
#
|
174
|
+
# @author Jason Colyer
|
175
|
+
# @since 1.0.0
|
176
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
177
|
+
# @param memberships [Array] An array of {Readiness::Zendesk::GroupMemberships} instances
|
178
|
+
# @return [object] A {Readiness::Zendesk::JobStatuses} instance
|
179
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#bulk-create-memberships Zendesk API > Group Memberships > Create Many Memberships
|
180
|
+
# @example
|
181
|
+
# require 'support_readiness'
|
182
|
+
# config = Readiness::Zendesk::Configuration.new
|
183
|
+
# config.username = 'alice@example.com'
|
184
|
+
# config.token = 'test123abc'
|
185
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
186
|
+
# client = Readiness::Zendesk::Client.new(config)
|
187
|
+
# membership1 = Readiness::Zendesk::GroupMemberships.new
|
188
|
+
# membership1.user_id = 72
|
189
|
+
# membership1.group_id: 88
|
190
|
+
# membership2 = Readiness::Zendesk::GroupMemberships.new
|
191
|
+
# membership2.user_id = 27
|
192
|
+
# membership2.group_id: 88
|
193
|
+
# memberships = [membership1, membership2]
|
194
|
+
# create = Readiness::Zendesk::GroupMemberships.create_many!(client, memberships)
|
195
|
+
# pp create.id
|
196
|
+
# # => "82de0b044094f0c67893ac9fe64f1a99"
|
197
|
+
def self.create_many(client, memberships)
|
198
|
+
data = { group_memberships: memberships.map { |t| to_hash(t).compact } }.to_json
|
199
|
+
response = client.connection.post('group_memberships/create_many', data)
|
200
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create many group memberships', message: Oj.load(response.body)}) unless response.status == 200
|
201
|
+
JobStatuses.new(Oj.load(response.body)['job_status'])
|
202
|
+
end
|
203
|
+
|
204
|
+
##
|
205
|
+
# Deletes an group membership. Will exit if unsuccessful
|
206
|
+
#
|
207
|
+
# @author Jason Colyer
|
208
|
+
# @since 1.0.0
|
209
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
210
|
+
# @param membership [Object] An instance of {Readiness::Zendesk::GroupMemberships}
|
211
|
+
# @return [Boolean]
|
212
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#delete-membership Zendesk API > Group Memberships > Delete Membership
|
213
|
+
# @example
|
214
|
+
# require 'support_readiness'
|
215
|
+
# config = Readiness::Zendesk::Configuration.new
|
216
|
+
# config.username = 'alice@example.com'
|
217
|
+
# config.token = 'test123abc'
|
218
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
219
|
+
# client = Readiness::Zendesk::Client.new(config)
|
220
|
+
# membership = Readiness::Zendesk::GroupMemberships.find!(client, 4)
|
221
|
+
# delete = Readiness::Zendesk::GroupMemberships.delete!(client, membership)
|
222
|
+
# pp delete
|
223
|
+
# # => true
|
224
|
+
def self.delete!(client, membership)
|
225
|
+
response = client.connection.delete "group_memberships/#{membership.id}"
|
226
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete group membership', message: Oj.load(response.body)}) unless response.status == 204
|
227
|
+
true
|
228
|
+
end
|
229
|
+
|
230
|
+
##
|
231
|
+
# Deletes multiple organization memberships via a batch job
|
232
|
+
#
|
233
|
+
# @author Jason Colyer
|
234
|
+
# @since 1.0.0
|
235
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
236
|
+
# @param mids [Array] An array of group memberships IDs
|
237
|
+
# @return [object] A {Readiness::Zendesk::JobStatuses} instance
|
238
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#bulk-delete-memberships Zendesk API > Group Memberships > Bulk Delete Memberships
|
239
|
+
# @example
|
240
|
+
# require 'support_readiness'
|
241
|
+
# config = Readiness::Zendesk::Configuration.new
|
242
|
+
# config.username = 'alice@example.com'
|
243
|
+
# config.token = 'test123abc'
|
244
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
245
|
+
# client = Readiness::Zendesk::Client.new(config)
|
246
|
+
# delete = Readiness::Zendesk::GroupMemberships.delete_many!(client, [1, 2, 3])
|
247
|
+
# pp delete.id
|
248
|
+
# # => "82de0b044094f0c67893ac9fe64f1a99"
|
249
|
+
def self.delete_many!(client, mids)
|
250
|
+
response = client.connection.delete("group_memberships/destroy_many?ids=#{mids.join(',')}")
|
251
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete many group memberships', message: Oj.load(response.body)}) unless response.status == 200
|
252
|
+
JobStatuses.new(Oj.load(response.body)['job_status'])
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
@@ -0,0 +1,249 @@
|
|
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 Groups within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
class Groups < Readiness::Client
|
13
|
+
attr_accessor :default, :deleted, :description, :id, :is_public, :name
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::Groups} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.0
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::Groups}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::Groups.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@default = object['default']
|
26
|
+
@deleted = object['deleted']
|
27
|
+
@description = object['description']
|
28
|
+
@id = object['id']
|
29
|
+
@is_public = object['is_public']
|
30
|
+
@name = object['name']
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Lists the first 100 groups
|
35
|
+
#
|
36
|
+
# @author Jason Colyer
|
37
|
+
# @since 1.0.0
|
38
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
39
|
+
# @return [Array]
|
40
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/groups/#list-groups Zendesk API > Groups > List Groups
|
41
|
+
# @example
|
42
|
+
# require 'support_readiness'
|
43
|
+
# config = Readiness::Zendesk::Configuration.new
|
44
|
+
# config.username = 'alice@example.com'
|
45
|
+
# config.token = 'test123abc'
|
46
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
47
|
+
# client = Readiness::Zendesk::Client.new(config)
|
48
|
+
# groups = Readiness::Zendesk::Groups.list(client)
|
49
|
+
# pp groups.first.id
|
50
|
+
# # => 211
|
51
|
+
def self.list(client)
|
52
|
+
response = client.connection.get("groups?page[size]=100")
|
53
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
54
|
+
Oj.load(response.body)['groups'].map { |g| Groups.new(g) }
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Show information on the approximate count of groups.
|
59
|
+
#
|
60
|
+
# @author Jason Colyer
|
61
|
+
# @since 1.0.0
|
62
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
63
|
+
# @return [Hash]
|
64
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/groups/#count-groups Zendesk API > Groups > Count Groups
|
65
|
+
# @example
|
66
|
+
# require 'support_readiness'
|
67
|
+
# config = Readiness::Zendesk::Configuration.new
|
68
|
+
# config.username = 'alice@example.com'
|
69
|
+
# config.token = 'test123abc'
|
70
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
71
|
+
# client = Readiness::Zendesk::Client.new(config)
|
72
|
+
# count = Readiness::Zendesk::Groups.count(client)
|
73
|
+
# pp count['value']
|
74
|
+
# # => 102
|
75
|
+
def self.count(client)
|
76
|
+
response = client.connection.get('groups/count')
|
77
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
78
|
+
Oj.load(response.body)['count']
|
79
|
+
end
|
80
|
+
|
81
|
+
##
|
82
|
+
# Locates a group within Zendesk. This will not exit on error (except Authentication errors)
|
83
|
+
#
|
84
|
+
# @author Jason Colyer
|
85
|
+
# @since 1.0.0
|
86
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
87
|
+
# @param gid [Integer] The group ID to find
|
88
|
+
# @return [Hash]
|
89
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/groups/#show-group Zendesk API > Groups > Show Group
|
90
|
+
# @example
|
91
|
+
# require 'support_readiness'
|
92
|
+
# config = Readiness::Zendesk::Configuration.new
|
93
|
+
# config.username = 'alice@example.com'
|
94
|
+
# config.token = 'test123abc'
|
95
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
96
|
+
# client = Readiness::Zendesk::Client.new(config)
|
97
|
+
# group = Readiness::Zendesk::Groups.find(client, 211)
|
98
|
+
# pp group.name
|
99
|
+
# # => "DJs"
|
100
|
+
def self.find(client, gid)
|
101
|
+
response = client.connection.get("groups/#{gid}")
|
102
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: gid }) unless response.status == 200
|
103
|
+
return Groups.new(Oj.load(response.body)['group']) if response.status == 200
|
104
|
+
|
105
|
+
Oj.load(response.body)
|
106
|
+
end
|
107
|
+
|
108
|
+
##
|
109
|
+
# Locates a group within Zendesk. This will exit on error
|
110
|
+
#
|
111
|
+
# @author Jason Colyer
|
112
|
+
# @since 1.0.0
|
113
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
114
|
+
# @param gid [Integer] The group ID to find
|
115
|
+
# @return [Hash]
|
116
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/groups/#show-group Zendesk API > Groups > Show Group
|
117
|
+
# @example
|
118
|
+
# require 'support_readiness'
|
119
|
+
# config = Readiness::Zendesk::Configuration.new
|
120
|
+
# config.username = 'alice@example.com'
|
121
|
+
# config.token = 'test123abc'
|
122
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
123
|
+
# client = Readiness::Zendesk::Client.new(config)
|
124
|
+
# group = Readiness::Zendesk::Groups.find!(client, 211)
|
125
|
+
# pp group.name
|
126
|
+
# # => "DJs"
|
127
|
+
def self.find!(client, gid)
|
128
|
+
response = client.connection.get("groups/#{gid}")
|
129
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find group', id: gid }) unless response.status == 200
|
130
|
+
Groups.new(Oj.load(response.body)['group'])
|
131
|
+
end
|
132
|
+
|
133
|
+
##
|
134
|
+
# Creates a group. Will exit if unsuccessful
|
135
|
+
#
|
136
|
+
# @author Jason Colyer
|
137
|
+
# @since 1.0.0
|
138
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
139
|
+
# @param group [Object] An instance of {Readiness::Zendesk::Groups}
|
140
|
+
# @return [Object] An instance of {Readiness::Zendesk::Groups}
|
141
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/groups/#create-group Zendesk API > Groups > Create Group
|
142
|
+
# @example
|
143
|
+
# require 'support_readiness'
|
144
|
+
# config = Readiness::Zendesk::Configuration.new
|
145
|
+
# config.username = 'alice@example.com'
|
146
|
+
# config.token = 'test123abc'
|
147
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
148
|
+
# client = Readiness::Zendesk::Client.new(config)
|
149
|
+
# group = Readiness::Zendesk::Groups.new
|
150
|
+
# group.name = 'My Group'
|
151
|
+
# create = Readiness::Zendesk::Groups.create!(client, group)
|
152
|
+
# pp create.id
|
153
|
+
# # => 122
|
154
|
+
def self.create!(client, group)
|
155
|
+
response = client.connection.post 'groups', to_clean_json_with_key(group, 'group')
|
156
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create group', message: Oj.load(response.body)}) unless response.status == 201
|
157
|
+
Groups.new(Oj.load(response.body)['group'])
|
158
|
+
end
|
159
|
+
|
160
|
+
##
|
161
|
+
# Updates a group. Will exit if unsuccessful
|
162
|
+
#
|
163
|
+
# @author Jason Colyer
|
164
|
+
# @since 1.0.0
|
165
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
166
|
+
# @param group [Object] An instance of {Readiness::Zendesk::Groups}
|
167
|
+
# @return [Object] An instance of {Readiness::Zendesk::Groups}
|
168
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/groups/#update-group Zendesk API > Groups > Update Group
|
169
|
+
# @example
|
170
|
+
# require 'support_readiness'
|
171
|
+
# config = Readiness::Zendesk::Configuration.new
|
172
|
+
# config.username = 'alice@example.com'
|
173
|
+
# config.token = 'test123abc'
|
174
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
175
|
+
# client = Readiness::Zendesk::Client.new(config)
|
176
|
+
# group = Readiness::Zendesk::Groups.find!(client, 122)
|
177
|
+
# group.name = 'My Group 2'
|
178
|
+
# update = Readiness::Zendesk::Groups.update!(client, group)
|
179
|
+
# pp update.name
|
180
|
+
# # => "My Group 2"
|
181
|
+
def self.update!(client, group)
|
182
|
+
response = client.connection.put "groups/#{group.id}", to_clean_json_with_key(group, 'group')
|
183
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update group', id: group.id, message: Oj.load(response.body)}) unless response.status == 200
|
184
|
+
Groups.new(Oj.load(response.body)['group'])
|
185
|
+
end
|
186
|
+
|
187
|
+
##
|
188
|
+
# Deletes a group. Will exit if unsuccessful
|
189
|
+
#
|
190
|
+
# @author Jason Colyer
|
191
|
+
# @since 1.0.0
|
192
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
193
|
+
# @param group [Object] An instance of {Readiness::Zendesk::Groups}
|
194
|
+
# @return [Boolean]
|
195
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/groups/#delete-group Zendesk API > Groups > Delete Group
|
196
|
+
# @example
|
197
|
+
# require 'support_readiness'
|
198
|
+
# config = Readiness::Zendesk::Configuration.new
|
199
|
+
# config.username = 'alice@example.com'
|
200
|
+
# config.token = 'test123abc'
|
201
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
202
|
+
# client = Readiness::Zendesk::Client.new(config)
|
203
|
+
# group = Readiness::Zendesk::Groups.find!(client, 122)
|
204
|
+
# delete = Readiness::Zendesk::Groups.delete!(client, group)
|
205
|
+
# pp delete
|
206
|
+
# # => true
|
207
|
+
def self.delete!(client, group)
|
208
|
+
response = client.connection.delete "groups/#{group.id}"
|
209
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete an group', id: group.id, message: Oj.load(response.body)}) unless response.status == 204
|
210
|
+
true
|
211
|
+
end
|
212
|
+
|
213
|
+
##
|
214
|
+
# Lists the members of a group
|
215
|
+
#
|
216
|
+
# @author Jason Colyer
|
217
|
+
# @since 1.0.0
|
218
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
219
|
+
# @return [Array]
|
220
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#list-memberships Zendesk API > Group Memberships > List Memberships
|
221
|
+
# @example
|
222
|
+
# require 'support_readiness'
|
223
|
+
# config = Readiness::Zendesk::Configuration.new
|
224
|
+
# config.username = 'alice@example.com'
|
225
|
+
# config.token = 'test123abc'
|
226
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
227
|
+
# client = Readiness::Zendesk::Client.new(config)
|
228
|
+
# group = Readiness::Zendesk::Groups.find!(client, 122)
|
229
|
+
# members = Readiness::Zendesk::Groups.memberships(client, group)
|
230
|
+
# pp members.count
|
231
|
+
# # => 38
|
232
|
+
def self.memberships(client, group)
|
233
|
+
array = []
|
234
|
+
opts = "page[size]=100"
|
235
|
+
loop do
|
236
|
+
response = client.connection.get("groups/#{group.id}/memberships?#{opts}")
|
237
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
238
|
+
body = Oj.load(response.body)
|
239
|
+
array += body['group_memberships']
|
240
|
+
break if limit != 0 && array.count >= (limit * 100)
|
241
|
+
break unless body['meta']['has_more']
|
242
|
+
|
243
|
+
opts = body['links'] ['next'].split('?').last
|
244
|
+
end
|
245
|
+
array
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|