func()

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)
	}
}