import (
"context"
+ "errors"
"fmt"
"log"
"time"
var gServer *zeroconf.Server
//SetServiceNames set txt of mdns message
-func SetServiceNames(ServiceNames []string) {
+func SetServiceNames(ServiceNames []string) error {
var TXTSize int
for _, str := range ServiceNames {
TXTSize += len(str)
}
if TXTSize > maxTXTSize {
- fmt.Println("TXT Size is Too much for mDNS TXT - 400B")
- return
+ return errors.New("TXT Size is Too much for mDNS TXT - 400B")
}
gServer.SetText(ServiceNames)
+
+ return nil
}
func registerDevice(ServiceNames []string, ret chan error) {
ret, err := discoverymgr.DeviceList()
if err != nil {
writeJSONResponse(w, nil, http.StatusBadRequest)
+ return
}
json, err := json.Marshal(ret)
}
}
+// APIV1DiscoverymgrDevicesGet function
+func APIV1DiscoverymgrDevicesPost(w http.ResponseWriter, r *http.Request) {
+ log.Printf("[%s] APIV1DiscoverymgrDevicesPost", logPrefix)
+ decoder := json.NewDecoder(r.Body)
+ var serviceNames map[string][]string
+ err := decoder.Decode(&serviceNames)
+ if err != nil {
+ writeJSONResponse(w, nil, http.StatusBadRequest)
+ return
+ }
+
+ err = discoverymgr.SetServiceNames(serviceNames["servicenames"])
+ if err == nil {
+ writeJSONResponse(w, nil, http.StatusOK)
+ } else {
+ writeJSONResponse(w, nil, http.StatusBadRequest)
+ }
+}
+
// APIV1ServicemgrServicesDelete function
func APIV1ServicemgrServicesDelete(w http.ResponseWriter, r *http.Request) {
log.Printf("[%s] APIV1ServicemgrServicesDelete", logPrefix)
ConstDeviceResourceUsageNetworkGet = "/api/v1/device/resource/usage/network"
// @TODO discovery mgr URI
- ConstDiscoverymgrDevices = "/api/v1/discoverymgr/devices"
+ ConstDiscoverymgrDevicesGet = "/api/v1/discoverymgr/devices"
+ ConstDiscoverymgrDevicesPost = "/api/v1/discoverymgr/devices"
// Service mgr URI
ConstServicemgrServices = "/api/v1/servicemgr/services"
}
func TestAPIV1DiscoverymgrDevicesGet(t *testing.T) {
- targetURI := ConstDiscoverymgrDevices
+ targetURI := ConstDiscoverymgrDevicesGet
testGet(t, targetURI, http.StatusOK)
}
+func TestAPIV1DiscoverymgrDevicesPost(t *testing.T) {
+ targetURI := ConstDiscoverymgrDevicesPost
+ ServiceNames := make(map[string][]string)
+ ServiceNames["servicenames"] = []string{"Distributed Web Engine", "Television", "Soundbox"}
+
+ bdbytes, err := json.Marshal(ServiceNames)
+ if err != nil {
+ t.Log(err.Error())
+ t.Error()
+ }
+ testPost(t, targetURI, bdbytes, http.StatusOK)
+}
func TestAPIV1ServicemgrServicesPost(t *testing.T) {
registerService(t)
}
},
Route{
+ "APIV1DiscoverymgrDevicesPost",
+ strings.ToUpper("Post"),
+ "/api/v1/discoverymgr/devices",
+ APIV1DiscoverymgrDevicesPost,
+ },
+
+ Route{
"APIV1ServicemgrServicesAppnameGet",
strings.ToUpper("Get"),
"/api/v1/servicemgr/services/{appname}",