class Gemstash::Upstream

Attributes

uri[R]
user_agent[R]

Public Class Methods

new(upstream, user_agent: nil) click to toggle source
# File lib/gemstash/upstream.rb, line 16
def initialize(upstream, user_agent: nil)
  url = CGI.unescape(upstream.to_s)
  url = "https://#{url}" unless %r{^https?://}.match?(url)
  @uri = URI(url)
  @user_agent = user_agent
  raise "URL '#{@uri}' is not valid!" unless @uri.to_s&.match?(URI::DEFAULT_PARSER.make_regexp)
end

Public Instance Methods

auth?() click to toggle source
# File lib/gemstash/upstream.rb, line 36
def auth?
  !user.to_s.empty? || !password.to_s.empty?
end
host_id() click to toggle source

Utilized as the parent directory for cached gems

# File lib/gemstash/upstream.rb, line 41
def host_id
  @host_id ||= "#{host}_#{hash}"
end
password() click to toggle source
# File lib/gemstash/upstream.rb, line 49
def password
  env_auth_pass || @uri.password
end
url(path = nil, params = nil) click to toggle source
# File lib/gemstash/upstream.rb, line 24
def url(path = nil, params = nil)
  base = to_s

  unless path.to_s.empty?
    base = "#{base}/" unless base.end_with?("/")
    path = path[1..] if path.to_s.start_with?("/")
  end

  params = "?#{params}" if !params.nil? && !params.empty?
  "#{base}#{path}#{params}"
end
user() click to toggle source
# File lib/gemstash/upstream.rb, line 45
def user
  env_auth_user || @uri.user
end

Private Instance Methods

env_auth() click to toggle source
# File lib/gemstash/upstream.rb, line 72
def env_auth
  @env_auth ||= ENV["GEMSTASH_#{host_for_env}"]
end
env_auth_pass() click to toggle source
# File lib/gemstash/upstream.rb, line 65
def env_auth_pass
  return unless env_auth
  return unless env_auth.include?(":")

  env_auth.split(":", 2).last
end
env_auth_user() click to toggle source
# File lib/gemstash/upstream.rb, line 59
def env_auth_user
  return unless env_auth

  env_auth.split(":", 2).first
end
hash() click to toggle source
# File lib/gemstash/upstream.rb, line 55
def hash
  Digest::MD5.hexdigest(to_s)
end
host_for_env() click to toggle source
# File lib/gemstash/upstream.rb, line 76
def host_for_env
  host.upcase.gsub(".", "__").gsub("-", "___")
end