package feed //go:generate stringer -linecomment -type=V3AttackVector import ( "encoding/json" "fmt" ) // CVSS v3 attack vector. type V3AttackVector byte const ( V3AVAdjacentNetwork V3AttackVector = iota // ADJACENT_NETWORK V3AVNetwork // NETWORK V3AVLocal // LOCAL V3AVPhysical // PHYSICAL ) // Unmarshal CVSS v3 attack vector from JSON. func (me *V3AttackVector) 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 "ADJACENT_NETWORK": *me = V3AVAdjacentNetwork case "LOCAL": *me = V3AVLocal case "NETWORK": *me = V3AVNetwork case "PHYSICAL": *me = V3AVPhysical default: // return error return fmt.Errorf("unknown CVSS v3 attack vector: %s", s) } // return success return nil }