From 7a16088eeb7490977a41390ec93e9eeafa2eec8b Mon Sep 17 00:00:00 2001 From: Stuart Clark Date: Sun, 6 Aug 2017 03:20:34 +0100 Subject: Vault write support (#183) * Add write support for Vault to enable the use of dynamic secrets --- data.go | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'data.go') diff --git a/data.go b/data.go index 6ecb5e53..7f41d2ec 100644 --- a/data.go +++ b/data.go @@ -321,12 +321,37 @@ func readVault(source *Source, args ...string) ([]byte, error) { addCleanupHook(source.VC.Logout) } + params := make(map[string]interface{}) + p := source.URL.Path + + for key, val := range source.URL.Query() { + params[key] = strings.Join(val, " ") + } + if len(args) == 1 { - p = p + "/" + args[0] + parsed, err := url.Parse(args[0]) + if err != nil { + return nil, err + } + + if parsed.Path != "" { + p = p + "/" + parsed.Path + } + + for key, val := range parsed.Query() { + params[key] = strings.Join(val, " ") + } } - data, err := source.VC.Read(p) + var data []byte + var err error + + if len(params) > 0 { + data, err = source.VC.Write(p, params) + } else { + data, err = source.VC.Read(p) + } if err != nil { return nil, err } -- cgit v1.2.3