Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/integrations/irker.rb')
-rw-r--r--app/models/integrations/irker.rb93
1 files changed, 50 insertions, 43 deletions
diff --git a/app/models/integrations/irker.rb b/app/models/integrations/irker.rb
index 780f4bef0c9..3f3e321f45e 100644
--- a/app/models/integrations/irker.rb
+++ b/app/models/integrations/irker.rb
@@ -4,13 +4,55 @@ require 'uri'
module Integrations
class Irker < Integration
- prop_accessor :server_host, :server_port, :default_irc_uri
- prop_accessor :recipients, :channels
- boolean_accessor :colorize_messages
validates :recipients, presence: true, if: :validate_recipients?
-
before_validation :get_channels
+ field :server_host,
+ placeholder: 'localhost',
+ title: -> { s_('IrkerService|Server host (optional)') },
+ help: -> { s_('IrkerService|irker daemon hostname (defaults to localhost).') }
+
+ field :server_port,
+ placeholder: 6659,
+ title: -> { s_('IrkerService|Server port (optional)') },
+ help: -> { s_('IrkerService|irker daemon port (defaults to 6659).') }
+
+ field :default_irc_uri,
+ title: -> { s_('IrkerService|Default IRC URI (optional)') },
+ help: -> { s_('IrkerService|URI to add before each recipient.') },
+ placeholder: 'irc://irc.network.net:6697/'
+
+ field :recipients,
+ type: 'textarea',
+ title: -> { s_('IrkerService|Recipients') },
+ placeholder: 'irc[s]://irc.network.net[:port]/#channel',
+ required: true,
+ help: -> do
+ recipients_docs_link = ActionController::Base.helpers.link_to(
+ s_('IrkerService|How to enter channels or users?'),
+ Rails.application.routes.url_helpers.help_page_url(
+ 'user/project/integrations/irker',
+ anchor: 'enter-irker-recipients'
+ ),
+ target: '_blank', rel: 'noopener noreferrer'
+ )
+
+ ERB::Util.html_escape(
+ s_('IrkerService|Channels and users separated by whitespaces. %{recipients_docs_link}')
+ ) % {
+ recipients_docs_link: recipients_docs_link.html_safe
+ }
+ end
+
+ field :colorize_messages,
+ type: 'checkbox',
+ title: -> { _('Colorize messages') }
+
+ # NOTE: This field is only used internally to store the parsed
+ # channels from the `recipients` field, it should not be exposed
+ # in the UI or API.
+ prop_accessor :channels
+
def title
s_('IrkerService|irker (IRC gateway)')
end
@@ -30,17 +72,10 @@ module Integrations
def execute(data)
return unless supported_events.include?(data[:object_kind])
- if Feature.enabled?(:rename_integrations_workers)
- Integrations::IrkerWorker.perform_async(
- project_id, channels,
- colorize_messages, data, settings
- )
- else
- ::IrkerWorker.perform_async(
- project_id, channels,
- colorize_messages, data, settings
- )
- end
+ Integrations::IrkerWorker.perform_async(
+ project_id, channels,
+ colorize_messages, data, settings
+ )
end
def settings
@@ -50,34 +85,6 @@ module Integrations
}
end
- def fields
- recipients_docs_link = ActionController::Base.helpers.link_to(
- s_('IrkerService|How to enter channels or users?'),
- Rails.application.routes.url_helpers.help_page_url(
- 'user/project/integrations/irker',
- anchor: 'enter-irker-recipients'
- ),
- target: '_blank', rel: 'noopener noreferrer'
- )
-
- [
- { type: 'text', name: 'server_host', placeholder: 'localhost', title: s_('IrkerService|Server host (optional)'),
- help: s_('IrkerService|irker daemon hostname (defaults to localhost).') },
- { type: 'text', name: 'server_port', placeholder: 6659, title: s_('IrkerService|Server port (optional)'),
- help: s_('IrkerService|irker daemon port (defaults to 6659).') },
- { type: 'text', name: 'default_irc_uri', title: s_('IrkerService|Default IRC URI (optional)'),
- help: s_('IrkerService|URI to add before each recipient.'),
- placeholder: 'irc://irc.network.net:6697/' },
- { type: 'textarea', name: 'recipients', title: s_('IrkerService|Recipients'),
- placeholder: 'irc[s]://irc.network.net[:port]/#channel', required: true,
- help: format(
- s_('IrkerService|Channels and users separated by whitespaces. %{recipients_docs_link}').html_safe,
- recipients_docs_link: recipients_docs_link.html_safe
- ) },
- { type: 'checkbox', name: 'colorize_messages', title: _('Colorize messages') }
- ]
- end
-
def help
docs_link = ActionController::Base.helpers.link_to(
_('Learn more.'),