class Gemstash::GemSource::PrivateSource
GemSource
for privately stored gems.
Attributes
auth[RW]
Public Class Methods
matches?(env)
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 17 def self.matches?(env) rewriter = rack_env_rewriter.for(env) return false unless rewriter.matches? rewriter.rewrite true end
rack_env_rewriter()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 13 def self.rack_env_rewriter @rack_env_rewriter ||= Gemstash::RackEnvRewriter.new(%r{\A/private}) end
Public Instance Methods
serve_actual_gem(id)
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 68 def serve_actual_gem(id) halt 403, "Not yet supported" end
serve_add_gem()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 29 def serve_add_gem protected(Gemstash::GemPusher) end
serve_add_spec_json()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 37 def serve_add_spec_json halt 403, "Not yet supported" end
serve_gem(id)
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 72 def serve_gem(id) authorization.protect(self) do auth.check("fetch") if gemstash_env.config[:protected_fetch] gem_full_name = id.delete_suffix(".gem") gem = fetch_gem(gem_full_name) content_type "application/octet-stream" gem.content(:gem) end end
serve_info(name)
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 53 def serve_info(name) halt 403, "Not yet supported" end
serve_latest_specs()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 87 def serve_latest_specs params[:latest] = true protected(Gemstash::SpecsBuilder) end
serve_marshal(id)
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 57 def serve_marshal(id) authorization.protect(self) do auth.check("fetch") if gemstash_env.config[:protected_fetch] gem_full_name = id.delete_suffix(".gemspec.rz") gem = fetch_gem(gem_full_name) halt 404 unless gem.exist?(:spec) content_type "application/octet-stream" gem.content(:spec) end end
serve_names()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 45 def serve_names halt 403, "Not yet supported" end
serve_prerelease_specs()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 92 def serve_prerelease_specs params[:prerelease] = true protected(Gemstash::SpecsBuilder) end
serve_remove_spec_json()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 41 def serve_remove_spec_json halt 403, "Not yet supported" end
serve_root()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 25 def serve_root halt 403, "Not yet supported" end
serve_specs()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 82 def serve_specs params[:prerelease] = false protected(Gemstash::SpecsBuilder) end
serve_versions()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 49 def serve_versions halt 404, "Not yet supported" end
serve_yank()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 33 def serve_yank protected(Gemstash::GemYanker) end
Private Instance Methods
dependencies()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 107 def dependencies @dependencies ||= Gemstash::Dependencies.for_private end
fetch_gem(gem_full_name)
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 115 def fetch_gem(gem_full_name) gem = storage.resource(gem_full_name) halt 404 unless gem.exist?(:gem) halt 403, "That gem has been yanked" unless gem.properties[:indexed] gem end
protected(servable)
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 99 def protected(servable) authorization.protect(self) { servable.serve(self) } end
storage()
click to toggle source
# File lib/gemstash/gem_source/private_source.rb, line 111 def storage @storage ||= Gemstash::Storage.for("private").for("gems") end