Class: Gemstash::GemSource::RedirectSource
- Inherits:
-
Base
- Object
- Base
- Gemstash::GemSource::RedirectSource
show all
- Defined in:
- lib/gemstash/gem_source/upstream_source.rb
Overview
GemSource that purely redirects to the upstream server.
Constant Summary
Constants included
from Logging
Logging::LEVELS
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#initialize
Methods included from Logging
#log, #log_error, logger, reset, setup_logger
Class Method Details
.capture_user_agent(env) ⇒ Object
24
25
26
|
# 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) ⇒ Boolean
14
15
16
17
18
19
20
21
22
|
# 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 ⇒ Object
10
11
12
|
# 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
|
Instance Method Details
#serve_actual_gem(id) ⇒ Object
73
74
75
|
# 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 ⇒ Object
33
34
35
|
# 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 ⇒ Object
41
42
43
|
# 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 ⇒ Object
49
50
51
|
# 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 ⇒ Object
53
54
55
|
# 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) ⇒ Object
77
78
79
|
# 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) ⇒ Object
65
66
67
|
# 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 ⇒ Object
81
82
83
|
# 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) ⇒ Object
69
70
71
|
# 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 ⇒ Object
57
58
59
|
# File 'lib/gemstash/gem_source/upstream_source.rb', line 57
def serve_names
redirect upstream.url("names", request.query_string)
end
|
#serve_prerelease_specs ⇒ Object
89
90
91
|
# 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 ⇒ Object
45
46
47
|
# 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 ⇒ Object
28
29
30
31
|
# 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 ⇒ Object
85
86
87
|
# 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 ⇒ Object
61
62
63
|
# File 'lib/gemstash/gem_source/upstream_source.rb', line 61
def serve_versions
redirect index_upstream.url("versions", request.query_string)
end
|
#serve_yank ⇒ Object
37
38
39
|
# File 'lib/gemstash/gem_source/upstream_source.rb', line 37
def serve_yank
halt 403, "Cannot yank from an upstream server!"
end
|