github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/types/int.go (about) 1 package types 2 3 import ( 4 "encoding/json" 5 ) 6 7 type IntValue struct { 8 BaseAttribute 9 value int 10 } 11 12 func (b IntValue) MarshalJSON() ([]byte, error) { 13 return json.Marshal(map[string]interface{}{ 14 "value": b.value, 15 "metadata": b.metadata, 16 }) 17 } 18 19 func (b *IntValue) UnmarshalJSON(data []byte) error { 20 var keys map[string]interface{} 21 if err := json.Unmarshal(data, &keys); err != nil { 22 return err 23 } 24 if keys["value"] != nil { 25 b.value = int(keys["value"].(float64)) 26 } 27 if keys["metadata"] != nil { 28 raw, err := json.Marshal(keys["metadata"]) 29 if err != nil { 30 return err 31 } 32 var m Metadata 33 if err := json.Unmarshal(raw, &m); err != nil { 34 return err 35 } 36 b.metadata = m 37 } 38 return nil 39 } 40 41 func Int(value int, m Metadata) IntValue { 42 return IntValue{ 43 value: value, 44 BaseAttribute: BaseAttribute{metadata: m}, 45 } 46 } 47 48 func IntFromInt32(value int32, m Metadata) IntValue { 49 return Int(int(value), m) 50 } 51 52 func IntDefault(value int, m Metadata) IntValue { 53 b := Int(value, m) 54 b.BaseAttribute.metadata.isDefault = true 55 return b 56 } 57 58 func IntUnresolvable(m Metadata) IntValue { 59 b := Int(0, m) 60 b.BaseAttribute.metadata.isUnresolvable = true 61 return b 62 } 63 64 func IntExplicit(value int, m Metadata) IntValue { 65 b := Int(value, m) 66 b.BaseAttribute.metadata.isExplicit = true 67 return b 68 } 69 70 func (b IntValue) GetMetadata() Metadata { 71 return b.metadata 72 } 73 74 func (b IntValue) Value() int { 75 return b.value 76 } 77 78 func (b IntValue) GetRawValue() interface{} { 79 return b.value 80 } 81 82 func (b IntValue) NotEqualTo(i int) bool { 83 if b.metadata.isUnresolvable { 84 return false 85 } 86 return b.value != i 87 } 88 89 func (b IntValue) EqualTo(i int) bool { 90 if b.metadata.isUnresolvable { 91 return false 92 } 93 return b.value == i 94 } 95 96 func (b IntValue) LessThan(i int) bool { 97 if b.metadata.isUnresolvable { 98 return false 99 } 100 return b.value < i 101 } 102 103 func (b IntValue) GreaterThan(i int) bool { 104 if b.metadata.isUnresolvable { 105 return false 106 } 107 return b.value > i 108 } 109 110 func (s IntValue) ToRego() interface{} { 111 m := s.metadata.ToRego().(map[string]interface{}) 112 m["value"] = s.Value() 113 return m 114 }