github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/cloudformation/parser/parameter.go (about) 1 package parser 2 3 import ( 4 "strconv" 5 6 "github.com/khulnasoft-lab/defsec/pkg/scanners/cloudformation/cftypes" 7 8 "github.com/liamg/jfather" 9 "gopkg.in/yaml.v3" 10 ) 11 12 type Parameter struct { 13 inner parameterInner 14 } 15 16 type parameterInner struct { 17 Type string `yaml:"Type"` 18 Default interface{} `yaml:"Default"` 19 } 20 21 func (p *Parameter) UnmarshalYAML(node *yaml.Node) error { 22 return node.Decode(&p.inner) 23 } 24 25 func (p *Parameter) UnmarshalJSONWithMetadata(node jfather.Node) error { 26 return node.Decode(&p.inner) 27 } 28 29 func (p *Parameter) Type() cftypes.CfType { 30 switch p.inner.Type { 31 case "Boolean": 32 return cftypes.Bool 33 case "String": 34 return cftypes.String 35 case "Integer": 36 return cftypes.Int 37 default: 38 return cftypes.String 39 } 40 } 41 42 func (p *Parameter) Default() interface{} { 43 return p.inner.Default 44 } 45 46 func (p *Parameter) UpdateDefault(inVal interface{}) { 47 passedVal := inVal.(string) 48 49 switch p.inner.Type { 50 case "Boolean": 51 p.inner.Default, _ = strconv.ParseBool(passedVal) 52 case "String": 53 p.inner.Default = passedVal 54 case "Integer": 55 p.inner.Default, _ = strconv.Atoi(passedVal) 56 default: 57 p.inner.Default = passedVal 58 } 59 }