package cvss import ( "fmt" ) // CVSS metric vector. type Vector interface { // Get CVSS version. Version() Version // Get CVSS vector string. String() string // Return metrics in this vector. Metrics() []Metric // Unmarshal vector from JSON. // UnmarshalJSON(b []byte) error // Get base, temporal, and environment scores for vector. Scores() (Scores, error) } // Create new CVSS vector from vector string. func NewVector(s string) (Vector, error) { if isV31VectorString(s) { // create CVSS v3.1 vector. return newV31Vector(s) } else if isV30VectorString(s) { // create CVSS v3.0 vector. return newV30Vector(s) } else if isV2VectorString(s) { // create CVSS v2 vector. return newV2Vector(s) } else { return nil, fmt.Errorf("invalid CVSS vector: %s", s) } }