-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathcomponent_controller.go
More file actions
104 lines (86 loc) · 2.6 KB
/
component_controller.go
File metadata and controls
104 lines (86 loc) · 2.6 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package component
import (
"github.com/l3montree-dev/devguard/internal/core"
)
type httpController struct {
componentRepository core.ComponentRepository
assetVersionRepository core.AssetVersionRepository
licenseRiskRepository core.LicenseRiskRepository
}
func NewHTTPController(componentRepository core.ComponentRepository, assetVersionRepository core.AssetVersionRepository, licenseOverwriteRepository core.LicenseRiskRepository) *httpController {
return &httpController{
componentRepository: componentRepository,
assetVersionRepository: assetVersionRepository,
licenseRiskRepository: licenseOverwriteRepository,
}
}
type licenseResponse struct {
License license `json:"license"`
Count int `json:"count"`
}
func (httpController httpController) LicenseDistribution(ctx core.Context) error {
asset := core.GetAsset(ctx)
assetVersion, err := core.MaybeGetAssetVersion(ctx)
if err != nil {
// we need to get the default asset version
assetVersion, err = httpController.assetVersionRepository.GetDefaultAssetVersion(asset.ID)
if err != nil {
return ctx.JSON(404, nil)
}
}
scannerID := ctx.QueryParam("scannerID")
licenses, err := httpController.componentRepository.GetLicenseDistribution(nil,
assetVersion.Name,
assetVersion.AssetID,
scannerID,
)
var res = make([]licenseResponse, 0, len(licenses))
for id, count := range licenses {
// get the license from the license repository
l, ok := licenseMap[id]
if !ok {
l = license{
LicenseID: id,
Name: id,
}
}
res = append(res, licenseResponse{
License: l,
Count: count,
})
}
if err != nil {
return err
}
return ctx.JSON(200, res)
}
func (httpController httpController) ListPaged(ctx core.Context) error {
assetVersion := core.GetAssetVersion(ctx)
scannerID := ctx.QueryParam("scannerID")
pageInfo := core.GetPageInfo(ctx)
filter := core.GetFilterQuery(ctx)
search := ctx.QueryParam("search")
sort := core.GetSortQuery(ctx)
overwrittenLicense, err := httpController.licenseRiskRepository.GetAllOverwrittenLicensesForAssetVersion(assetVersion.AssetID, assetVersion.Name)
if err != nil {
return err
}
components, err := httpController.componentRepository.LoadComponentsWithProject(nil,
overwrittenLicense,
assetVersion.Name,
assetVersion.AssetID,
scannerID,
pageInfo,
search,
filter,
sort,
)
if err != nil {
return err
}
var componentsDTO = make([]componentDTO, 0, len(components.Data))
for _, component := range components.Data {
componentsDTO = append(componentsDTO, toDTO(component))
}
return ctx.JSON(200, core.NewPaged(pageInfo, components.Total, componentsDTO))
}