From c4e62772d7ab737eb1964b7cf48016d0382ca6f5 Mon Sep 17 00:00:00 2001 From: leandrofars Date: Thu, 30 May 2024 12:23:53 -0300 Subject: [PATCH] refact(controller): get wifi data --- .../services/controller/internal/api/wifi.go | 113 ++---------------- 1 file changed, 7 insertions(+), 106 deletions(-) diff --git a/backend/services/controller/internal/api/wifi.go b/backend/services/controller/internal/api/wifi.go index 4dd0162..3fdc172 100644 --- a/backend/services/controller/internal/api/wifi.go +++ b/backend/services/controller/internal/api/wifi.go @@ -1,17 +1,13 @@ package api import ( - "encoding/json" - "encoding/xml" "log" "net/http" "strings" "github.com/gorilla/mux" - "github.com/leandrofars/oktopus/internal/bridge" "github.com/leandrofars/oktopus/internal/cwmp" "github.com/leandrofars/oktopus/internal/entity" - "github.com/leandrofars/oktopus/internal/nats" "github.com/leandrofars/oktopus/internal/utils" ) @@ -223,28 +219,11 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) { payload := cwmp.GetParameterNames("InternetGatewayDevice.LANDevice.", 1) - data, err := bridge.NatsCwmpInteraction( - nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api", - []byte(payload), - w, - a.nc, - ) + response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, payload, w, a.nc) if err != nil { return } - var response cwmp.GetParameterNamesResponse - err = xml.Unmarshal(data, &response) - if err != nil { - err = json.Unmarshal(data, &response) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - w.Write(utils.Marshall(err)) - return - } - return - } - parameters_to_get_values := []string{} wlanConfigurationInstances := 0 @@ -253,58 +232,23 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) { payload = cwmp.GetParameterNames(x.Name+"WLANConfiguration.", 1) - data, err := bridge.NatsCwmpInteraction( - nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api", - []byte(payload), - w, - a.nc, - ) + response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, payload, w, a.nc) if err != nil { return } - var response cwmp.GetParameterNamesResponse - err = xml.Unmarshal(data, &response) - if err != nil { - err = json.Unmarshal(data, &response) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - w.Write(utils.Marshall(err)) - return - } - return - } - // y = InternetGatewayDevice.LanDevice.*.WLANConfiguration.* for _, y := range response.ParameterList { wlans = append(wlans, WiFi{}) payload = cwmp.GetParameterNames(y.Name, 1) - data, err := bridge.NatsCwmpInteraction( - nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api", - []byte(payload), - w, - a.nc, - ) + response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, payload, w, a.nc) if err != nil { return } - log.Println("y.name: ", y.Name) - var response cwmp.GetParameterNamesResponse - err = xml.Unmarshal(data, &response) - if err != nil { - err = json.Unmarshal(data, &response) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - w.Write(utils.Marshall(err)) - return - } - return - } - - // y = InternetGatewayDevice.LanDevice.*.WLANConfiguration.*. + // z = InternetGatewayDevice.LanDevice.*.WLANConfiguration.*. for _, z := range response.ParameterList { path := strings.Split(z.Name, ".") parameter := path[len(path)-1] @@ -335,46 +279,26 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) { y.Name+"Standard", y.Name+"PreSharedKey.1.KeyPassphrase", ) - //parameters_to_get_values = append(parameters_to_get_values, y.Name+"NamePreSharedKey.1.KeyPassphrase") + wlans[wlanConfigurationInstances].Path = y.Name wlanConfigurationInstances = wlanConfigurationInstances + 1 } } log.Println("wlanConfigurationInstances: ", wlanConfigurationInstances) - //utils.MarshallEncoder(wlans, w) payload = cwmp.GetParameterMultiValues(parameters_to_get_values) - //log.Println("payload:", payload) - data, err = bridge.NatsCwmpInteraction( - nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api", - []byte(payload), - w, - a.nc, - ) + parameterValuesResp, err := cwmpInteraction[cwmp.GetParameterValuesResponse](sn, payload, w, a.nc) if err != nil { return } - var parameterValuesResp cwmp.GetParameterValuesResponse - err = xml.Unmarshal(data, ¶meterValuesResp) - if err != nil { - err = json.Unmarshal(data, ¶meterValuesResp) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - w.Write(utils.Marshall(err)) - return - } - return - } - i := 0 wlanIndex := 0 for _, a := range parameterValuesResp.ParameterList { path := strings.Split(a.Name, ".") parameter := path[len(path)-1] - //log.Println("parameter:", parameter) switch parameter { case "Enable": @@ -396,13 +320,8 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) { wlanIndex = wlanIndex + 1 i = 0 } - - // log.Println("parameter:", a.Name) - // log.Println("value:", a.Value) } - //log.Printf("%++v", wlans) - utils.MarshallEncoder(wlans, w) return @@ -449,30 +368,12 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) { } payload := cwmp.SetParameterMultiValues(fmtBody) - log.Println(payload) - data, err := bridge.NatsCwmpInteraction( - nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api", - []byte(payload), - w, - a.nc, - ) + setParameterValuesResp, err := cwmpInteraction[cwmp.SetParameterValuesResponse](sn, payload, w, a.nc) if err != nil { return } - var setParameterValuesResp cwmp.SetParameterValuesResponse - err = xml.Unmarshal(data, &setParameterValuesResp) - if err != nil { - err = json.Unmarshal(data, &setParameterValuesResp) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - w.Write(utils.Marshall(err)) - return - } - return - } - if setParameterValuesResp.Status == cwmp.ALL_OK { log.Printf("All parameters sent to the cpe %s were applied", device.SN) w.Write(utils.Marshall(cwmp.ALL_OK))