51 lines
1.1 KiB
Ruby
51 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
|