Release of Routing Manager v0.3.0
[ric-plt/rtmgr.git] / pkg / nbi / httpgetter.go
index 6780403..33db0f8 100644 (file)
@@ -28,23 +28,53 @@ package nbi
 import (
        "encoding/json"
        "net/http"
-       "rtmgr"
+       "routing-manager/pkg/rtmgr"
+       "routing-manager/pkg/rpe"
+       "routing-manager/pkg/sdl"
        "time"
 )
 
-var myClient = &http.Client{Timeout: 1 * time.Second}
+type HttpGetter struct {
+       NbiEngine
+       FetchAllXapps FetchAllXappsHandler
+}
+
+func NewHttpGetter() *HttpGetter {
+       instance := new(HttpGetter)
+       instance.FetchAllXapps = fetchAllXapps
+       return instance
+}
 
-func fetchXappList(url string) (*[]rtmgr.XApp, error) {
-       rtmgr.Logger.Debug("Invoked httpgetter.fetchXappList")
-       r, err := myClient.Get(url)
+var myClient = &http.Client{Timeout: 5 * time.Second}
+
+func fetchAllXapps(xmurl string) (*[]rtmgr.XApp, error) {
+       rtmgr.Logger.Info("Invoked httpgetter.fetchXappList: " + xmurl)
+       r, err := myClient.Get(xmurl)
        if err != nil {
                return nil, err
        }
        defer r.Body.Close()
-       rtmgr.Logger.Debug("http client raw response: %v", r)
-       var xapps []rtmgr.XApp
-       json.NewDecoder(r.Body).Decode(&xapps)
-       rtmgr.Logger.Info("HTTP GET: OK")
-       rtmgr.Logger.Debug("httpgetter.fetchXappList returns: %v", xapps)
-       return &xapps, err
+
+       if r.StatusCode == 200 {
+               rtmgr.Logger.Debug("http client raw response: %v", r)
+               var xapps []rtmgr.XApp
+               err = json.NewDecoder(r.Body).Decode(&xapps)
+               if err != nil {
+                       rtmgr.Logger.Warn("Json decode failed: " + err.Error())
+               }
+               rtmgr.Logger.Info("HTTP GET: OK")
+               rtmgr.Logger.Debug("httpgetter.fetchXappList returns: %v", xapps)
+               return &xapps, err
+       }
+       rtmgr.Logger.Warn("httpgetter got an unexpected http status code: %v", r.StatusCode)
+       return nil, nil
+}
+
+func (g *HttpGetter) Initialize(xmurl string, nbiif string, fileName string, configfile string,
+                               sdlEngine sdl.SdlEngine, rpeEngine rpe.RpeEngine, triggerSBI chan<- bool) error {
+       return nil
+}
+
+func (g *HttpGetter) Terminate() error {
+       return nil
 }