in lib/release_tools/slack/message.rb [12:53]
def self.post(channel:, message:, blocks: [], mrkdwn: nil, additional_options: {})
raise NoCredentialsError unless slack_token.present?
additional_options[:unfurl_links] = false if additional_options[:unfurl_links].nil?
additional_options[:unfurl_media] = false if additional_options[:unfurl_media].nil?
params = {
channel: channel,
text: message,
mrkdwn: mrkdwn
}
.merge(additional_options)
.compact
params[:blocks] = blocks if blocks.any?
logger.trace(__method__, params)
return {} if SharedStatus.dry_run?
if Feature.enabled?(:slack_down)
logger.warn("Not attempting to call Slack API because FF 'slack_down' is enabled", params: params)
return {}
end
response = client.post(
API_URL,
json: params
)
unless response.status.success?
logger.warn('Slack API call was not successful', code: response.code, response_body: response.body, request_params: params)
raise CouldNotPostMessageError.new("#{response.code} #{response.reason} #{response.body}")
end
body = JSON.parse(response.body)
return body if body['ok']
logger.warn('Slack API call returned error', response_body: body, request_params: params)
raise CouldNotPostMessageError.new("#{response.code} #{response.reason} #{body}")
end