ministryofjustice/Claim-for-Crown-Court-Defence

View on GitHub
app/services/slack_notifier.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
92%
class SlackNotifier
  def initialize(channel, formatter:, slack_bot_name: Settings.slack.bot_name)
    @formatter = formatter
    @slack_url = Settings.slack.bot_url
    @ready_to_send = false
    @payload = {
      channel:,
      username: slack_bot_name
    }
  end

  def send_message
    raise 'Unable to send without payload' unless @ready_to_send

    Faraday.post(@slack_url, @payload.to_json, { 'Content-Type': 'application/json' })
  end

  def build_payload(**)
    @payload[:attachments] = [@formatter.attachment(**)]
    @payload[:icon_emoji] = @formatter.message_icon
    @ready_to_send = true
  rescue StandardError
    @ready_to_send = false
  end
end