@@ -2,9 +2,40 @@ package dtrack
22
33import (
44 "context"
5+ "fmt"
56 "net/http"
7+
8+ "github.com/google/uuid"
9+ )
10+
11+ const (
12+ RepositoryTypeCargo = "CARGO"
13+ RepositoryTypeComposer = "COMPOSER"
14+ RepositoryTypeCpan = "CPAN"
15+ RepositoryTypeGem = "GEM"
16+ RepositoryTypeGoModules = "GO_MODULES"
17+ RepositoryTypeHex = "HEX"
18+ RepositoryTypeMaven = "MAVEN"
19+ RepositoryTypeNpm = "NPM"
20+ RepositoryTypeNuget = "NUGET"
21+ RepositoryTypePypi = "PYPI"
22+ RepositoryTypeUnsupported = "UNSUPPORTED"
623)
724
25+ type RepositoryType string
26+
27+ type Repository struct {
28+ Type RepositoryType `json:"type"`
29+ Identifier string `json:"identifier"`
30+ Url string `json:"url"`
31+ ResolutionOrder int `json:"resolutionOrder"`
32+ Enabled bool `json:"enabled"`
33+ Internal bool `json:"internal"`
34+ Username string `json:"username,omitempty"`
35+ Password string `json:"password,omitempty"`
36+ UUID uuid.UUID `json:"uuid,omitempty"`
37+ }
38+
839type RepositoryMetaComponent struct {
940 LatestVersion string `json:"latestVersion"`
1041}
@@ -26,3 +57,62 @@ func (rs RepositoryService) GetMetaComponent(ctx context.Context, purl string) (
2657 _ , err = rs .client .doRequest (req , & r )
2758 return
2859}
60+
61+ func (rs RepositoryService ) GetAll (ctx context.Context , po PageOptions ) (p Page [Repository ], err error ) {
62+ req , err := rs .client .newRequest (ctx , http .MethodGet , "/api/v1/repository" , withPageOptions (po ))
63+ if err != nil {
64+ return
65+ }
66+
67+ res , err := rs .client .doRequest (req , & p .Items )
68+ if err != nil {
69+ return
70+ }
71+
72+ p .TotalCount = res .TotalCount
73+ return
74+ }
75+
76+ func (rs RepositoryService ) GetByType (ctx context.Context , repoType RepositoryType , po PageOptions ) (p Page [Repository ], err error ) {
77+ req , err := rs .client .newRequest (ctx , http .MethodGet , fmt .Sprintf ("/api/v1/repository/%s" , repoType ), withPageOptions (po ))
78+ if err != nil {
79+ return
80+ }
81+
82+ res , err := rs .client .doRequest (req , & p .Items )
83+ if err != nil {
84+ return
85+ }
86+
87+ p .TotalCount = res .TotalCount
88+ return
89+ }
90+
91+ func (rs RepositoryService ) Create (ctx context.Context , repo Repository ) (r Repository , err error ) {
92+ req , err := rs .client .newRequest (ctx , http .MethodPut , "/api/v1/repository" , withBody (repo ))
93+ if err != nil {
94+ return
95+ }
96+
97+ _ , err = rs .client .doRequest (req , & r )
98+ return
99+ }
100+ func (rs RepositoryService ) Update (ctx context.Context , repo Repository ) (r Repository , err error ) {
101+ req , err := rs .client .newRequest (ctx , http .MethodPost , "/api/v1/repository" , withBody (repo ))
102+ if err != nil {
103+ return
104+ }
105+
106+ _ , err = rs .client .doRequest (req , & r )
107+ return
108+ }
109+
110+ func (rs RepositoryService ) Delete (ctx context.Context , reposUUID uuid.UUID ) (err error ) {
111+ req , err := rs .client .newRequest (ctx , http .MethodDelete , fmt .Sprintf ("/api/v1/repository/%s" , reposUUID .String ()))
112+ if err != nil {
113+ return
114+ }
115+
116+ _ , err = rs .client .doRequest (req , nil )
117+ return
118+ }
0 commit comments