Commit e44e302e authored by Simon Pastor's avatar Simon Pastor
Browse files

fix loc-serv and swaggerui

parent 781d827e
Loading
Loading
Loading
Loading
+2083 −3839

File changed.

Preview size limit exceeded, changes collapsed.

+131 −25
Original line number Diff line number Diff line
@@ -897,16 +897,21 @@ func userTrackingSubPost(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json; charset=UTF-8")

	var response InlineResponse2013
	userTrackingSub := new(UserTrackingSubscription)
	response.UserTrackingSubscription = userTrackingSub

	var body Body6
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(&userTrackingSub)
	err := decoder.Decode(&body)
	if err != nil {
		log.Error(err.Error())
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	userTrackingSub := body.UserTrackingSubscription

	if userTrackingSub == nil {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	newSubsId := nextUserSubscriptionIdAvailable
	nextUserSubscriptionIdAvailable++
@@ -917,6 +922,8 @@ func userTrackingSubPost(w http.ResponseWriter, r *http.Request) {

	_ = rc.JSONSetEntry(baseKey+typeUserSubscription+":"+subsIdStr, ".", convertUserSubscriptionToJson(userTrackingSub))

	response.UserTrackingSubscription = userTrackingSub

	jsonResponse, err := json.Marshal(response)
	if err != nil {
		log.Error(err.Error())
@@ -932,25 +939,47 @@ func userTrackingSubPut(w http.ResponseWriter, r *http.Request) {
	vars := mux.Vars(r)

	var response InlineResponse20014
	userTrackingSub := new(UserTrackingSubscription)
	response.UserTrackingSubscription = userTrackingSub

	var body Body6
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(&userTrackingSub)
	err := decoder.Decode(&body)
	if err != nil {
		log.Error(err.Error())
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	userTrackingSub := body.UserTrackingSubscription

	if userTrackingSub == nil {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	subsIdParamStr := vars["subscriptionId"]

	selfUrl := strings.Split(userTrackingSub.ResourceURL, "/")
	subsIdStr := selfUrl[len(selfUrl)-1]

	if subsIdStr != subsIdParamStr {
		http.Error(w, "Body content not matching parameter", http.StatusInternalServerError)
		return
	}

	subsIdStr := vars["subscriptionId"]
	userTrackingSub.ResourceURL = hostUrl.String() + basePath + "subscriptions/userTracking/" + subsIdStr

	subsId, _ := strconv.Atoi(subsIdStr)
	if userSubscriptionMap[subsId] == "" {
		w.WriteHeader(http.StatusNotFound)
		return
	}

	_ = rc.JSONSetEntry(baseKey+typeUserSubscription+":"+subsIdStr, ".", convertUserSubscriptionToJson(userTrackingSub))

	deregisterUser(subsIdStr)
	registerUser(userTrackingSub.Address, userTrackingSub.UserEventCriteria, subsIdStr)

	response.UserTrackingSubscription = userTrackingSub

	jsonResponse, err := json.Marshal(response)
	if err != nil {
		log.Error(err.Error())
@@ -1049,16 +1078,21 @@ func zonalTrafficSubPost(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json; charset=UTF-8")

	var response InlineResponse2014
	zonalTrafficSub := new(ZonalTrafficSubscription)
	response.ZonalTrafficSubscription = zonalTrafficSub

	var body Body8
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(&zonalTrafficSub)
	err := decoder.Decode(&body)
	if err != nil {
		log.Error(err.Error())
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	zonalTrafficSub := body.ZonalTrafficSubscription

	if zonalTrafficSub == nil {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	newSubsId := nextZonalSubscriptionIdAvailable
	nextZonalSubscriptionIdAvailable++
@@ -1081,6 +1115,8 @@ func zonalTrafficSubPost(w http.ResponseWriter, r *http.Request) {

	registerZonal(zonalTrafficSub.ZoneId, zonalTrafficSub.UserEventCriteria, subsIdStr)

	response.ZonalTrafficSubscription = zonalTrafficSub

	jsonResponse, err := json.Marshal(response)
	if err != nil {
		log.Error(err.Error())
@@ -1096,25 +1132,47 @@ func zonalTrafficSubPut(w http.ResponseWriter, r *http.Request) {
	vars := mux.Vars(r)

	var response InlineResponse20017
	zonalTrafficSub := new(ZonalTrafficSubscription)
	response.ZonalTrafficSubscription = zonalTrafficSub

	var body Body8
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(&zonalTrafficSub)
	err := decoder.Decode(&body)
	if err != nil {
		log.Error(err.Error())
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	zonalTrafficSub := body.ZonalTrafficSubscription

	if zonalTrafficSub == nil {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	subsIdParamStr := vars["subscriptionId"]

	selfUrl := strings.Split(zonalTrafficSub.ResourceURL, "/")
	subsIdStr := selfUrl[len(selfUrl)-1]

	if subsIdStr != subsIdParamStr {
		http.Error(w, "Body content not matching parameter", http.StatusInternalServerError)
		return
	}

	subsIdStr := vars["subscriptionId"]
	zonalTrafficSub.ResourceURL = hostUrl.String() + basePath + "subscriptions/zonalTraffic/" + subsIdStr

	subsId, _ := strconv.Atoi(subsIdStr)
	if zonalSubscriptionMap[subsId] == "" {
		w.WriteHeader(http.StatusNotFound)
		return
	}

	_ = rc.JSONSetEntry(baseKey+typeZonalSubscription+":"+subsIdStr, ".", convertZonalSubscriptionToJson(zonalTrafficSub))

	deregisterZonal(subsIdStr)
	registerZonal(zonalTrafficSub.ZoneId, zonalTrafficSub.UserEventCriteria, subsIdStr)

	response.ZonalTrafficSubscription = zonalTrafficSub

	jsonResponse, err := json.Marshal(response)
	if err != nil {
		log.Error(err.Error())
@@ -1214,16 +1272,21 @@ func zoneStatusSubPost(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json; charset=UTF-8")

	var response InlineResponse2015
	zoneStatusSub := new(ZoneStatusSubscription)
	response.ZoneStatusSubscription = zoneStatusSub

	var body Body10
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(&zoneStatusSub)
	err := decoder.Decode(&body)
	if err != nil {
		log.Error(err.Error())
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	zoneStatusSub := body.ZoneStatusSubscription

	if zoneStatusSub == nil {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	newSubsId := nextZoneStatusSubscriptionIdAvailable
	nextZoneStatusSubscriptionIdAvailable++
@@ -1236,6 +1299,8 @@ func zoneStatusSubPost(w http.ResponseWriter, r *http.Request) {
	registerZoneStatus(zoneStatusSub.ZoneId, zoneStatusSub.NumberOfUsersZoneThreshold, zoneStatusSub.NumberOfUsersAPThreshold,
		zoneStatusSub.OperationStatus, subsIdStr)

	response.ZoneStatusSubscription = zoneStatusSub

	jsonResponse, err := json.Marshal(response)
	if err != nil {
		log.Error(err.Error())
@@ -1251,26 +1316,48 @@ func zoneStatusSubPut(w http.ResponseWriter, r *http.Request) {
	vars := mux.Vars(r)

	var response InlineResponse20020
	zoneStatusSub := new(ZoneStatusSubscription)
	response.ZoneStatusSubscription = zoneStatusSub

	var body Body10
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(&zoneStatusSub)
	err := decoder.Decode(&body)
	if err != nil {
		log.Error(err.Error())
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	zoneStatusSub := body.ZoneStatusSubscription

	if zoneStatusSub == nil {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	subsIdParamStr := vars["subscriptionId"]

	selfUrl := strings.Split(zoneStatusSub.ResourceURL, "/")
	subsIdStr := selfUrl[len(selfUrl)-1]

	if subsIdStr != subsIdParamStr {
		http.Error(w, "Body content not matching parameter", http.StatusInternalServerError)
		return
	}

	subsIdStr := vars["subscriptionId"]
	zoneStatusSub.ResourceURL = hostUrl.String() + basePath + "subscriptions/zoneStatus/" + subsIdStr

	subsId, _ := strconv.Atoi(subsIdStr)
	if zoneStatusSubscriptionMap[subsId] == nil {
		w.WriteHeader(http.StatusNotFound)
		return
	}

	_ = rc.JSONSetEntry(baseKey+typeZoneStatusSubscription+":"+subsIdStr, ".", convertZoneStatusSubscriptionToJson(zoneStatusSub))

	deregisterZoneStatus(subsIdStr)
	registerZoneStatus(zoneStatusSub.ZoneId, zoneStatusSub.NumberOfUsersZoneThreshold, zoneStatusSub.NumberOfUsersAPThreshold,
		zoneStatusSub.OperationStatus, subsIdStr)

	response.ZoneStatusSubscription = zoneStatusSub

	jsonResponse, err := json.Marshal(response)
	if err != nil {
		log.Error(err.Error())
@@ -1356,8 +1443,17 @@ func updateUserInfo(address string, zoneId string, accessPointId string, longitu
			userInfo.LocationInfo.Accuracy = 1
		}
		//we only support shape != 7 in locationInfo
		userInfo.LocationInfo.Longitude[0] = *longitude
		userInfo.LocationInfo.Latitude[0] = *latitude
		userInfo.LocationInfo.Shape = "2"
		userInfo.LocationInfo.Longitude = nil
		userInfo.LocationInfo.Longitude = append(userInfo.LocationInfo.Longitude, *longitude)
		userInfo.LocationInfo.Latitude = nil
		userInfo.LocationInfo.Latitude = append(userInfo.LocationInfo.Latitude, *latitude)

		seconds := time.Now().Unix()
		var timeStamp TimeStamp
		timeStamp.Seconds = int32(seconds)

		userInfo.LocationInfo.Timestamp = &timeStamp
	}

	// Update User info in DB & Send notifications
@@ -1426,9 +1522,19 @@ func updateAccessPointInfo(zoneId string, apId string, conTypeStr string, opStat
			apInfo.LocationInfo = new(LocationInfo)
			apInfo.LocationInfo.Accuracy = 1
		}

		//we only support shape != 7 in locationInfo
		apInfo.LocationInfo.Longitude[0] = *longitude
		apInfo.LocationInfo.Latitude[0] = *latitude
		apInfo.LocationInfo.Shape = "2"
		apInfo.LocationInfo.Longitude = nil
		apInfo.LocationInfo.Longitude = append(apInfo.LocationInfo.Longitude, *longitude)
		apInfo.LocationInfo.Latitude = nil
		apInfo.LocationInfo.Latitude = append(apInfo.LocationInfo.Latitude, *latitude)

		seconds := time.Now().Unix()
		var timeStamp TimeStamp
		timeStamp.Seconds = int32(seconds)

		apInfo.LocationInfo.Timestamp = &timeStamp
	}

	// Update AP info in DB & Send notifications
+21 −12
Original line number Diff line number Diff line
@@ -615,7 +615,8 @@ func testZonalSubscriptionPost(t *testing.T) string {
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedZonalTrafficSubscription)
	expectedBody := Body8{&expectedZonalTrafficSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
@@ -673,7 +674,8 @@ func testZonalSubscriptionPut(t *testing.T, subscriptionId string, expectSuccess
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedZonalTrafficSubscription)
	expectedBody := Body8{&expectedZonalTrafficSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
@@ -703,7 +705,7 @@ func testZonalSubscriptionPut(t *testing.T, subscriptionId string, expectSuccess
		}
		return string(expectedResponseStr)
	} else {
		_, err = sendRequest(http.MethodPost, "/subscriptions/zonalTraffic", bytes.NewBuffer(body), vars, nil, http.StatusOK, ZonalTrafficSubPUT)
		_, err = sendRequest(http.MethodPost, "/subscriptions/zonalTraffic", bytes.NewBuffer(body), vars, nil, http.StatusNotFound, ZonalTrafficSubPUT)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}
@@ -949,7 +951,8 @@ func testUserSubscriptionPost(t *testing.T) string {
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedUserTrackingSubscription)
	expectedBody := Body6{&expectedUserTrackingSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
@@ -1006,7 +1009,8 @@ func testUserSubscriptionPut(t *testing.T, subscriptionId string, expectSuccess
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedUserTrackingSubscription)
	expectedBody := Body6{&expectedUserTrackingSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
@@ -1036,7 +1040,7 @@ func testUserSubscriptionPut(t *testing.T, subscriptionId string, expectSuccess
		}
		return string(expectedResponseStr)
	} else {
		_, err = sendRequest(http.MethodPost, "/subscriptions/userTracking", bytes.NewBuffer(body), vars, nil, http.StatusOK, UserTrackingSubPUT)
		_, err = sendRequest(http.MethodPost, "/subscriptions/userTracking", bytes.NewBuffer(body), vars, nil, http.StatusNotFound, UserTrackingSubPUT)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}
@@ -1284,7 +1288,8 @@ func testZoneStatusSubscriptionPost(t *testing.T) string {
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedZoneStatusSubscription)
	expectedBody := Body10{&expectedZoneStatusSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
@@ -1342,7 +1347,8 @@ func testZoneStatusSubscriptionPut(t *testing.T, subscriptionId string, expectSu
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedZoneStatusSubscription)
	expectedBody := Body10{&expectedZoneStatusSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
@@ -1372,7 +1378,7 @@ func testZoneStatusSubscriptionPut(t *testing.T, subscriptionId string, expectSu
		}
		return string(expectedResponseStr)
	} else {
		_, err = sendRequest(http.MethodPost, "/subscriptions/zoneStatus", bytes.NewBuffer(body), vars, nil, http.StatusOK, ZoneStatusSubPUT)
		_, err = sendRequest(http.MethodPost, "/subscriptions/zoneStatus", bytes.NewBuffer(body), vars, nil, http.StatusNotFound, ZoneStatusSubPUT)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}
@@ -1792,7 +1798,8 @@ func TestUserSubscriptionNotification(t *testing.T) {
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedUserTrackingSubscription)
	expectedBody := Body6{&expectedUserTrackingSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
@@ -1902,12 +1909,14 @@ func TestZoneSubscriptionNotification(t *testing.T) {
	/******************************
	 * request body section
	 ******************************/
	body, err := json.Marshal(expectedZonalTrafficSubscription)
	expectedBody := Body8{&expectedZonalTrafficSubscription}
	body, err := json.Marshal(expectedBody)
	if err != nil {
		t.Fatalf(err.Error())
	}

	body2, err := json.Marshal(expectedZonalTrafficSubscription2)
	expectedBody2 := Body8{&expectedZonalTrafficSubscription2}
	body2, err := json.Marshal(expectedBody2)
	if err != nil {
		t.Fatalf(err.Error())
	}
+4 −0
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ echo "USER_SWAGGER_SANDBOX: ${USER_SWAGGER_SANDBOX}"
for file in /swagger/*-api.yaml; do
    echo "Prepending [${MEEP_SANDBOX_NAME}] to basepath in: $file"
    sed -i 's,basePath: \"/\?,basePath: \"/'${MEEP_SANDBOX_NAME}'/,' $file;
    echo "Replacing {apiRoot} with ${MEEP_HOST_URL}/${MEEP_SANDBOX_NAME} to url in: $file"
    sed -i 's/{apiRoot}/'${MEEP_SANDBOX_NAME}'/g' $file;
done

# Copy user-swagger & adapt basepath to sandbox
@@ -18,6 +20,8 @@ if [[ ! -z "${USER_SWAGGER}" ]]; then
    for file in ${USER_SWAGGER_SANDBOX}/*-api.yaml; do
        echo "Prepending [${MEEP_SANDBOX_NAME}] to basepath in: $file"
        sed -i 's,basePath: \"/\?,basePath: \"/'${MEEP_SANDBOX_NAME}'/,' $file;
        echo "Replacing {apiRoot} to url in: $file"
        sed -i 's/{apiRoot}/'${MEEP_SANDBOX_NAME}'/g' $file;
    done
fi