summaryrefslogtreecommitdiff
path: root/data.go
diff options
context:
space:
mode:
authorStuart Clark <stuart.clark@Jahingo.com>2017-08-06 03:20:34 +0100
committerDave Henderson <dhenderson@gmail.com>2017-08-05 22:20:34 -0400
commit7a16088eeb7490977a41390ec93e9eeafa2eec8b (patch)
tree4fa21358ee0e4b6c7bc326fe7040d17157eae576 /data.go
parentbe871892fb11fcf13f882da9cfa074cafbcc7c39 (diff)
Vault write support (#183)
* Add write support for Vault to enable the use of dynamic secrets
Diffstat (limited to 'data.go')
-rw-r--r--data.go29
1 files changed, 27 insertions, 2 deletions
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
}