...

Source file src/github.com/growthbook/growthbook-golang/meta.go

Documentation: github.com/growthbook/growthbook-golang

     1  package growthbook
     2  
     3  // VariationMeta represents meta-information that can be passed
     4  // through to tracking callbacks.
     5  type VariationMeta struct {
     6  	Passthrough bool
     7  	Key         string
     8  	Name        string
     9  }
    10  
    11  func jsonVariationMeta(v interface{}, typeName string, fieldName string) *VariationMeta {
    12  	obj, ok := v.(map[string]interface{})
    13  	if !ok {
    14  		logError("Invalid JSON data type", typeName, fieldName)
    15  		return nil
    16  	}
    17  
    18  	passthrough := false
    19  	key := ""
    20  	name := ""
    21  	vPassthrough, ptOk := obj["passthrough"]
    22  	if ptOk {
    23  		tmp, ok := vPassthrough.(bool)
    24  		if !ok {
    25  			logError("Invalid JSON data type", typeName, fieldName)
    26  			return nil
    27  		}
    28  		passthrough = tmp
    29  	}
    30  	vKey, keyOk := obj["key"]
    31  	if keyOk {
    32  		tmp, ok := vKey.(string)
    33  		if !ok {
    34  			logError("Invalid JSON data type", typeName, fieldName)
    35  			return nil
    36  		}
    37  		key = tmp
    38  	}
    39  	vName, nameOk := obj["name"]
    40  	if nameOk {
    41  		tmp, ok := vName.(string)
    42  		if !ok {
    43  			logError("Invalid JSON data type", typeName, fieldName)
    44  			return nil
    45  		}
    46  		name = tmp
    47  	}
    48  
    49  	return &VariationMeta{passthrough, key, name}
    50  }
    51  
    52  func jsonVariationMetaArray(v interface{}, typeName string, fieldName string) ([]VariationMeta, bool) {
    53  	vals, ok := v.([]interface{})
    54  	if !ok {
    55  		logError("Invalid JSON data type", typeName, fieldName)
    56  		return nil, false
    57  	}
    58  	metas := make([]VariationMeta, len(vals))
    59  	for i := range vals {
    60  		tmp := jsonVariationMeta(vals[i], typeName, fieldName)
    61  		if tmp == nil {
    62  			return nil, false
    63  		}
    64  		metas[i] = *tmp
    65  	}
    66  	return metas, true
    67  }
    68  

View as plain text