Module: Legion::Extensions::Github::Absorbers::Helpers

Defined in:
lib/legion/extensions/github/absorbers/helpers.rb

Constant Summary collapse

FLEET_LABELS =
%w[
  fleet:received fleet:implementing fleet:pr-open fleet:escalated
].freeze
IGNORED_ACTIONS =
%w[
  closed transferred deleted pinned unpinned milestoned demilestoned
].freeze
BOT_PATTERNS =
/\[bot\]\z/i

Instance Method Summary collapse

Instance Method Details

#bot_generated?(payload) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
28
29
30
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 22

def bot_generated?(payload)
  sender = payload['sender'] || payload[:sender]
  return false unless sender

   = sender['login'] || sender[:login] || ''
  type = sender['type'] || sender[:type] || ''

  type.downcase == 'bot' || .match?(BOT_PATTERNS)
end

#generate_work_item_idObject



53
54
55
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 53

def generate_work_item_id
  SecureRandom.uuid
end

#has_fleet_label?(payload) ⇒ Boolean

rubocop:disable Naming/PredicatePrefix

Returns:

  • (Boolean)


32
33
34
35
36
37
38
39
40
41
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 32

def has_fleet_label?(payload) # rubocop:disable Naming/PredicatePrefix
  issue = payload['issue'] || payload[:issue]
  return false unless issue

  labels = issue['labels'] || issue[:labels] || []
  labels.any? do |label|
    name = label['name'] || label[:name]
    FLEET_LABELS.include?(name)
  end
end

#ignored?(payload) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 43

def ignored?(payload)
  action = payload['action'] || payload[:action]
  IGNORED_ACTIONS.include?(action.to_s)
end

#transport_connected?Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 57

def transport_connected?
  return false unless defined?(Legion::Settings)

  !!Legion::Settings.dig(:transport, :connected)
rescue StandardError => _e
  false
end

#work_item_fingerprint(source:, ref:, title:) ⇒ Object



48
49
50
51
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 48

def work_item_fingerprint(source:, ref:, title:)
  input = "#{source}:#{ref}:#{title}"
  Digest::SHA256.hexdigest(input)
end