package charts
import (
+ "encoding/json"
+ "fmt"
+ "io"
"io/ioutil"
"net/http"
type IChartMgr interface {
GetCharts() (string, error)
+ DownloadChart(string, string) (io.ReadCloser, error)
+ GetChartsByName(name string) ([]map[string]interface{}, error)
}
func NewChartmgr() IChartMgr {
ricdms.Logger.Debug("response : %+v", string(respByte))
return string(respByte), nil
}
+
+func (c *ChartMgr) DownloadChart(chartName string, version string) (io.ReadCloser, error) {
+ ricdms.Logger.Debug("Download Charts invoked")
+
+ if chartName == "" || version == "" {
+ return nil, fmt.Errorf("chartname or version is empty")
+ }
+
+ ChartURL := fmt.Sprintf(ricdms.Config.DownloadChartURLFormat, chartName, version)
+
+ resp, err := http.Get(ChartURL)
+ if err != nil {
+ return nil, err
+ }
+
+ return resp.Request.Body, nil
+}
+
+func (c *ChartMgr) GetChartsByName(name string) ([]map[string]interface{}, error) {
+ ricdms.Logger.Debug("Get Chart by xApp name is invoked")
+
+ if name == "" {
+ return make([]map[string]interface{}, 0), fmt.Errorf("xAppname is empty")
+ }
+
+ URL := fmt.Sprintf(ricdms.Config.GetChartsByxAppNameURL, name)
+
+ response, err := http.Get(URL)
+ if err != nil {
+ ricdms.Logger.Error("error: %v", err)
+ return make([]map[string]interface{}, 0), err
+ }
+
+ defer response.Body.Close()
+ data, err := ioutil.ReadAll(response.Body)
+
+ if err != nil {
+ ricdms.Logger.Debug("Reading response failed with err : %v", err)
+ return make([]map[string]interface{}, 0), err
+ }
+
+ v := make([]map[string]interface{}, 0)
+ err = json.Unmarshal(data, &v)
+ if err != nil {
+ ricdms.Logger.Debug("Error while parsing res: %v", err)
+ return make([]map[string]interface{}, 0), err
+ }
+ return v, nil
+}