coder/codersdk/jfrog.go

51 lines
1.3 KiB
Go

package codersdk
import (
"context"
"encoding/json"
"net/http"
"github.com/google/uuid"
"golang.org/x/xerrors"
)
type JFrogXrayScan struct {
WorkspaceID uuid.UUID `json:"workspace_id" format:"uuid"`
AgentID uuid.UUID `json:"agent_id" format:"uuid"`
Critical int `json:"critical"`
High int `json:"high"`
Medium int `json:"medium"`
ResultsURL string `json:"results_url"`
}
func (c *Client) PostJFrogXrayScan(ctx context.Context, req JFrogXrayScan) error {
res, err := c.Request(ctx, http.MethodPost, "/api/v2/integrations/jfrog/xray-scan", req)
if err != nil {
return xerrors.Errorf("make request: %w", err)
}
defer res.Body.Close()
if res.StatusCode != http.StatusCreated {
return ReadBodyAsError(res)
}
return nil
}
func (c *Client) JFrogXRayScan(ctx context.Context, workspaceID, agentID uuid.UUID) (JFrogXrayScan, error) {
res, err := c.Request(ctx, http.MethodGet, "/api/v2/integrations/jfrog/xray-scan", nil,
WithQueryParam("workspace_id", workspaceID.String()),
WithQueryParam("agent_id", agentID.String()),
)
if err != nil {
return JFrogXrayScan{}, xerrors.Errorf("make request: %w", err)
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
return JFrogXrayScan{}, ReadBodyAsError(res)
}
var resp JFrogXrayScan
return resp, json.NewDecoder(res.Body).Decode(&resp)
}