blob: 2455e5e599fb48b7a2a36605f56702ae86cf1b29 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# frozen_string_literal: true
module Gitlab
module EndpointAttributes
extend ActiveSupport::Concern
include Gitlab::ClassAttributes
DEFAULT_URGENCY = Config::REQUEST_URGENCIES.fetch(:default)
class_methods do
def feature_category(category, actions = [])
endpoint_attributes.set(actions, feature_category: category)
end
def feature_category_for_action(action)
category = endpoint_attributes.attribute_for_action(action, :feature_category)
category || superclass_feature_category_for_action(action)
end
def urgency(urgency_name, actions = [])
endpoint_attributes.set(actions, urgency: urgency_name)
end
def urgency_for_action(action)
urgency = endpoint_attributes.attribute_for_action(action, :urgency)
urgency || superclass_urgency_for_action(action) || DEFAULT_URGENCY
end
private
def endpoint_attributes
class_attributes[:endpoint_attributes_config] ||= Config.new
end
def superclass_feature_category_for_action(action)
return unless superclass.respond_to?(:feature_category_for_action)
superclass.feature_category_for_action(action)
end
def superclass_urgency_for_action(action)
return unless superclass.respond_to?(:urgency_for_action)
superclass.urgency_for_action(action)
end
end
end
end
|