package feed //go:generate stringer -linecomment -type=Severity import ( "encoding/json" "fmt" ) type Severity byte const ( SeverityNone Severity = iota // NONE SeverityLow // LOW SeverityMedium // MEDIUM SeverityHigh // HIGH SeverityCritical // CRITICAL ) // Unmarshal CVSS severity from JSON. func (me *Severity) UnmarshalJSON(b []byte) error { // decode string, check for error var s string if err := json.Unmarshal(b, &s); err != nil { return err } // check value switch s { case "NONE": *me = SeverityNone case "LOW": *me = SeverityLow case "MEDIUM": *me = SeverityMedium case "HIGH": *me = SeverityHigh case "CRITICAL": *me = SeverityCritical default: // return error return fmt.Errorf("unknown severity: %s", s) } // return success return nil } // Marshal CVSS severity as JSON. func (me Severity) MarshalJSON() ([]byte, error) { return json.Marshal(me.String()) }