1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# frozen_string_literal: true
module Packages
module Nuget
class ServiceIndexPresenter
include API::Helpers::RelatedResourcesHelpers
SERVICE_VERSIONS = {
download: %w[PackageBaseAddress/3.0.0],
search: %w[SearchQueryService SearchQueryService/3.0.0-beta SearchQueryService/3.0.0-rc],
publish: %w[PackagePublish/2.0.0],
metadata: %w[RegistrationsBaseUrl RegistrationsBaseUrl/3.0.0-beta RegistrationsBaseUrl/3.0.0-rc]
}.freeze
SERVICE_COMMENTS = {
download: 'Get package content (.nupkg).',
search: 'Filter and search for packages by keyword.',
publish: 'Push and delete (or unlist) packages.',
metadata: 'Get package metadata.'
}.freeze
VERSION = '3.0.0'.freeze
def initialize(project)
@project = project
end
def version
VERSION
end
def resources
[
build_service(:download),
build_service(:search),
build_service(:publish),
build_service(:metadata)
].flatten
end
private
def build_service(service_type)
url = build_service_url(service_type)
comment = SERVICE_COMMENTS[service_type]
SERVICE_VERSIONS[service_type].map do |version|
{ :@id => url, :@type => version, :comment => comment }
end
end
def build_service_url(service_type)
base_path = api_v4_projects_packages_nuget_path(id: @project.id)
full_path = case service_type
when :download
api_v4_projects_packages_nuget_download_package_name_package_version_package_filename_path(
{
id: @project.id,
package_name: nil,
package_version: nil,
package_filename: nil
},
true
)
when :search
"#{base_path}/query"
when :metadata
api_v4_projects_packages_nuget_metadata_package_name_package_version_path(
{
id: @project.id,
package_name: nil,
package_version: nil
},
true
)
when :publish
base_path
end
expose_url(full_path)
end
end
end
end
|