class Gitlab::Triage::Filters::MemberConditionsFilter

Constants

CONDITIONS
SOURCES

Public Class Methods

filter_parameters() click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 16
def self.filter_parameters
  [
    {
      name: :source,
      type: String,
      values: SOURCES
    },
    {
      name: :condition,
      type: String,
      values: CONDITIONS
    },
    {
      name: :source_id,
      type: [Numeric, String]
    }
  ]
end
new(resource, condition, network = nil) click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 11
def initialize(resource, condition, network = nil)
  @network = network
  super(resource, condition)
end

Public Instance Methods

calculate() click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 51
def calculate
  return false unless resource_value

  case @condition
  when :member_of
    condition_value.include?(resource_value)
  when :not_member_of
    !condition_value.include?(resource_value)
  end
end
condition_value() click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 45
def condition_value
  members.map do |member|
    member[:username]
  end
end
initialize_variables(condition) click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 35
def initialize_variables(condition)
  @source = condition[:source].to_sym
  @condition = condition[:condition].to_sym
  @source_id = condition[:source_id]
end
member_url() click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 66
def member_url
  UrlBuilders::UrlBuilder.new(url_opts).build
end
members() click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 62
def members
  @members ||= @network.query_api_cached(member_url)
end
resource_value() click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 41
def resource_value
  @resource[member_field][:username] if @resource[member_field]
end

Private Instance Methods

url_opts() click to toggle source
# File lib/gitlab/triage/filters/member_conditions_filter.rb, line 72
def url_opts
  {
    network_options: @network.options,
    resource_type: 'members',
    source: @source == :group ? 'groups' : 'projects',
    source_id: @source_id,
    params: { per_page: 100 }
  }
end