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