To support SSL mode in CLI
[ealt-edge.git] / ocd / cli / ealt / cmd / adapter / httphelper.go
index 9f91079..b693143 100644 (file)
@@ -19,6 +19,7 @@ package adapter
 import (
        "bytes"
        "ealt/cmd/common"
+       "encoding/json"
        "fmt"
        "io"
        "io/ioutil"
@@ -32,38 +33,65 @@ import (
 var MECMClusterIP = os.Getenv("MECMClusterIP")
 var APPLCMPort = os.Getenv("MECMClusterPort")
 var ONBOARDPACKAGEPATH = os.Getenv("ONBOARDPACKAGEPATH")
-var client = http.Client{}
+var sslmode = os.Getenv("EALTSSLMode")
 
 func httpEndPointBuider(uri string) string {
+       localURI := strings.TrimSpace(MECMClusterIP) + ":" + strings.TrimSpace(APPLCMPort) + uri
+       if sslmode == "1" {
+               return "https://" + localURI
+       }
+       return "http://" + localURI
+}
 
-       return "http://" + strings.TrimSpace(MECMClusterIP) + ":" + strings.TrimSpace(APPLCMPort) + uri
+//Function to build the Get Requests for Application Package
+//Management and Application Life Cycle Management.
+func HttpGetRequestBuilder(uri string, body []byte) {
 
+       uri = httpEndPointBuider(uri)
+       fmt.Println("Request URL :\t" + uri)
+       request, err := http.NewRequest(http.MethodGet, uri, bytes.NewBuffer(body))
+       request.Header.Set(common.ContentType, common.ApplicationJson)
+       if err != nil {
+               log.Fatalln(err)
+       }
+       client := GetHttpClient()
+       response, err := client.Do(request)
+       if err != nil {
+               log.Fatalln(err)
+       }
+       defer response.Body.Close()
+
+       output, err := ioutil.ReadAll(response.Body)
+
+       if err != nil {
+               log.Fatalln(err)
+       }
+       fmt.Println("Response Data: \n" + string(output))
 }
 
+//HTTP DELETE Message Builder
 func HttpDeleteRequestBuilder(uri string, body []byte) {
 
        uri = httpEndPointBuider(uri)
        fmt.Println("Request URL :\t" + uri)
        request, err := http.NewRequest(http.MethodDelete, uri, bytes.NewBuffer(body))
-       request.Header.Set("Content-Type", "application/json")
+       request.Header.Set(common.ContentType, common.ApplicationJson)
 
        if err != nil {
                log.Fatalln(err)
        }
+       client := GetHttpClient()
        response, err := client.Do(request)
        if err != nil {
                log.Fatalln(err)
        }
        defer response.Body.Close()
-
        output, err := ioutil.ReadAll(response.Body)
 
        if err != nil {
                log.Fatalln(err)
        }
-
        fmt.Println("Response Data: \n" + string(output))
-
 }
 
 func HttpPostRequestBuilder(uri string, body []byte) error {
@@ -72,13 +100,12 @@ func HttpPostRequestBuilder(uri string, body []byte) error {
        fmt.Println("Request URL :\t" + uri)
        fmt.Println("Request Body :\t" + string(body) + "\n")
        request, err := http.NewRequest(http.MethodPost, uri, bytes.NewBuffer(body))
-       request.Header.Set("Content-Type", "application/json")
-
-       //fmt.Println(request)
+       request.Header.Set(common.ContentType, common.ApplicationJson)
 
        if err != nil {
                log.Fatalln(err)
        }
+       client := GetHttpClient()
        response, err := client.Do(request)
        if err != nil {
                log.Fatalln(err)
@@ -101,11 +128,11 @@ func HttpMultiPartPostRequestBuilder(uri string, body []byte, file string) error
        fmt.Println("File Path :" + filepath)
        uri = httpEndPointBuider(uri)
        fmt.Println("Request URL :\t" + uri)
-       request, err := fileUploadRequest(uri, "file", filepath)
+       request, err := fileUploadRequest(uri, "file", filepath, file)
        if err != nil {
                log.Fatalln(err)
        }
-
+       client := GetHttpClient()
        response, err := client.Do(request)
        if err != nil {
                log.Fatalln(err)
@@ -116,15 +143,15 @@ func HttpMultiPartPostRequestBuilder(uri string, body []byte, file string) error
                        log.Fatal(err)
                }
                response.Body.Close()
-               fmt.Println(response.StatusCode)
-               fmt.Println(response.Header)
 
-               // fmt.Println(body)
-               // var result map[string]interface{}
-               // json.NewDecoder(response.Body).Decode(&result)
-               // fmt.Println(result)
-       }
+               fmt.Println("Response Body:")
+
+               fmt.Println(body)
+               var result map[string]interface{}
+               json.NewDecoder(response.Body).Decode(&result)
 
+               fmt.Println("ID has to be send in Create Application Instance Request")
+       }
        return nil
 }
 
@@ -133,7 +160,7 @@ func getFilePathWithName(file string) string {
        return ONBOARDPACKAGEPATH + common.PATHSLASH + file
 }
 
-func fileUploadRequest(uri string, paramName, filepath string) (*http.Request, error) {
+func fileUploadRequest(uri string, paramName, filepath, filename string) (*http.Request, error) {
 
        file, err := os.Open(filepath)
        if err != nil {
@@ -144,10 +171,11 @@ func fileUploadRequest(uri string, paramName, filepath string) (*http.Request, e
        defer file.Close()
 
        //Buffer to store the request body as bytes
-       var requestBody bytes.Buffer
-       multiPartWriter := multipart.NewWriter(&requestBody)
+       //var requestBody bytes.Buffer
+       requestBody := &bytes.Buffer{}
+       multiPartWriter := multipart.NewWriter(requestBody)
 
-       fileWriter, err := multiPartWriter.CreateFormFile("file_field", filepath)
+       fileWriter, err := multiPartWriter.CreateFormFile(paramName, filename)
        if err != nil {
                log.Fatalln(err)
        }
@@ -160,12 +188,17 @@ func fileUploadRequest(uri string, paramName, filepath string) (*http.Request, e
 
        //Close multiwriter
        multiPartWriter.Close()
+       if err != nil {
+               return nil, err
+       }
+
+       request, err := http.NewRequest(http.MethodPost, uri, requestBody)
+       request.Header.Set(common.ContentType, multiPartWriter.FormDataContentType())
+       //request.Header.Set("Content-Type", "multipart/form-data")
 
-       request, err := http.NewRequest(http.MethodPost, uri, &requestBody)
        if err != nil {
                log.Fatalln(err)
        }
-       request.Header.Add("Content-Type", multiPartWriter.FormDataContentType())
-       //request.Header.Set("Content-Type", "multipart/form-data")
+
        return request, err
 }