debian-mirror-gitlab/lib/gitlab/checks/post_push_message.rb

56 lines
1.3 KiB
Ruby
Raw Normal View History

2018-12-13 13:39:08 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
module Gitlab
module Checks
class PostPushMessage
2020-04-08 14:13:33 +05:30
def initialize(repository, user, protocol)
@repository = repository
2018-03-17 18:26:18 +05:30
@user = user
@protocol = protocol
end
def self.fetch_message(user_id, project_id)
key = message_key(user_id, project_id)
Gitlab::Redis::SharedState.with do |redis|
message = redis.get(key)
redis.del(key)
message
end
end
def add_message
return unless user.present? && project.present?
Gitlab::Redis::SharedState.with do |redis|
key = self.class.message_key(user.id, project.id)
redis.setex(key, 5.minutes, message)
end
end
def message
raise NotImplementedError
end
protected
2020-04-08 14:13:33 +05:30
attr_reader :repository, :user, :protocol
delegate :project, to: :repository, allow_nil: true
delegate :container, to: :repository, allow_nil: false
2018-03-17 18:26:18 +05:30
def self.message_key(user_id, project_id)
raise NotImplementedError
end
def url_to_repo
2020-04-08 14:13:33 +05:30
protocol == 'ssh' ? message_subject.ssh_url_to_repo : message_subject.http_url_to_repo
end
def message_subject
repository.repo_type.wiki? ? project.wiki : container
2018-03-17 18:26:18 +05:30
end
end
end
end