mirror of
https://github.com/discourse/discourse-chat-integration.git
synced 2025-10-27 11:58:37 +00:00
Providers can define their own errors, and these are presented in the user interface. e.g. Slack can define an error that says “That channel doesn’t exist”. Errors in the UI disappear once a message has been sent successfully, or the rule is edited.
40 lines
899 B
Ruby
40 lines
899 B
Ruby
module DiscourseChat
|
|
class ProviderError < StandardError
|
|
attr_accessor :info
|
|
|
|
def initialize(message = nil, info: nil)
|
|
super(message)
|
|
self.info = info.nil? ? {} : info
|
|
end
|
|
end
|
|
|
|
module Provider
|
|
def self.providers
|
|
constants.select do |constant|
|
|
constant.to_s =~ /Provider$/
|
|
end.map(&method(:const_get))
|
|
end
|
|
|
|
def self.enabled_providers
|
|
self.providers.select do |provider|
|
|
self.is_enabled(provider)
|
|
end
|
|
end
|
|
|
|
def self.get_by_name(name)
|
|
self.providers.find{|p| p::PROVIDER_NAME == name}
|
|
end
|
|
|
|
def self.is_enabled(provider)
|
|
if defined? provider::PROVIDER_ENABLED_SETTING
|
|
SiteSetting.send(provider::PROVIDER_ENABLED_SETTING)
|
|
else
|
|
false
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
require_relative "provider/slack/slack_provider.rb"
|
|
require_relative "provider/telegram/telegram_provider.rb" |