github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/functions/contains.go (about)

     1  package functions
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  func Contains(args ...interface{}) interface{} {
     9  
    10  	if len(args) != 2 {
    11  		return false
    12  	}
    13  
    14  	container := args[0]
    15  	itemToFind := args[1]
    16  
    17  	switch cType := container.(type) {
    18  	case string:
    19  		switch iType := itemToFind.(type) {
    20  		case string:
    21  			return strings.Contains(strings.ToLower(cType), strings.ToLower(iType))
    22  		case int, int32, int64, uint, uint32, uint64:
    23  			return strings.Contains(strings.ToLower(cType), fmt.Sprintf("%d", iType))
    24  		}
    25  	case []interface{}:
    26  		for _, item := range cType {
    27  			if item == itemToFind {
    28  				return true
    29  			}
    30  		}
    31  	case map[string]interface{}:
    32  		for key := range cType {
    33  			if key == itemToFind {
    34  				return true
    35  			}
    36  		}
    37  	}
    38  
    39  	return false
    40  }