Class: Gemstash::GemSource::PrivateSource

Inherits:
Base
  • Object
show all
Includes:
Env::Helper, DependencyCaching
Defined in:
lib/gemstash/gem_source/private_source.rb

Overview

GemSource for privately stored gems.

Constant Summary

Constants included from DependencyCaching

DependencyCaching::API_REQUEST_LIMIT

Constants included from Logging

Logging::LEVELS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DependencyCaching

#serve_dependencies, #serve_dependencies_json

Methods inherited from Base

#initialize

Methods included from Logging

#log, #log_error, logger, reset, setup_logger

Constructor Details

This class inherits a constructor from Gemstash::GemSource::Base

Instance Attribute Details

#authObject

Returns the value of attribute auth.



11
12
13
# File 'lib/gemstash/gem_source/private_source.rb', line 11

def auth
  @auth
end

Class Method Details

.matches?(env) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
21
22
23
# 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_rewriterObject



13
14
15
# 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

Instance Method Details

#serve_actual_gem(id) ⇒ Object



68
69
70
# File 'lib/gemstash/gem_source/private_source.rb', line 68

def serve_actual_gem(id)
  halt 403, "Not yet supported"
end

#serve_add_gemObject



29
30
31
# File 'lib/gemstash/gem_source/private_source.rb', line 29

def serve_add_gem
  protected(Gemstash::GemPusher)
end

#serve_add_spec_jsonObject



37
38
39
# File 'lib/gemstash/gem_source/private_source.rb', line 37

def serve_add_spec_json
  halt 403, "Not yet supported"
end

#serve_gem(id) ⇒ Object



72
73
74
75
76
77
78
79
80
# 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) ⇒ Object



53
54
55
# File 'lib/gemstash/gem_source/private_source.rb', line 53

def serve_info(name)
  halt 403, "Not yet supported"
end

#serve_latest_specsObject



87
88
89
90
# File 'lib/gemstash/gem_source/private_source.rb', line 87

def serve_latest_specs
  params[:latest] = true
  protected(Gemstash::SpecsBuilder)
end

#serve_marshal(id) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# 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_namesObject



45
46
47
# File 'lib/gemstash/gem_source/private_source.rb', line 45

def serve_names
  halt 403, "Not yet supported"
end

#serve_prerelease_specsObject



92
93
94
95
# File 'lib/gemstash/gem_source/private_source.rb', line 92

def serve_prerelease_specs
  params[:prerelease] = true
  protected(Gemstash::SpecsBuilder)
end

#serve_remove_spec_jsonObject



41
42
43
# File 'lib/gemstash/gem_source/private_source.rb', line 41

def serve_remove_spec_json
  halt 403, "Not yet supported"
end

#serve_rootObject



25
26
27
# File 'lib/gemstash/gem_source/private_source.rb', line 25

def serve_root
  halt 403, "Not yet supported"
end

#serve_specsObject



82
83
84
85
# File 'lib/gemstash/gem_source/private_source.rb', line 82

def serve_specs
  params[:prerelease] = false
  protected(Gemstash::SpecsBuilder)
end

#serve_versionsObject



49
50
51
# File 'lib/gemstash/gem_source/private_source.rb', line 49

def serve_versions
  halt 404, "Not yet supported"
end

#serve_yankObject



33
34
35
# File 'lib/gemstash/gem_source/private_source.rb', line 33

def serve_yank
  protected(Gemstash::GemYanker)
end