Loading go-apps/meep-loc-serv/server/loc-serv.go +211 −202 Original line number Diff line number Diff line Loading @@ -810,7 +810,7 @@ func checkNotificationDistancePeriodicTrigger1() { defer mutex.Unlock() //check all that applies for subsId, distanceCheck := range distanceSubscriptionMap1 { if distanceCheck != nil && distanceCheck.Subscription != nil { // if distanceCheck != nil && distanceCheck.Subscription != nil { // if distanceCheck.Subscription.Count == 0 || (distanceCheck.Subscription.Count != 0 && distanceCheck.NbNotificationsSent < distanceCheck.Subscription.Count) { // if distanceCheck.NextTts != 0 { // distanceCheck.NextTts-- Loading Loading @@ -957,10 +957,6 @@ func checkNotificationDistancePeriodicTrigger1() { } } } } // } func checkNotificationDistancePeriodicTrigger() { //only check if there is at least one subscription Loading Loading @@ -2397,19 +2393,27 @@ func distanceSubDelete(w http.ResponseWriter, r *http.Request) { func distanceSubListGet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") var response InlineNotificationSubscriptionList var distanceSubList NotificationSubscriptionList distanceSubList.ResourceURL = &LinkType{} distanceSubList.ResourceURL.Href = hostUrl.String() + basePath + "subscriptions/distance" response.NotificationSubscriptionList = &distanceSubList var response []InlineNotificationSubscriptionList var subscriptions []Subscription // distanceSubList.ResourceURL = &LinkType{} // distanceSubList.ResourceURL.Href = hostUrl.String() + basePath + "subscriptions/distance" // response.NotificationSubscriptionList = &distanceSubList keyName := baseKey + typeDistanceSubscription + "*" err := rc.ForEachJSONEntry(keyName, populateDistanceList, &distanceSubList) err := rc.ForEachJSONEntry(keyName, populateDistanceList, &subscriptions) if err != nil { log.Error(err.Error()) errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } response = append(response, InlineNotificationSubscriptionList{ NotificationSubscriptionList: &NotificationSubscriptionList{ Subscription: subscriptions, ResourceURL: &LinkType{ Href: hostUrl.String() + basePath + "subscriptions/distance", }, }, }) jsonResponse, err := json.Marshal(response) if err != nil { Loading @@ -2425,9 +2429,9 @@ func distanceSubGet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") vars := mux.Vars(r) var response InlineDistanceNotificationSubscription var distanceSub DistanceNotificationSubscription response.DistanceNotificationSubscription = &distanceSub var response InlineUserDistanceSubscription var distanceSub UserDistanceSubscription response.UserDistanceSubscription = &distanceSub jsonDistanceSub, _ := rc.JSONGetEntry(baseKey+typeDistanceSubscription+":"+vars["subscriptionId"], ".") if jsonDistanceSub == "" { Loading Loading @@ -2490,6 +2494,7 @@ func distanceSubPOST_test(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, "Mandatory MonitoredAddress parameter not present", http.StatusBadRequest) return } distanceSub.SubscriptionType = "userDistanceSubscription" newSubsId := nextDistanceSubscriptionIdAvailable nextDistanceSubscriptionIdAvailable++ subsIdStr := strconv.Itoa(newSubsId) Loading Loading @@ -2582,9 +2587,9 @@ func distanceSubPost(w http.ResponseWriter, r *http.Request) { func distanceSubPut(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") vars := mux.Vars(r) var response InlineDistanceNotificationSubscription var response InlineUserDistanceSubscription var body InlineDistanceNotificationSubscription var body InlineUserDistanceSubscription decoder := json.NewDecoder(r.Body) err := decoder.Decode(&body) if err != nil { Loading @@ -2592,7 +2597,7 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } distanceSub := body.DistanceNotificationSubscription distanceSub := body.UserDistanceSubscription if distanceSub == nil { log.Error("Body not present") Loading @@ -2611,11 +2616,6 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, "Mandatory DistanceCriteria parameter not present", http.StatusBadRequest) return } if distanceSub.Frequency == 0 { log.Error("Mandatory Frequency parameter not present") errHandlerProblemDetails(w, "Mandatory Frequency parameter not present", http.StatusBadRequest) return } if distanceSub.MonitoredAddress == nil { log.Error("Mandatory MonitoredAddress parameter not present") errHandlerProblemDetails(w, "Mandatory MonitoredAddress parameter not present", http.StatusBadRequest) Loading Loading @@ -2660,15 +2660,15 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { return } _ = rc.JSONSetEntry(baseKey+typeDistanceSubscription+":"+subsIdStr, ".", convertDistanceSubscriptionToJson(distanceSub)) _ = rc.JSONSetEntry(baseKey+typeDistanceSubscription+":"+subsIdStr, ".", convertDistanceSubscriptionToJson1(distanceSub)) //store the dynamic states of the subscription notifSent := distanceSubscriptionMap[subsId].NbNotificationsSent deregisterDistance(subsIdStr) registerDistance(distanceSub, subsIdStr) registerDistance1(distanceSub, subsIdStr) distanceSubscriptionMap[subsId].NbNotificationsSent = notifSent response.DistanceNotificationSubscription = distanceSub response.UserDistanceSubscription = distanceSub jsonResponse, err := json.Marshal(response) if err != nil { Loading @@ -2682,15 +2682,24 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { func populateDistanceList(key string, jsonInfo string, userData interface{}) error { distanceList := userData.(*NotificationSubscriptionList) var distanceInfo DistanceNotificationSubscription subscriptions := userData.(*[]Subscription) var distanceInfo UserDistanceSubscription // Format response err := json.Unmarshal([]byte(jsonInfo), &distanceInfo) if err != nil { return err } distanceList.DistanceNotificationSubscription = append(distanceList.DistanceNotificationSubscription, distanceInfo) href := "" if distanceInfo.Links != nil && distanceInfo.Links.Self != nil { href = distanceInfo.Links.Self.Href } // Create a Subscription instance sub := Subscription{ Href: href, SubscriptionType: distanceInfo.SubscriptionType, } *subscriptions = append(*subscriptions, sub) return nil } Loading go-apps/meep-loc-serv/server/model_inline_user_distance_notification_subscription.go +1 −1 Original line number Diff line number Diff line Loading @@ -24,5 +24,5 @@ package server type InlineUserDistanceNotification struct { UserDistanceNotification *UserDistanceNotification `json:"distanceNotificationSubscription,omitempty"` UserDistanceNotification *UserDistanceNotification `json:"UserDistanceNotification,omitempty"` } go-apps/meep-loc-serv/server/model_user_distance_subscription.go +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ package server type UserDistanceSubscription struct { Links *Links `json:"_links,omitempty"` ResourceURL string `json:"resourceURL,omitempty"` // URI exposed by the client on which to receive notifications via HTTP. See note 1. CallbackReference *CallbackReference `json:"callbackReference"` Loading Loading
go-apps/meep-loc-serv/server/loc-serv.go +211 −202 Original line number Diff line number Diff line Loading @@ -810,7 +810,7 @@ func checkNotificationDistancePeriodicTrigger1() { defer mutex.Unlock() //check all that applies for subsId, distanceCheck := range distanceSubscriptionMap1 { if distanceCheck != nil && distanceCheck.Subscription != nil { // if distanceCheck != nil && distanceCheck.Subscription != nil { // if distanceCheck.Subscription.Count == 0 || (distanceCheck.Subscription.Count != 0 && distanceCheck.NbNotificationsSent < distanceCheck.Subscription.Count) { // if distanceCheck.NextTts != 0 { // distanceCheck.NextTts-- Loading Loading @@ -957,10 +957,6 @@ func checkNotificationDistancePeriodicTrigger1() { } } } } // } func checkNotificationDistancePeriodicTrigger() { //only check if there is at least one subscription Loading Loading @@ -2397,19 +2393,27 @@ func distanceSubDelete(w http.ResponseWriter, r *http.Request) { func distanceSubListGet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") var response InlineNotificationSubscriptionList var distanceSubList NotificationSubscriptionList distanceSubList.ResourceURL = &LinkType{} distanceSubList.ResourceURL.Href = hostUrl.String() + basePath + "subscriptions/distance" response.NotificationSubscriptionList = &distanceSubList var response []InlineNotificationSubscriptionList var subscriptions []Subscription // distanceSubList.ResourceURL = &LinkType{} // distanceSubList.ResourceURL.Href = hostUrl.String() + basePath + "subscriptions/distance" // response.NotificationSubscriptionList = &distanceSubList keyName := baseKey + typeDistanceSubscription + "*" err := rc.ForEachJSONEntry(keyName, populateDistanceList, &distanceSubList) err := rc.ForEachJSONEntry(keyName, populateDistanceList, &subscriptions) if err != nil { log.Error(err.Error()) errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } response = append(response, InlineNotificationSubscriptionList{ NotificationSubscriptionList: &NotificationSubscriptionList{ Subscription: subscriptions, ResourceURL: &LinkType{ Href: hostUrl.String() + basePath + "subscriptions/distance", }, }, }) jsonResponse, err := json.Marshal(response) if err != nil { Loading @@ -2425,9 +2429,9 @@ func distanceSubGet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") vars := mux.Vars(r) var response InlineDistanceNotificationSubscription var distanceSub DistanceNotificationSubscription response.DistanceNotificationSubscription = &distanceSub var response InlineUserDistanceSubscription var distanceSub UserDistanceSubscription response.UserDistanceSubscription = &distanceSub jsonDistanceSub, _ := rc.JSONGetEntry(baseKey+typeDistanceSubscription+":"+vars["subscriptionId"], ".") if jsonDistanceSub == "" { Loading Loading @@ -2490,6 +2494,7 @@ func distanceSubPOST_test(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, "Mandatory MonitoredAddress parameter not present", http.StatusBadRequest) return } distanceSub.SubscriptionType = "userDistanceSubscription" newSubsId := nextDistanceSubscriptionIdAvailable nextDistanceSubscriptionIdAvailable++ subsIdStr := strconv.Itoa(newSubsId) Loading Loading @@ -2582,9 +2587,9 @@ func distanceSubPost(w http.ResponseWriter, r *http.Request) { func distanceSubPut(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") vars := mux.Vars(r) var response InlineDistanceNotificationSubscription var response InlineUserDistanceSubscription var body InlineDistanceNotificationSubscription var body InlineUserDistanceSubscription decoder := json.NewDecoder(r.Body) err := decoder.Decode(&body) if err != nil { Loading @@ -2592,7 +2597,7 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } distanceSub := body.DistanceNotificationSubscription distanceSub := body.UserDistanceSubscription if distanceSub == nil { log.Error("Body not present") Loading @@ -2611,11 +2616,6 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, "Mandatory DistanceCriteria parameter not present", http.StatusBadRequest) return } if distanceSub.Frequency == 0 { log.Error("Mandatory Frequency parameter not present") errHandlerProblemDetails(w, "Mandatory Frequency parameter not present", http.StatusBadRequest) return } if distanceSub.MonitoredAddress == nil { log.Error("Mandatory MonitoredAddress parameter not present") errHandlerProblemDetails(w, "Mandatory MonitoredAddress parameter not present", http.StatusBadRequest) Loading Loading @@ -2660,15 +2660,15 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { return } _ = rc.JSONSetEntry(baseKey+typeDistanceSubscription+":"+subsIdStr, ".", convertDistanceSubscriptionToJson(distanceSub)) _ = rc.JSONSetEntry(baseKey+typeDistanceSubscription+":"+subsIdStr, ".", convertDistanceSubscriptionToJson1(distanceSub)) //store the dynamic states of the subscription notifSent := distanceSubscriptionMap[subsId].NbNotificationsSent deregisterDistance(subsIdStr) registerDistance(distanceSub, subsIdStr) registerDistance1(distanceSub, subsIdStr) distanceSubscriptionMap[subsId].NbNotificationsSent = notifSent response.DistanceNotificationSubscription = distanceSub response.UserDistanceSubscription = distanceSub jsonResponse, err := json.Marshal(response) if err != nil { Loading @@ -2682,15 +2682,24 @@ func distanceSubPut(w http.ResponseWriter, r *http.Request) { func populateDistanceList(key string, jsonInfo string, userData interface{}) error { distanceList := userData.(*NotificationSubscriptionList) var distanceInfo DistanceNotificationSubscription subscriptions := userData.(*[]Subscription) var distanceInfo UserDistanceSubscription // Format response err := json.Unmarshal([]byte(jsonInfo), &distanceInfo) if err != nil { return err } distanceList.DistanceNotificationSubscription = append(distanceList.DistanceNotificationSubscription, distanceInfo) href := "" if distanceInfo.Links != nil && distanceInfo.Links.Self != nil { href = distanceInfo.Links.Self.Href } // Create a Subscription instance sub := Subscription{ Href: href, SubscriptionType: distanceInfo.SubscriptionType, } *subscriptions = append(*subscriptions, sub) return nil } Loading
go-apps/meep-loc-serv/server/model_inline_user_distance_notification_subscription.go +1 −1 Original line number Diff line number Diff line Loading @@ -24,5 +24,5 @@ package server type InlineUserDistanceNotification struct { UserDistanceNotification *UserDistanceNotification `json:"distanceNotificationSubscription,omitempty"` UserDistanceNotification *UserDistanceNotification `json:"UserDistanceNotification,omitempty"` }
go-apps/meep-loc-serv/server/model_user_distance_subscription.go +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ package server type UserDistanceSubscription struct { Links *Links `json:"_links,omitempty"` ResourceURL string `json:"resourceURL,omitempty"` // URI exposed by the client on which to receive notifications via HTTP. See note 1. CallbackReference *CallbackReference `json:"callbackReference"` Loading