refact(controller): send cwmp messages with no code repetition
This commit is contained in:
parent
c4e62772d7
commit
877c21cfcc
|
|
@ -8,8 +8,9 @@ import (
|
|||
|
||||
"github.com/leandrofars/oktopus/internal/bridge"
|
||||
"github.com/leandrofars/oktopus/internal/cwmp"
|
||||
"github.com/leandrofars/oktopus/internal/nats"
|
||||
n "github.com/leandrofars/oktopus/internal/nats"
|
||||
"github.com/leandrofars/oktopus/internal/utils"
|
||||
"github.com/nats-io/nats.go"
|
||||
)
|
||||
|
||||
func (a *Api) cwmpGetParameterNamesMsg(w http.ResponseWriter, r *http.Request) {
|
||||
|
|
@ -22,28 +23,11 @@ func (a *Api) cwmpGetParameterNamesMsg(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
data, err := bridge.NatsCwmpInteraction(
|
||||
nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api",
|
||||
payload,
|
||||
w,
|
||||
a.nc,
|
||||
)
|
||||
data, _, 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
|
||||
}
|
||||
|
||||
w.Write(data)
|
||||
}
|
||||
|
||||
|
|
@ -57,28 +41,11 @@ func (a *Api) cwmpGetParameterAttributesMsg(w http.ResponseWriter, r *http.Reque
|
|||
return
|
||||
}
|
||||
|
||||
data, err := bridge.NatsCwmpInteraction(
|
||||
nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api",
|
||||
payload,
|
||||
w,
|
||||
a.nc,
|
||||
)
|
||||
data, _, err := cwmpInteraction[cwmp.GetParameterAttributesResponse](sn, payload, w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var response cwmp.GetParameterAttributesResponse
|
||||
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
|
||||
}
|
||||
|
||||
w.Write(data)
|
||||
}
|
||||
|
||||
|
|
@ -92,28 +59,11 @@ func (a *Api) cwmpGetParameterValuesMsg(w http.ResponseWriter, r *http.Request)
|
|||
return
|
||||
}
|
||||
|
||||
data, err := bridge.NatsCwmpInteraction(
|
||||
nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api",
|
||||
payload,
|
||||
w,
|
||||
a.nc,
|
||||
)
|
||||
data, _, err := cwmpInteraction[cwmp.GetParameterValuesResponse](sn, payload, w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var response cwmp.GetParameterValuesResponse
|
||||
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
|
||||
}
|
||||
|
||||
w.Write(data)
|
||||
}
|
||||
|
||||
|
|
@ -127,27 +77,37 @@ func (a *Api) cwmpSetParameterValuesMsg(w http.ResponseWriter, r *http.Request)
|
|||
return
|
||||
}
|
||||
|
||||
data, err := bridge.NatsCwmpInteraction(
|
||||
nats.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api",
|
||||
payload,
|
||||
w,
|
||||
a.nc,
|
||||
)
|
||||
data, _, err := cwmpInteraction[cwmp.SetParameterValuesResponse](sn, payload, w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var response cwmp.SetParameterValuesResponse
|
||||
w.Write(data)
|
||||
}
|
||||
|
||||
func cwmpInteraction[T cwmp.SetParameterValuesResponse | cwmp.GetParameterAttributesResponse | cwmp.GetParameterNamesResponse | cwmp.GetParameterValuesResponse](
|
||||
sn string, payload []byte, w http.ResponseWriter, nc *nats.Conn,
|
||||
) ([]byte, T, error) {
|
||||
|
||||
var response T
|
||||
|
||||
data, err := bridge.NatsCwmpInteraction(
|
||||
n.NATS_CWMP_ADAPTER_SUBJECT_PREFIX+sn+".api",
|
||||
payload,
|
||||
w,
|
||||
nc,
|
||||
)
|
||||
if err != nil {
|
||||
return data, response, err
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
w.Write(data)
|
||||
return data, response, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
payload := cwmp.GetParameterNames("InternetGatewayDevice.LANDevice.", 1)
|
||||
|
||||
response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, payload, w, a.nc)
|
||||
_, response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, []byte(payload), w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
@ -232,7 +232,7 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
payload = cwmp.GetParameterNames(x.Name+"WLANConfiguration.", 1)
|
||||
|
||||
response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, payload, w, a.nc)
|
||||
_, response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, []byte(payload), w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
@ -243,7 +243,7 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
payload = cwmp.GetParameterNames(y.Name, 1)
|
||||
|
||||
response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, payload, w, a.nc)
|
||||
_, response, err := cwmpInteraction[cwmp.GetParameterNamesResponse](sn, []byte(payload), w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
@ -284,11 +284,10 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) {
|
|||
wlanConfigurationInstances = wlanConfigurationInstances + 1
|
||||
}
|
||||
}
|
||||
log.Println("wlanConfigurationInstances: ", wlanConfigurationInstances)
|
||||
|
||||
payload = cwmp.GetParameterMultiValues(parameters_to_get_values)
|
||||
|
||||
parameterValuesResp, err := cwmpInteraction[cwmp.GetParameterValuesResponse](sn, payload, w, a.nc)
|
||||
_, parameterValuesResp, err := cwmpInteraction[cwmp.GetParameterValuesResponse](sn, []byte(payload), w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
@ -369,7 +368,7 @@ func (a *Api) deviceWifi(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
payload := cwmp.SetParameterMultiValues(fmtBody)
|
||||
|
||||
setParameterValuesResp, err := cwmpInteraction[cwmp.SetParameterValuesResponse](sn, payload, w, a.nc)
|
||||
_, setParameterValuesResp, err := cwmpInteraction[cwmp.SetParameterValuesResponse](sn, []byte(payload), w, a.nc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user