Additional HTTP Headers (#67)
* Allow Additional HTTP Headers
* Add AdditionalHeader Tests
* Use http.Header as AdditionalHeader type
diff --git a/whisk/client.go b/whisk/client.go
index d4e8afc..7b4862f 100644
--- a/whisk/client.go
+++ b/whisk/client.go
@@ -74,18 +74,19 @@
}
type Config struct {
- Namespace string // NOTE :: Default is "_"
- Cert string
- Key string
- AuthToken string
- Host string
- BaseURL *url.URL // NOTE :: Default is "openwhisk.ng.bluemix.net"
- Version string
- Verbose bool
- Debug bool // For detailed tracing
- Insecure bool
- UserAgent string
- ApigwAccessToken string
+ Namespace string // NOTE :: Default is "_"
+ Cert string
+ Key string
+ AuthToken string
+ Host string
+ BaseURL *url.URL // NOTE :: Default is "openwhisk.ng.bluemix.net"
+ Version string
+ Verbose bool
+ Debug bool // For detailed tracing
+ Insecure bool
+ UserAgent string
+ ApigwAccessToken string
+ AdditionalHeaders http.Header
}
type ObfuscateSet struct {
@@ -283,6 +284,10 @@
req.Header.Add("User-Agent", c.Config.UserAgent)
+ for key := range c.Config.AdditionalHeaders {
+ req.Header.Add(key, c.Config.AdditionalHeaders.Get(key))
+ }
+
return req, nil
}
@@ -778,5 +783,9 @@
req.Header.Add("User-Agent", c.Config.UserAgent)
+ for key := range c.Config.AdditionalHeaders {
+ req.Header.Add(key, c.Config.AdditionalHeaders.Get(key))
+ }
+
return req, nil
}
diff --git a/whisk/client_test.go b/whisk/client_test.go
index 1752b40..ec27b63 100644
--- a/whisk/client_test.go
+++ b/whisk/client_test.go
@@ -140,3 +140,31 @@
assert.Contains(t, err.Error(), proxyhost, "Setting HTTPS_PROXY to '"+proxyhost+"' did not cause the CLI to use that proxy URL.")
}
}
+
+func TestAdditionalHeaders(t *testing.T) {
+ config := GetValidConfigTest()
+ config.AdditionalHeaders = make(map[string][]string)
+ config.AdditionalHeaders.Add("Key1", "Value1")
+ config.AdditionalHeaders.Add("Key2", "Value2")
+
+ client, _ := NewClient(nil, config)
+ assert.NotNil(t, client)
+
+ newRequest, newRequestErr := client.NewRequest("GET", config.BaseURL.String(), nil, false)
+ assert.Nil(t, newRequestErr, "NewRequest for proxy test failed.")
+ if newRequestErr != nil {
+ fmt.Printf("NewRequest() error: %s\n", newRequestErr.Error())
+ }
+
+ assert.Equal(t, "Value1", newRequest.Header.Get("Key1"))
+ assert.Equal(t, "Value2", newRequest.Header.Get("Key2"))
+
+ newRequestUrl, newRequestUrlErr := client.NewRequestUrl("GET", config.BaseURL, nil, false, false, "", false)
+ assert.Nil(t, newRequestUrlErr, "NewRequest for proxy test failed.")
+ if newRequestUrlErr != nil {
+ fmt.Printf("NewRequest() error: %s\n", newRequestUrlErr.Error())
+ }
+
+ assert.Equal(t, "Value1", newRequestUrl.Header.Get("Key1"))
+ assert.Equal(t, "Value2", newRequestUrl.Header.Get("Key2"))
+}