add REST setServiceNames w/ test
authordamon92 <damon92.lee@samsung.com>
Thu, 28 Mar 2019 07:49:01 +0000 (16:49 +0900)
committerdamon92 <damon92.lee@samsung.com>
Thu, 28 Mar 2019 07:49:01 +0000 (16:49 +0900)
src/discoverymgr/discovery_init.go
src/restapi/v1/restapi.go
src/restapi/v1/restapi_test.go
src/restapi/v1/routers.go

index fe4ca1e..6b74142 100644 (file)
@@ -2,6 +2,7 @@ package discoverymgr
 
 import (
        "context"
+       "errors"
        "fmt"
        "log"
        "time"
@@ -12,17 +13,18 @@ import (
 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) {
index 3b57d19..5794fec 100644 (file)
@@ -71,6 +71,7 @@ func APIV1DiscoverymgrDevicesGet(w http.ResponseWriter, r *http.Request) {
        ret, err := discoverymgr.DeviceList()
        if err != nil {
                writeJSONResponse(w, nil, http.StatusBadRequest)
+               return
        }
 
        json, err := json.Marshal(ret)
@@ -81,6 +82,25 @@ func APIV1DiscoverymgrDevicesGet(w http.ResponseWriter, r *http.Request) {
        }
 }
 
+// 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)
index 595fc25..5746ea7 100644 (file)
@@ -29,7 +29,8 @@ const (
        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"
@@ -243,10 +244,22 @@ func TestAPIV1DeviceResourceUsageNetworkGet(t *testing.T) {
 }
 
 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)
 }
index d80d7d5..76f8989 100644 (file)
@@ -102,6 +102,13 @@ var routes = Routes{
        },
 
        Route{
+               "APIV1DiscoverymgrDevicesPost",
+               strings.ToUpper("Post"),
+               "/api/v1/discoverymgr/devices",
+               APIV1DiscoverymgrDevicesPost,
+       },
+
+       Route{
                "APIV1ServicemgrServicesAppnameGet",
                strings.ToUpper("Get"),
                "/api/v1/servicemgr/services/{appname}",