class Gemstash::GemSource::RedirectSource
GemSource
that purely redirects to the upstream server.
Public Class Methods
capture_user_agent(env)
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 24 def self.capture_user_agent(env) env["gemstash.user-agent"] = env["HTTP_USER_AGENT"] end
matches?(env)
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 14 def self.matches?(env) rewriter = rack_env_rewriter.for(env) return false unless rewriter.matches? rewriter.rewrite env["gemstash.upstream"] = rewriter.captures["upstream_url"] capture_user_agent(env) true end
rack_env_rewriter()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 10 def self.rack_env_rewriter @rack_env_rewriter ||= Gemstash::RackEnvRewriter.new(%r{\A/redirect/(?<upstream_url>[^/]+)}) end
Public Instance Methods
serve_actual_gem(id)
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 73 def serve_actual_gem(id) redirect upstream.url("fetch/actual/gem/#{id}", request.query_string) end
serve_add_gem()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 33 def serve_add_gem halt 403, "Cannot add gem to an upstream server!" end
serve_add_spec_json()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 41 def serve_add_spec_json halt 403, "Cannot add spec to an upstream server!" end
serve_dependencies()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 49 def serve_dependencies redirect upstream.url("api/v1/dependencies", request.query_string) end
serve_dependencies_json()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 53 def serve_dependencies_json redirect upstream.url("api/v1/dependencies.json", request.query_string) end
serve_gem(id)
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 77 def serve_gem(id) redirect upstream.url("gems/#{id}", request.query_string) end
serve_info(name)
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 65 def serve_info(name) redirect index_upstream.url("info/#{name}", request.query_string) end
serve_latest_specs()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 81 def serve_latest_specs redirect upstream.url("latest_specs.4.8.gz", request.query_string) end
serve_marshal(id)
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 69 def serve_marshal(id) redirect upstream.url("quick/Marshal.4.8/#{id}", request.query_string) end
serve_names()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 57 def serve_names redirect upstream.url("names", request.query_string) end
serve_prerelease_specs()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 89 def serve_prerelease_specs redirect upstream.url("prerelease_specs.4.8.gz", request.query_string) end
serve_remove_spec_json()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 45 def serve_remove_spec_json halt 403, "Cannot remove spec from an upstream server!" end
serve_root()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 28 def serve_root cache_control :public, :max_age => 31_536_000 redirect upstream.url(nil, request.query_string) end
serve_specs()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 85 def serve_specs redirect upstream.url("specs.4.8.gz", request.query_string) end
serve_versions()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 61 def serve_versions redirect index_upstream.url("versions", request.query_string) end
serve_yank()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 37 def serve_yank halt 403, "Cannot yank from an upstream server!" end
Private Instance Methods
index_upstream()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 102 def index_upstream @index_upstream ||= if upstream.uri.host == "rubygems.org" uri = upstream.uri.dup uri.host = "index.rubygems.org" Gemstash::Upstream.new(uri, user_agent: upstream.user_agent) else upstream end end
upstream()
click to toggle source
# File lib/gemstash/gem_source/upstream_source.rb, line 95 def upstream @upstream ||= Gemstash::Upstream.new( env["gemstash.upstream"], user_agent: env["gemstash.user-agent"] ) end