-
Notifications
You must be signed in to change notification settings - Fork 1
/
dependencies.rb
46 lines (35 loc) · 1.53 KB
/
dependencies.rb
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
# frozen_string_literal: true
module API
class Dependencies < Grape::API::Instance
helpers do
def dependencies_by(params)
pipeline = ::Security::ReportFetchService.new(user_project, ::Ci::JobArtifact.dependency_list_reports).pipeline
return [] unless pipeline
::Security::DependencyListService.new(pipeline: pipeline, params: params).execute
end
end
before { authenticate! }
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
desc 'Get a list of project dependencies' do
success ::EE::API::Entities::Dependency
end
params do
optional :package_manager,
type: Array[String],
coerce_with: Validations::Types::CommaSeparatedToArray.coerce,
desc: "Returns dependencies belonging to specified package managers: #{::Security::DependencyListService::FILTER_PACKAGE_MANAGERS_VALUES.join(', ')}.",
values: ::Security::DependencyListService::FILTER_PACKAGE_MANAGERS_VALUES
end
get ':id/dependencies' do
authorize! :read_dependencies, user_project
track_event('view_dependencies')
dependency_params = declared_params(include_missing: false).merge(project: user_project)
dependencies = dependencies_by(dependency_params)
present dependencies, with: ::EE::API::Entities::Dependency, user: current_user, project: user_project
end
end
end
end