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