50 lines
1.1 KiB
Ruby
50 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Display package repository index acording to PyPI
|
|
# Simple API: https://peps.python.org/pep-0503/
|
|
module Packages
|
|
module Pypi
|
|
class SimpleIndexPresenter < SimplePresenterBase
|
|
private
|
|
|
|
def links
|
|
refs = []
|
|
|
|
available_packages.each_batch do |batch|
|
|
batch.each do |package|
|
|
url = build_pypi_package_path(package)
|
|
|
|
refs << package_link(url, package.pypi_metadatum.required_python, package.name)
|
|
end
|
|
end
|
|
|
|
refs.join
|
|
end
|
|
|
|
def build_pypi_package_path(package)
|
|
params = {
|
|
id: @project_or_group.id,
|
|
package_name: package.normalized_pypi_name
|
|
}
|
|
|
|
if project?
|
|
expose_url(
|
|
api_v4_projects_packages_pypi_simple_package_name_path(
|
|
params, true
|
|
)
|
|
)
|
|
elsif group?
|
|
expose_url(
|
|
api_v4_groups___packages_pypi_simple_package_name_path(
|
|
params, true
|
|
)
|
|
)
|
|
end
|
|
end
|
|
|
|
def body_name
|
|
@project_or_group.name
|
|
end
|
|
end
|
|
end
|
|
end
|