Commit 3dd59d89 authored by Simon Pastor's avatar Simon Pastor
Browse files

zone status ap threashold fix and check mandatory properties in subscriptions

parent 0aca50e9
Loading
Loading
Loading
Loading
+116 −38
Original line number Diff line number Diff line
@@ -105,6 +105,9 @@ var baseKey string
var sessionMgr *sm.SessionMgr
var mutex sync.Mutex

var previousNbUsersInAp int
var previousNbUsersInZone int

func notImplemented(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json; charset=UTF-8")
	w.WriteHeader(http.StatusNotImplemented)
@@ -345,10 +348,12 @@ func checkNotificationRegisteredZoneStatus(zoneId string, apId string, nbUsersIn

		if zoneStatus.ZoneId == zoneId {
			nbUsersInAP := -1
			nbUsersInZone := -1
			zoneWarning := false
			apWarning := false
			var err error
			if nbUsersInZoneStr != "" {
				nbUsersInZone, err := strconv.Atoi(nbUsersInZoneStr)
				nbUsersInZone, err = strconv.Atoi(nbUsersInZoneStr)
				if err != nil {
					log.Error(err)
					continue
@@ -357,6 +362,14 @@ func checkNotificationRegisteredZoneStatus(zoneId string, apId string, nbUsersIn
				if nbUsersInZone >= zoneStatus.NbUsersInZoneThreshold {
					zoneWarning = true
				}
				//always updates the current number of users if it has changed
				//only send notification if the number of users has changed from the last time it was sent
				if previousNbUsersInZone != nbUsersInZone {
					previousNbUsersInZone = nbUsersInZone
				} else {
					zoneWarning = false
				}
			}
			if nbUsersInAPStr != "" {
				nbUsersInAP, err = strconv.Atoi(nbUsersInAPStr)
				if err != nil {
@@ -367,6 +380,13 @@ func checkNotificationRegisteredZoneStatus(zoneId string, apId string, nbUsersIn
				if nbUsersInAP >= zoneStatus.NbUsersInAPThreshold {
					apWarning = true
				}
				//always updates the current number of users if it has changed
				//only send notification if the number of users has changed from the last time it was sent
				if previousNbUsersInAp != nbUsersInAP {
					previousNbUsersInAp = nbUsersInAP
				} else {
					apWarning = false
				}
			}

			if zoneWarning || apWarning {
@@ -403,7 +423,6 @@ func checkNotificationRegisteredZoneStatus(zoneId string, apId string, nbUsersIn
		}
	}
}
}

func checkNotificationRegisteredUsers(oldZoneId string, newZoneId string, oldApId string, newApId string, userId string) {

@@ -975,6 +994,16 @@ func userTrackingSubPost(w http.ResponseWriter, r *http.Request) {
		return
	}

	//checking for mandatory properties
	if userTrackingSub.CallbackReference == nil || userTrackingSub.CallbackReference.NotifyURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if userTrackingSub.Address == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	newSubsId := nextUserSubscriptionIdAvailable
	nextUserSubscriptionIdAvailable++
	subsIdStr := strconv.Itoa(newSubsId)
@@ -1017,6 +1046,15 @@ func userTrackingSubPut(w http.ResponseWriter, r *http.Request) {
		return
	}

	//checking for mandatory properties
	if userTrackingSub.CallbackReference == nil || userTrackingSub.CallbackReference.NotifyURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if userTrackingSub.Address == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if userTrackingSub.ResourceURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
@@ -1168,6 +1206,16 @@ func zonalTrafficSubPost(w http.ResponseWriter, r *http.Request) {
		return
	}

	//checking for mandatory properties
	if zonalTrafficSub.CallbackReference == nil || zonalTrafficSub.CallbackReference.NotifyURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if zonalTrafficSub.ZoneId == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	newSubsId := nextZonalSubscriptionIdAvailable
	nextZonalSubscriptionIdAvailable++
	subsIdStr := strconv.Itoa(newSubsId)
@@ -1222,6 +1270,15 @@ func zonalTrafficSubPut(w http.ResponseWriter, r *http.Request) {
		return
	}

	//checking for mandatory properties
	if zonalTrafficSub.CallbackReference == nil || zonalTrafficSub.CallbackReference.NotifyURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if zonalTrafficSub.ZoneId == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if zonalTrafficSub.ResourceURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
@@ -1374,6 +1431,16 @@ func zoneStatusSubPost(w http.ResponseWriter, r *http.Request) {
		return
	}

	//checking for mandatory properties
	if zoneStatusSub.CallbackReference == nil || zoneStatusSub.CallbackReference.NotifyURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if zoneStatusSub.ZoneId == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	newSubsId := nextZoneStatusSubscriptionIdAvailable
	nextZoneStatusSubscriptionIdAvailable++
	subsIdStr := strconv.Itoa(newSubsId)
@@ -1418,6 +1485,15 @@ func zoneStatusSubPut(w http.ResponseWriter, r *http.Request) {
		return
	}

	//checking for mandatory properties
	if zoneStatusSub.CallbackReference == nil || zoneStatusSub.CallbackReference.NotifyURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if zoneStatusSub.ZoneId == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	if zoneStatusSub.ResourceURL == "" {
		w.WriteHeader(http.StatusBadRequest)
		return
@@ -1486,6 +1562,8 @@ func cleanUp() {
	nextZonalSubscriptionIdAvailable = 1
	nextUserSubscriptionIdAvailable = 1
	nextZoneStatusSubscriptionIdAvailable = 1
	previousNbUsersInAp = 0
	previousNbUsersInZone = 0

	mutex.Lock()
	defer mutex.Unlock()