|
4 | 4 | "context"
|
5 | 5 | "fmt"
|
6 | 6 | "net/http"
|
| 7 | + "net/url" |
7 | 8 |
|
8 | 9 | "github.com/google/uuid"
|
9 | 10 | )
|
@@ -97,6 +98,48 @@ func (bs BOMService) Upload(ctx context.Context, uploadReq BOMUploadRequest) (to
|
97 | 98 | return
|
98 | 99 | }
|
99 | 100 |
|
| 101 | +func (bs BOMService) PostBom(ctx context.Context, uploadReq BOMUploadRequest) (token BOMUploadToken, err error) { |
| 102 | + params := make(url.Values) |
| 103 | + if uploadReq.ProjectUUID != nil { |
| 104 | + params["project"] = append(params["project"], uploadReq.ProjectUUID.String()) |
| 105 | + } |
| 106 | + if uploadReq.AutoCreate { |
| 107 | + params["autoCreate"] = append(params["autoCreate"], "true") |
| 108 | + } |
| 109 | + if uploadReq.ProjectName != "" { |
| 110 | + params["projectName"] = append(params["projectName"], uploadReq.ProjectName) |
| 111 | + } |
| 112 | + if uploadReq.ProjectVersion != "" { |
| 113 | + params["projectVersion"] = append(params["projectVersion"], uploadReq.ProjectVersion) |
| 114 | + } |
| 115 | + if uploadReq.ParentUUID != nil { |
| 116 | + params["parentUUID"] = append(params["parentUUID"], uploadReq.ParentUUID.String()) |
| 117 | + } |
| 118 | + if uploadReq.ParentName != "" { |
| 119 | + params["parentName"] = append(params["parentName"], uploadReq.ParentName) |
| 120 | + } |
| 121 | + if uploadReq.ParentVersion != "" { |
| 122 | + params["parentVersion"] = append(params["parentVersion"], uploadReq.ParentVersion) |
| 123 | + } |
| 124 | + if uploadReq.BOM != "" { |
| 125 | + params["bom"] = append(params["bom"], uploadReq.BOM) |
| 126 | + } |
| 127 | + |
| 128 | + req, err := bs.client.newRequest(ctx, http.MethodPost, "/api/v1/bom", withMultiPart(params)) |
| 129 | + if err != nil { |
| 130 | + return |
| 131 | + } |
| 132 | + |
| 133 | + var uploadRes bomUploadResponse |
| 134 | + _, err = bs.client.doRequest(req, &uploadRes) |
| 135 | + if err != nil { |
| 136 | + return |
| 137 | + } |
| 138 | + |
| 139 | + token = uploadRes.Token |
| 140 | + return |
| 141 | +} |
| 142 | + |
100 | 143 | type bomProcessingResponse struct {
|
101 | 144 | Processing bool `json:"processing"`
|
102 | 145 | }
|
|
0 commit comments