Class: Paquette::NpmServer::GatedNpmRepository
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- Paquette::NpmServer::GatedNpmRepository
- Defined in:
- lib/paquette/npm_server/gated_npm_repository.rb
Instance Method Summary collapse
-
#initialize(repository, &entitler) ⇒ GatedNpmRepository
constructor
A new instance of GatedNpmRepository.
- #package_exists?(package_name, version) ⇒ Boolean
- #package_file_path(package_name, version) ⇒ Object
- #package_metadata(package_name) ⇒ Object
- #package_names ⇒ Object
- #package_versions ⇒ Object
- #versions_for_package(package_name) ⇒ Object
Constructor Details
#initialize(repository, &entitler) ⇒ GatedNpmRepository
Returns a new instance of GatedNpmRepository.
6 7 8 9 |
# File 'lib/paquette/npm_server/gated_npm_repository.rb', line 6 def initialize(repository, &entitler) super(repository) @entitler = entitler end |
Instance Method Details
#package_exists?(package_name, version) ⇒ Boolean
59 60 61 62 63 |
# File 'lib/paquette/npm_server/gated_npm_repository.rb', line 59 def package_exists?(package_name, version) if @entitler.call(name: package_name, version: version) super end end |
#package_file_path(package_name, version) ⇒ Object
28 29 30 31 32 |
# File 'lib/paquette/npm_server/gated_npm_repository.rb', line 28 def package_file_path(package_name, version) if @entitler.call(name: package_name, version: version) super end end |
#package_metadata(package_name) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/paquette/npm_server/gated_npm_repository.rb', line 34 def (package_name) return nil unless @entitler.call(name: package_name) # Get the metadata from the underlying repository, but filter by entitled versions = super return unless # Filter versions based on entitlements entitled_versions = versions_for_package(package_name) # Update the versions hash to only include entitled versions [:versions] = [:versions].slice(*entitled_versions) # Update time entries to only include entitled versions [:time] = [:time].slice(*entitled_versions) # Update dist-tags to use the latest entitled version if entitled_versions.any? latest_entitled = entitled_versions.max_by { |v| Gem::Version.new(v) } [:"dist-tags"][:latest] = latest_entitled end end |
#package_names ⇒ Object
11 12 13 |
# File 'lib/paquette/npm_server/gated_npm_repository.rb', line 11 def package_names super.select { |name| @entitler.call(name: name) } end |
#package_versions ⇒ Object
15 16 17 18 19 |
# File 'lib/paquette/npm_server/gated_npm_repository.rb', line 15 def package_versions super.select do |package_name, version| @entitler.call(name: package_name, version: version) end end |
#versions_for_package(package_name) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/paquette/npm_server/gated_npm_repository.rb', line 21 def versions_for_package(package_name) return [] unless @entitler.call(name: package_name) super.select do |version| @entitler.call(name: package_name, version: version) end end |