add sha1 interpolation

This commit is contained in:
Joseph Kordish 2015-12-27 16:28:56 -06:00 committed by Joseph Kordish
parent 88c3933356
commit e1b62c76ad
2 changed files with 29 additions and 0 deletions

View File

@ -2,7 +2,9 @@ package config
import (
"bytes"
"crypto/sha1"
"encoding/base64"
"encoding/hex"
"errors"
"fmt"
"io/ioutil"
@ -38,6 +40,7 @@ func init() {
"lower": interpolationFuncLower(),
"replace": interpolationFuncReplace(),
"split": interpolationFuncSplit(),
"sha1": interpolationFuncSha1(),
"base64encode": interpolationFuncBase64Encode(),
"base64decode": interpolationFuncBase64Decode(),
"upper": interpolationFuncUpper(),
@ -586,3 +589,17 @@ func interpolationFuncUpper() ast.Function {
},
}
}
func interpolationFuncSha1() ast.Function {
return ast.Function{
ArgTypes: []ast.Type{ast.TypeString},
ReturnType: ast.TypeString,
Callback: func(args []interface{}) (interface{}, error) {
s := args[0].(string)
h := sha1.New()
h.Write([]byte(s))
hash := hex.EncodeToString(h.Sum(nil))
return hash, nil
},
}
}

View File

@ -834,6 +834,18 @@ func TestInterpolateFuncUpper(t *testing.T) {
})
}
func TestInterpolateFuncSha1(t *testing.T) {
testFunction(t, testFunctionConfig{
Cases: []testFunctionCase{
{
`${sha1("test")}`,
"a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
false,
},
},
})
}
type testFunctionConfig struct {
Cases []testFunctionCase
Vars map[string]ast.Variable