class Gitlab::Triage::UrlBuilders::UrlBuilder

Public Class Methods

new(options) click to toggle source
# File lib/gitlab/triage/url_builders/url_builder.rb, line 5
def initialize(options)
  @network_options = options.fetch(:network_options)
  @host_url = @network_options.host_url
  @api_version = @network_options.api_version
  @all = options.fetch(:all, false)
  @source = options.fetch(:source, 'projects')
  @source_id = options.fetch(:source_id)
  @resource_type = options.fetch(:resource_type, nil)
  @sub_resource_type = options.fetch(:sub_resource_type, nil)
  @resource_id = options.fetch(:resource_id, nil)
  @params = options.fetch(:params, [])
end

Public Instance Methods

build() click to toggle source
# File lib/gitlab/triage/url_builders/url_builder.rb, line 18
def build
  url = base_url
  url << "/#{percent_encode(@resource_id.to_s)}" if @resource_id
  url << "/#{@sub_resource_type}" if @sub_resource_type
  url << params_string if @params
  url
end

Private Instance Methods

base_url() click to toggle source
# File lib/gitlab/triage/url_builders/url_builder.rb, line 32
def base_url
  url = host_with_api_url
  url << "/#{@source}/#{percent_encode(@source_id.to_s)}" unless @all
  url << "/#{@resource_type}" if @resource_type
  url
end
host_with_api_url() click to toggle source
# File lib/gitlab/triage/url_builders/url_builder.rb, line 28
def host_with_api_url
  "#{@host_url}/api/#{@api_version}"
end
params_string() click to toggle source
# File lib/gitlab/triage/url_builders/url_builder.rb, line 39
def params_string
  "?" << @params.map do |k, v|
    "#{percent_encode(k.to_s)}=#{percent_encode(v.to_s)}"
  end.join("&")
end
percent_encode(str) click to toggle source
# File lib/gitlab/triage/url_builders/url_builder.rb, line 45
def percent_encode(str)
  CGI.escape(str).gsub('+', '%20')
end