add support for POST method in CloudMonkey
diff --git a/cmd/network.go b/cmd/network.go
index a3fb9e3..ff306c1 100644
--- a/cmd/network.go
+++ b/cmd/network.go
@@ -227,13 +227,22 @@
requestURL := fmt.Sprintf("%s?%s", r.Config.ActiveProfile.URL, encodedParams)
config.Debug("NewAPIRequest API request URL:", requestURL)
- response, err := r.Client().Get(requestURL)
- if err != nil {
- return nil, err
+ var response *http.Response
+ if params.Has("password") || params.Has("userdata") {
+ requestURL = fmt.Sprintf("%s", r.Config.ActiveProfile.URL)
+ response, err = r.Client().PostForm(requestURL, params)
+ if err != nil {
+ return nil, err
+ }
+ } else {
+ response, err = r.Client().Get(requestURL)
+ if err != nil {
+ return nil, err
+ }
}
config.Debug("NewAPIRequest response status code:", response.StatusCode)
- if response != nil && response.StatusCode == http.StatusUnauthorized {
+ if response.StatusCode == http.StatusUnauthorized {
r.Client().Jar, _ = cookiejar.New(nil)
sessionKey, err := Login(r)
if err != nil {
@@ -243,9 +252,18 @@
params.Add("sessionkey", sessionKey)
requestURL = fmt.Sprintf("%s?%s", r.Config.ActiveProfile.URL, encodeRequestParams(params))
config.Debug("NewAPIRequest API request URL:", requestURL)
- response, err = r.Client().Get(requestURL)
- if err != nil {
- return nil, err
+
+ if params.Has("password") || params.Has("userdata") {
+ requestURL = fmt.Sprintf("%s", r.Config.ActiveProfile.URL)
+ response, err = r.Client().PostForm(requestURL, params)
+ if err != nil {
+ return nil, err
+ }
+ } else {
+ response, err = r.Client().Get(requestURL)
+ if err != nil {
+ return nil, err
+ }
}
}