in ci/internal/mitre/client.go [128:153]
func (c *Client) GetState(ctx context.Context, cveID string) (State, error) {
resp, err := c.do(ctx, http.MethodGet, fmt.Sprintf("cve-id/%s", url.PathEscape(cveID)), nil)
if err != nil {
return StateUnknown, err
}
defer resp.Body.Close()
s := struct {
State string `json:"state"`
}{}
if err := json.NewDecoder(resp.Body).Decode(&s); err != nil {
return StateUnknown, fmt.Errorf("decoding response body: %w", err)
}
switch s.State {
case StateReserved.String():
return StateReserved, nil
case StatePublished.String():
return StatePublished, nil
case StateRejected.String():
return StateRejected, nil
default:
return StateUnknown, fmt.Errorf("unexpected cve state in response: %q", s.State)
}
}