class Gitlab::Triage::Resource::Base

Constants

CONFIDENTIAL_TEXT

Attributes

parent[R]
resource[R]

Public Class Methods

define_field(name, &block) click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 13
def self.define_field(name, &block)
  define_method(name) do
    if redact_confidential_attributes?
      CONFIDENTIAL_TEXT
    else
      instance_eval(&block)
    end
  end
end
new( resource, parent: nil, network: nil, redact_confidentials: true) click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 23
def initialize(
  resource, parent: nil, network: nil, redact_confidentials: true)
  @resource = resource
  @parent = parent
  @network = network
  @redact_confidentials = redact_confidentials
end

Protected Instance Methods

network() click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 38
def network
  parent&.network || @network
end
redact_confidential_attributes?() click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 33
def redact_confidential_attributes?
  parent&.redact_confidential_attributes? ||
    (@redact_confidentials && resource[:confidential])
end

Private Instance Methods

build_url(params: {}, options: {}) click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 75
def build_url(params: {}, options: {})
  UrlBuilders::UrlBuilder.new(
    url_opts
      .merge(options)
      .merge(params: { per_page: 100 }.merge(params))
  ).build
end
expand_resource!(params: {}) click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 44
def expand_resource!(params: {})
  resource.merge!(
    network.query_api_cached(resource_url(params: params)).first)
end
resource_id() click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 61
def resource_id
  resource[:iid]
end
resource_url(params: {}, sub_resource_type: nil) click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 65
def resource_url(params: {}, sub_resource_type: nil)
  build_url(
    params: params,
    options: {
      resource_id: resource_id,
      sub_resource_type: sub_resource_type
    }
  )
end
source() click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 92
def source
  if resource[:project_id]
    'projects'
  elsif resource[:group_id]
    'groups'
  end
end
source_resource() click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 49
def source_resource
  @source_resource ||= network.query_api_cached(source_url).first
end
source_url() click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 53
def source_url
  build_url(options: { resource_type: nil })
end
url(params = {}) click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 57
def url(params = {})
  build_url(params: params)
end
url_opts() click to toggle source
# File lib/gitlab/triage/resource/base.rb, line 83
def url_opts
  {
    network_options: network.options,
    resource_type: self.class.name.demodulize.underscore.pluralize,
    source: source,
    source_id: resource[:"#{source.singularize}_id"]
  }
end