webhook_service.rb 590 Bytes
class NotificationServices::WebhookService < NotificationService
  LABEL = "webhook"
  FIELDS = [
    [:api_token, {
      placeholder: 'URL to receive a POST request when an error occurs',
      label:       'URL'
    }]
  ]

  def check_params
    if FIELDS.detect { |f| self[f[0]].blank? }
      errors.add :base, 'You must specify the URL'
    end
  end

  def message_for_webhook(problem)
    {
      problem: { url: problem.url }.merge(problem.as_json).to_json
    }
  end

  def create_notification(problem)
    HTTParty.post(api_token, body: message_for_webhook(problem))
  end
end