gitlab_support_readiness 1.0.11 → 1.0.13
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/calendly/client.rb +64 -0
- data/lib/support_readiness/calendly/configuration.rb +45 -0
- data/lib/support_readiness/calendly/organization_memberships.rb +67 -0
- data/lib/support_readiness/calendly/organizations.rb +123 -0
- data/lib/support_readiness/calendly/users.rb +105 -0
- data/lib/support_readiness/calendly.rb +16 -0
- data/lib/support_readiness/client.rb +88 -1
- data/lib/support_readiness/dates.rb +90 -0
- data/lib/support_readiness/gitlab/configuration.rb +0 -1
- data/lib/support_readiness/gitlab/groups.rb +35 -0
- data/lib/support_readiness/gitlab/jobs.rb +189 -0
- data/lib/support_readiness/gitlab/markdown.rb +37 -0
- data/lib/support_readiness/gitlab/merge_requests.rb +127 -0
- data/lib/support_readiness/gitlab/namespaces.rb +22 -0
- data/lib/support_readiness/gitlab/pipelines.rb +191 -0
- data/lib/support_readiness/gitlab/projects.rb +85 -1
- data/lib/support_readiness/gitlab/repositories.rb +174 -0
- data/lib/support_readiness/gitlab/users.rb +24 -0
- data/lib/support_readiness/gitlab.rb +4 -0
- data/lib/support_readiness/google_calendar/client.rb +59 -0
- data/lib/support_readiness/google_calendar/configuration.rb +39 -0
- data/lib/support_readiness/google_calendar/events.rb +169 -0
- data/lib/support_readiness/google_calendar.rb +14 -0
- data/lib/support_readiness/mailgun/bounces.rb +103 -0
- data/lib/support_readiness/mailgun/client.rb +65 -0
- data/lib/support_readiness/mailgun/configuration.rb +46 -0
- data/lib/support_readiness/mailgun/emails.rb +95 -0
- data/lib/support_readiness/mailgun.rb +15 -0
- data/lib/support_readiness/pagerduty/escalation_policies.rb +1 -1
- data/lib/support_readiness/pagerduty/schedules.rb +27 -3
- data/lib/support_readiness/pagerduty/services.rb +1 -1
- data/lib/support_readiness/pagerduty/users.rb +197 -0
- data/lib/support_readiness/pagerduty.rb +1 -0
- data/lib/support_readiness/repos/articles.rb +335 -0
- data/lib/support_readiness/repos/automations.rb +247 -0
- data/lib/support_readiness/repos/groups.rb +188 -0
- data/lib/support_readiness/repos/macros.rb +224 -0
- data/lib/support_readiness/repos/organization_fields.rb +193 -0
- data/lib/support_readiness/repos/sla_policies.rb +192 -0
- data/lib/support_readiness/repos/ticket_fields.rb +200 -0
- data/lib/support_readiness/repos/ticket_forms.rb +200 -0
- data/lib/support_readiness/repos/triggers.rb +255 -0
- data/lib/support_readiness/repos/user_fields.rb +201 -0
- data/lib/support_readiness/repos/views.rb +362 -0
- data/lib/support_readiness/repos.rb +22 -0
- data/lib/support_readiness/salesforce/accounts.rb +109 -0
- data/lib/support_readiness/salesforce/cases.rb +109 -0
- data/lib/support_readiness/salesforce/client.rb +64 -0
- data/lib/support_readiness/salesforce/configuration.rb +49 -0
- data/lib/support_readiness/salesforce/queries.rb +62 -0
- data/lib/support_readiness/salesforce.rb +16 -0
- data/lib/support_readiness/slack/client.rb +63 -0
- data/lib/support_readiness/slack/configuration.rb +43 -0
- data/lib/support_readiness/slack/messages.rb +37 -0
- data/lib/support_readiness/slack.rb +14 -0
- data/lib/support_readiness/zendesk/app_job_statuses.rb +140 -0
- data/lib/support_readiness/zendesk/apps.rb +209 -0
- data/lib/support_readiness/zendesk/automations.rb +1 -2
- data/lib/support_readiness/zendesk/macros.rb +1 -3
- data/lib/support_readiness/zendesk/organization_fields.rb +1 -1
- data/lib/support_readiness/zendesk/theme_job_statuses.rb +136 -0
- data/lib/support_readiness/zendesk/themes.rb +303 -0
- data/lib/support_readiness/zendesk/ticket_field_options.rb +110 -0
- data/lib/support_readiness/zendesk/ticket_fields.rb +85 -16
- data/lib/support_readiness/zendesk/ticket_forms.rb +65 -2
- data/lib/support_readiness/zendesk/tickets.rb +77 -0
- data/lib/support_readiness/zendesk/triggers.rb +1 -2
- data/lib/support_readiness/zendesk/user_field_options.rb +110 -0
- data/lib/support_readiness/zendesk/user_fields.rb +257 -0
- data/lib/support_readiness/zendesk/views.rb +49 -2
- data/lib/support_readiness/zendesk.rb +7 -0
- data/lib/support_readiness.rb +16 -0
- metadata +122 -2
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Mailgun
|
6
|
+
module Mailgun
|
7
|
+
##
|
8
|
+
# Defines the class Configuration within the module {Readiness::Mailgun}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.12
|
12
|
+
class Configuration
|
13
|
+
attr_accessor :domain, :token, :retry_options, :retry_max, :retry_interval, :retry_randomness, :retry_backoff, :retry_exceptions
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Mailgun::Configuration} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.12
|
20
|
+
# @example
|
21
|
+
# require 'support_readiness'
|
22
|
+
# config = Readiness::Mailgun::Configuration.new
|
23
|
+
# config.token = 'test123abc'
|
24
|
+
# config.domain = 'test.gitlab.com'
|
25
|
+
# pp config
|
26
|
+
# # => #<Readiness::Mailgun::Configuration:0x00007f352fdd1420
|
27
|
+
# @domain="test.gitlab.com"
|
28
|
+
# @retry_backoff=2,
|
29
|
+
# @retry_exceptions=
|
30
|
+
# [Errno::ETIMEDOUT, "Timeout::Error", Faraday::TimeoutError, Faraday::RetriableResponse, Faraday::ConnectionFailed],
|
31
|
+
# @retry_interval=1,
|
32
|
+
# @retry_max=5,
|
33
|
+
# @retry_randomness=0.5,
|
34
|
+
# @token="test123abc">
|
35
|
+
def initialize
|
36
|
+
@domain = ''
|
37
|
+
@token = ''
|
38
|
+
@retry_max = 5
|
39
|
+
@retry_interval = 1
|
40
|
+
@retry_randomness = 0.5
|
41
|
+
@retry_backoff = 2
|
42
|
+
@retry_exceptions = Faraday::Retry::Middleware::DEFAULT_EXCEPTIONS + [Faraday::ConnectionFailed]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Mailgun
|
6
|
+
module Mailgun
|
7
|
+
##
|
8
|
+
# Defines the class Emails within the module {Readiness::Mailgun}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.12
|
12
|
+
class Emails < Readiness::Client
|
13
|
+
attr_accessor :bcc, :cc, :from, :html, :subject, :reply_to, :text, :to
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Mailgun::Emails} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.12
|
20
|
+
# @param object [Object] An instance of {Readiness::Mailgun::Emails}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Mailgun::Emails.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@bcc = object['bcc']
|
26
|
+
@cc = object['cc']
|
27
|
+
@from = object['from']
|
28
|
+
@html = object['html']
|
29
|
+
@subject = object['subject']
|
30
|
+
@reply_to = object['reply_to']
|
31
|
+
@text = object['text']
|
32
|
+
@to = object['to']
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# Sends an email using Mailgun. This will exit on error or if the email values used are invalid
|
37
|
+
#
|
38
|
+
# @author Jason Colyer
|
39
|
+
# @since 1.0.12
|
40
|
+
# @param client [Object] An instance of {Readiness::Mailgun::Client}
|
41
|
+
# @param email [Object] An instance of {Readiness::Mailgun::Emails}
|
42
|
+
# @return [Boolean]
|
43
|
+
# @see https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Bounces/#tag/Bounces/operation/api.(*BounceController).Get-fm-20 Mailgun API > Bounces > View single bounce event
|
44
|
+
# @example
|
45
|
+
# require 'support_readiness'
|
46
|
+
# config = Readiness::Mailgun::Configuration.new
|
47
|
+
# config.domain = 'test.gitlab.com'
|
48
|
+
# config.token = 'abc123'
|
49
|
+
# client = Readiness::Mailgun::Client.new(config)
|
50
|
+
# email = Readiness::Mailgun::Emails.new
|
51
|
+
# email.from = 'techsupport@gitlab.com'
|
52
|
+
# email.to = 'jcolyer@gitlab.com'
|
53
|
+
# email.subject = 'Test from Jason'
|
54
|
+
# email.html = '<p>This is a test</p>'
|
55
|
+
# email.text = 'This is a test'
|
56
|
+
# pp Readiness::Mailgun::Emails.send!(client, email)
|
57
|
+
# # => true
|
58
|
+
def self.send!(client, email)
|
59
|
+
handle_request_error(1, 'Mailgun', 400, { action: 'Send email', id: email }) unless valid_email?(email)
|
60
|
+
response = client.connection.post "#{client.domain}/messages", to_clean_json(email)
|
61
|
+
handle_request_error(1, 'Mailgun', response.status, { action: 'Send email', id: email }) unless response.status == 200
|
62
|
+
true
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# Determines if all required values are present for an email to be sent.
|
67
|
+
#
|
68
|
+
# @author Jason Colyer
|
69
|
+
# @since 1.0.12
|
70
|
+
# @param email [Object] An instance of {Readiness::Mailgun::Emails}
|
71
|
+
# @return [Boolean]
|
72
|
+
# @example
|
73
|
+
# require 'support_readiness'
|
74
|
+
# email = Readiness::Mailgun::Emails.new
|
75
|
+
# email.from = 'techsupport@gitlab.com'
|
76
|
+
# email.to = 'jcolyer@gitlab.com'
|
77
|
+
# email.subject = 'Test from Jason'
|
78
|
+
# email.html = '<p>This is a test</p>'
|
79
|
+
# email.text = 'This is a test'
|
80
|
+
# pp Readiness::Mailgun::Emails.valid_email?(email)
|
81
|
+
# # => true
|
82
|
+
# email.subject = nil
|
83
|
+
# pp Readiness::Mailgun::Emails.valid_email?(email)
|
84
|
+
# # => false
|
85
|
+
def self.valid_email?(email)
|
86
|
+
return false if email.from.nil?
|
87
|
+
return false if email.to.nil?
|
88
|
+
return false if email.subject.nil?
|
89
|
+
return false if email.html.nil? && email.text.nil?
|
90
|
+
|
91
|
+
true
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
##
|
6
|
+
# Defines the module Mailgun
|
7
|
+
# @author Jason Colyer
|
8
|
+
# @since 1.0.12
|
9
|
+
module Mailgun
|
10
|
+
require "#{__dir__}/mailgun/client"
|
11
|
+
require "#{__dir__}/mailgun/configuration"
|
12
|
+
require "#{__dir__}/mailgun/bounces"
|
13
|
+
require "#{__dir__}/mailgun/emails"
|
14
|
+
end
|
15
|
+
end
|
@@ -10,7 +10,6 @@ module Readiness
|
|
10
10
|
# @author Jason Colyer
|
11
11
|
# @since 1.0.0
|
12
12
|
# @todo Create a schedule
|
13
|
-
# @todo Update a scehdule
|
14
13
|
# @todo List audit records for a schedule
|
15
14
|
# @todo List users on call
|
16
15
|
# @todo Preview a schedule
|
@@ -69,9 +68,9 @@ module Readiness
|
|
69
68
|
array += body['schedules'].map { |e| Schedules.new(e) }
|
70
69
|
break unless body['more']
|
71
70
|
|
72
|
-
offset +=
|
71
|
+
offset += 100
|
73
72
|
end
|
74
|
-
array
|
73
|
+
array.uniq
|
75
74
|
end
|
76
75
|
|
77
76
|
##
|
@@ -218,6 +217,31 @@ module Readiness
|
|
218
217
|
handle_request_error(1, 'Pagerduty', response.status, { action: 'Delete an override', id: schedule.id }) unless [200, 204].include?(response.status)
|
219
218
|
true
|
220
219
|
end
|
220
|
+
|
221
|
+
##
|
222
|
+
# Updates a schedule within Pagerduty. This will exit on error
|
223
|
+
#
|
224
|
+
# @author Jason Colyer
|
225
|
+
# @since 1.0.12
|
226
|
+
# @param client [Object] An instance of {Readiness::Pagerduty::Client}
|
227
|
+
# @param schedule [Object] A {Readiness::Pagerduty::Schedules} instance
|
228
|
+
# @return [Object] A {Readiness::Pagerduty::Schedules} instance
|
229
|
+
# @see https://developer.pagerduty.com/api-reference/7aff39ee95bfc-update-a-schedule Pagerduty API > Schedules > Update a schedule
|
230
|
+
# @example
|
231
|
+
# require 'support_readiness'
|
232
|
+
# config = Readiness::Pagerduty::Configuration.new
|
233
|
+
# config.token = 'test123abc'
|
234
|
+
# client = Readiness::Pagerduty::Client.new(config)
|
235
|
+
# schedule = Readiness::Pagerduty::Schedules.find(client, 'PI7DH85')
|
236
|
+
# schedule.name = 'Updated name'
|
237
|
+
# update = Readiness::Pagerduty::Schedules.update!(client, schedule)
|
238
|
+
# pp update.name
|
239
|
+
# # => "Updated name"
|
240
|
+
def self.update!(client, schedule)
|
241
|
+
response = client.connection.put "schedules/#{schedule.id}", to_clean_json_with_key(schedule, 'schedule')
|
242
|
+
handle_request_error(1, 'Pagerduty', response.status, { action: 'Update schedule', id: schedule.id, message: Oj.load(response.body)}) unless response.status == 200
|
243
|
+
Schedules.new(Oj.load(response.body)['schedule'])
|
244
|
+
end
|
221
245
|
end
|
222
246
|
end
|
223
247
|
end
|
@@ -0,0 +1,197 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Pagerduty
|
6
|
+
module Pagerduty
|
7
|
+
##
|
8
|
+
# Defines the class Users within the module {Readiness::Pagerduty}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.12
|
12
|
+
class Users < Readiness::Client
|
13
|
+
attr_accessor :avatar_url, :color, :contact_methods, :description, :email, :html_url, :id, :invitation_sent, :job_title, :license, :name, :notification_rules, :role, :self, :summary, :teams, :time_zone, :type
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Pagerduty::Users} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.12
|
20
|
+
# @param object [Object] An instance of {Readiness::Pagerduty::Users}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Pagerduty::Users.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@avatar_url = object['avatar_url']
|
26
|
+
@color = object['color']
|
27
|
+
@contact_methods = object['contact_methods']
|
28
|
+
@description = object['description']
|
29
|
+
@email = object['email']
|
30
|
+
@html_url = object['html_url']
|
31
|
+
@id = object['id']
|
32
|
+
@invitation_sent = object['invitation_sent']
|
33
|
+
@job_title = object['job_title']
|
34
|
+
@license = object['license']
|
35
|
+
@name = object['name']
|
36
|
+
@notification_rules = object['notification_rules']
|
37
|
+
@role = object['role']
|
38
|
+
@self = object['self']
|
39
|
+
@summary = object['summary']
|
40
|
+
@teams = object['teams']
|
41
|
+
@time_zone = object['time_zone']
|
42
|
+
@type = object['type']
|
43
|
+
end
|
44
|
+
|
45
|
+
##
|
46
|
+
# Lists users within Pagerduty
|
47
|
+
#
|
48
|
+
# @author Jason Colyer
|
49
|
+
# @since 1.0.12
|
50
|
+
# @param client [Object] An instance of {Readiness::Pagerduty::Client}
|
51
|
+
# @return [Array]
|
52
|
+
# @see https://developer.pagerduty.com/api-reference/c96e889522dd6-list-users Pagerduty API > Users > List users
|
53
|
+
# @example
|
54
|
+
# require 'support_readiness'
|
55
|
+
# config = Readiness::Pagerduty::Configuration.new
|
56
|
+
# config.token = 'abc123'
|
57
|
+
# client = Readiness::Pagerduty::Client.new(config)
|
58
|
+
# users = Readiness::Pagerduty::Users.list(client)
|
59
|
+
# pp users.count
|
60
|
+
# # => 436
|
61
|
+
def self.list(client)
|
62
|
+
array = []
|
63
|
+
offset = 0
|
64
|
+
loop do
|
65
|
+
response = client.connection.get "users?limit=100&offset=#{offset}"
|
66
|
+
body = Oj.load(response.body)
|
67
|
+
array += body['users'].map { |u| Users.new(u) }
|
68
|
+
break unless body['more']
|
69
|
+
|
70
|
+
offset += 100
|
71
|
+
end
|
72
|
+
array.uniq
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Shows info of a Pagerduty user. This will not exit on error (except for Auth errors)
|
77
|
+
#
|
78
|
+
# @author Jason Colyer
|
79
|
+
# @since 1.0.12
|
80
|
+
# @param client [Object] An instance of {Readiness::Pagerduty::Client}
|
81
|
+
# @see https://developer.pagerduty.com/api-reference/2395ca1feb25e-get-a-user Pagerduty API > Users > Get a user
|
82
|
+
# @param uid [String] The user ID to look for
|
83
|
+
# @return [Hash]
|
84
|
+
# @example
|
85
|
+
# require 'support_readiness'
|
86
|
+
# config = Readiness::Pagerduty::Configuration.new
|
87
|
+
# config.token = 'abc123'
|
88
|
+
# client = Readiness::Pagerduty::Client.new(config)
|
89
|
+
# user = Readiness::Pagerduty::Users.find(client, 'ABC123')
|
90
|
+
# pp user.name
|
91
|
+
# # => "Alice Example"
|
92
|
+
def self.find(client, uid)
|
93
|
+
response = client.connection.get("users/#{uid}")
|
94
|
+
handle_request_error(0, 'Pagerduty', response.status, { action: 'get', id: uid }) unless response.status == 200
|
95
|
+
return Users.new(Oj.load(response.body)['user']) if response.status == 200
|
96
|
+
|
97
|
+
Oj.load(response.body)
|
98
|
+
end
|
99
|
+
|
100
|
+
##
|
101
|
+
# Shows info of a Pagerduty user. This will exit on error
|
102
|
+
#
|
103
|
+
# @author Jason Colyer
|
104
|
+
# @since 1.0.12
|
105
|
+
# @param client [Object] An instance of {Readiness::Pagerduty::Client}
|
106
|
+
# @param uid [String] The user ID to look for
|
107
|
+
# @return [Object] An instance of {Readiness::Pagerduty::Users}
|
108
|
+
# @see https://developer.pagerduty.com/api-reference/2395ca1feb25e-get-a-user Pagerduty API > Users > Get a user
|
109
|
+
# @example
|
110
|
+
# require 'support_readiness'
|
111
|
+
# config = Readiness::Pagerduty::Configuration.new
|
112
|
+
# config.token = 'abc123'
|
113
|
+
# client = Readiness::Pagerduty::Client.new(config)
|
114
|
+
# user = Readiness::Pagerduty::Users.find!(client, 'ABC123')
|
115
|
+
# pp user.name
|
116
|
+
# # => "Alice Example"
|
117
|
+
def self.find!(client, uid)
|
118
|
+
response = client.connection.get("users/#{uid}")
|
119
|
+
handle_request_error(1, 'Pagerduty', response.status, { action: 'Find user', id: uid }) unless response.status == 200
|
120
|
+
Users.new(Oj.load(response.body)['user'])
|
121
|
+
end
|
122
|
+
|
123
|
+
##
|
124
|
+
# Shows info of a Pagerduty user using their email to find them. This will not exit on error (except Auth errors)
|
125
|
+
#
|
126
|
+
# @author Jason Colyer
|
127
|
+
# @since 1.0.12
|
128
|
+
# @param client [Object] An instance of {Readiness::Pagerduty::Client}
|
129
|
+
# @param email [String] The email to look for
|
130
|
+
# @return [Object] An instance of {Readiness::Pagerduty::Users}
|
131
|
+
# @example
|
132
|
+
# require 'support_readiness'
|
133
|
+
# config = Readiness::Pagerduty::Configuration.new
|
134
|
+
# config.token = 'abc123'
|
135
|
+
# client = Readiness::Pagerduty::Client.new(config)
|
136
|
+
# user = Readiness::Pagerduty::Users.find_by_email(client, 'alice@example.com')
|
137
|
+
# pp user.name
|
138
|
+
# # => "Alice Example"
|
139
|
+
def self.find_by_email(client, email)
|
140
|
+
list(client).detect { |u| u.email == email }
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Shows info of a Pagerduty user using their email to find them. This will exit on error
|
145
|
+
#
|
146
|
+
# @author Jason Colyer
|
147
|
+
# @since 1.0.12
|
148
|
+
# @param client [Object] An instance of {Readiness::Pagerduty::Client}
|
149
|
+
# @param email [String] The email to look for
|
150
|
+
# @return [Object] An instance of {Readiness::Pagerduty::Users}
|
151
|
+
# @example
|
152
|
+
# require 'support_readiness'
|
153
|
+
# config = Readiness::Pagerduty::Configuration.new
|
154
|
+
# config.token = 'abc123'
|
155
|
+
# client = Readiness::Pagerduty::Client.new(config)
|
156
|
+
# user = Readiness::Pagerduty::Users.find_by_email!(client, 'alice@example.com')
|
157
|
+
# pp user.name
|
158
|
+
# # => "Alice Example"
|
159
|
+
def self.find_by_email!(client, email)
|
160
|
+
response = list(client).detect { |u| u.email == email }
|
161
|
+
handle_request_error(1, 'Pagerduty', 404, { action: 'Find user by email', id: email }) if response.nil?
|
162
|
+
|
163
|
+
response
|
164
|
+
end
|
165
|
+
|
166
|
+
##
|
167
|
+
# Creates a user within Pagerduty. This will exit on error
|
168
|
+
#
|
169
|
+
# @author Jason Colyer
|
170
|
+
# @since 1.0.12
|
171
|
+
# @param client [Object] An instance of {Readiness::Pagerduty::Client}
|
172
|
+
# @param user [Object] An instance of {Readiness::Pagerduty::Users}
|
173
|
+
# @return [Object] An instance of {Readiness::Pagerduty::Users}
|
174
|
+
# @see https://developer.pagerduty.com/api-reference/4cb4fd0f5444a-create-a-user Pagerduty API > Users > Create a user
|
175
|
+
# @example
|
176
|
+
# require 'support_readiness'
|
177
|
+
# config = Readiness::Pagerduty::Configuration.new
|
178
|
+
# config.token = 'abc123'
|
179
|
+
# client = Readiness::Pagerduty::Client.new(config)
|
180
|
+
# user = Readiness::Pagerduty::Users.new
|
181
|
+
# user.name = 'Alice Example'
|
182
|
+
# user.email = 'alice@example.com'
|
183
|
+
# user.license = {
|
184
|
+
# id: 'P1C3FWI',
|
185
|
+
# type: 'license_reference'
|
186
|
+
# }
|
187
|
+
# create = Readiness::Pagerduty::Users.create!(client, user)
|
188
|
+
# pp create.id
|
189
|
+
# # => "ABC123"
|
190
|
+
def self.create!(client, user)
|
191
|
+
response = client.connection.post 'users', to_clean_json_with_key(user, 'user')
|
192
|
+
handle_request_error(1, 'Pagerduty', response.status, { action: 'Create user', id: user.email }) unless response.status == 201
|
193
|
+
Users.new(Oj.load(response.body)['user'])
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|