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  }