debian-mirror-gitlab/app/models/project_services/chat_message/base_message.rb

76 lines
1.5 KiB
Ruby
Raw Normal View History

2017-08-17 22:00:37 +05:30
require 'slack-notifier'
module ChatMessage
class BaseMessage
attr_reader :markdown
2018-03-17 18:26:18 +05:30
attr_reader :user_full_name
2017-08-17 22:00:37 +05:30
attr_reader :user_name
attr_reader :user_avatar
attr_reader :project_name
attr_reader :project_url
def initialize(params)
@markdown = params[:markdown] || false
@project_name = params.dig(:project, :path_with_namespace) || params[:project_name]
@project_url = params.dig(:project, :web_url) || params[:project_url]
2018-03-17 18:26:18 +05:30
@user_full_name = params.dig(:user, :name) || params[:user_full_name]
2017-08-17 22:00:37 +05:30
@user_name = params.dig(:user, :username) || params[:user_name]
@user_avatar = params.dig(:user, :avatar_url) || params[:user_avatar]
end
2018-03-17 18:26:18 +05:30
def user_combined_name
if user_full_name.present?
"#{user_full_name} (#{user_name})"
else
user_name
end
end
2017-08-17 22:00:37 +05:30
def pretext
return message if markdown
format(message)
end
def fallback
end
def attachments
raise NotImplementedError
end
def activity
raise NotImplementedError
end
private
def message
raise NotImplementedError
end
def format(string)
Slack::Notifier::LinkFormatter.format(string)
end
def attachment_color
'#345'
end
def link(text, url)
"[#{text}](#{url})"
end
def pretty_duration(seconds)
parse_string =
if duration < 1.hour
'%M:%S'
else
'%H:%M:%S'
end
Time.at(seconds).utc.strftime(parse_string)
end
end
end