go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/core/resources/uuid.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package resources 5 6 import ( 7 "errors" 8 9 "github.com/google/uuid" 10 "go.mondoo.com/cnquery/llx" 11 "go.mondoo.com/cnquery/providers-sdk/v1/plugin" 12 ) 13 14 func (u *mqlUuid) id() (string, error) { 15 return "uuid:" + u.Value.Data, nil 16 } 17 18 func initUuid(runtime *plugin.Runtime, args map[string]*llx.RawData) (map[string]*llx.RawData, plugin.Resource, error) { 19 if x, ok := args["value"]; ok { 20 value, ok := x.Value.(string) 21 if !ok { 22 return nil, nil, errors.New("wrong type for 'value' in uuid initialization, it must be a string") 23 } 24 25 // ensure the value is a proper uuid 26 u, err := uuid.Parse(value) 27 if err != nil { 28 return nil, nil, errors.New("invalid uuid: " + value) 29 } 30 31 args["value"] = llx.StringData(u.String()) 32 } 33 34 return args, nil, nil 35 } 36 37 func (u *mqlUuid) parse() error { 38 x, err := uuid.Parse(u.Value.Data) 39 if err != nil { 40 u.Urn = plugin.TValue[string]{Error: err, State: plugin.StateIsSet} 41 u.Version = plugin.TValue[int64]{Error: err, State: plugin.StateIsSet} 42 u.Variant = plugin.TValue[string]{Error: err, State: plugin.StateIsSet} 43 return err 44 } 45 46 u.Urn = plugin.TValue[string]{Data: x.URN(), State: plugin.StateIsSet} 47 u.Version = plugin.TValue[int64]{Data: int64(x.Version()), State: plugin.StateIsSet} 48 u.Variant = plugin.TValue[string]{Data: x.Variant().String(), State: plugin.StateIsSet} 49 return nil 50 } 51 52 func (u *mqlUuid) urn() (string, error) { 53 return "", u.parse() 54 } 55 56 func (u *mqlUuid) version() (int64, error) { 57 return 0, u.parse() 58 } 59 60 func (u *mqlUuid) variant() (string, error) { 61 return "", u.parse() 62 }