aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/hashicorp/vault/api/request.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/vault/api/request.go')
-rw-r--r--vendor/github.com/hashicorp/vault/api/request.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/vault/api/request.go b/vendor/github.com/hashicorp/vault/api/request.go
new file mode 100644
index 0000000..8f22dd5
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/api/request.go
@@ -0,0 +1,71 @@
+package api
+
+import (
+ "bytes"
+ "encoding/json"
+ "io"
+ "net/http"
+ "net/url"
+)
+
+// Request is a raw request configuration structure used to initiate
+// API requests to the Vault server.
+type Request struct {
+ Method string
+ URL *url.URL
+ Params url.Values
+ ClientToken string
+ WrapTTL string
+ Obj interface{}
+ Body io.Reader
+ BodySize int64
+}
+
+// SetJSONBody is used to set a request body that is a JSON-encoded value.
+func (r *Request) SetJSONBody(val interface{}) error {
+ buf := bytes.NewBuffer(nil)
+ enc := json.NewEncoder(buf)
+ if err := enc.Encode(val); err != nil {
+ return err
+ }
+
+ r.Obj = val
+ r.Body = buf
+ r.BodySize = int64(buf.Len())
+ return nil
+}
+
+// ResetJSONBody is used to reset the body for a redirect
+func (r *Request) ResetJSONBody() error {
+ if r.Body == nil {
+ return nil
+ }
+ return r.SetJSONBody(r.Obj)
+}
+
+// ToHTTP turns this request into a valid *http.Request for use with the
+// net/http package.
+func (r *Request) ToHTTP() (*http.Request, error) {
+ // Encode the query parameters
+ r.URL.RawQuery = r.Params.Encode()
+
+ // Create the HTTP request
+ req, err := http.NewRequest(r.Method, r.URL.RequestURI(), r.Body)
+ if err != nil {
+ return nil, err
+ }
+
+ req.URL.Scheme = r.URL.Scheme
+ req.URL.Host = r.URL.Host
+ req.Host = r.URL.Host
+
+ if len(r.ClientToken) != 0 {
+ req.Header.Set("X-Vault-Token", r.ClientToken)
+ }
+
+ if len(r.WrapTTL) != 0 {
+ req.Header.Set("X-Vault-Wrap-TTL", r.WrapTTL)
+ }
+
+ return req, nil
+}