Commit a48bef77 authored by Mubeena Ishaq's avatar Mubeena Ishaq
Browse files

fix subscriptions GET method in meep-vis

parent edb6466f
Loading
Loading
Loading
Loading
+0 −29
Original line number Diff line number Diff line
@@ -57,32 +57,3 @@ func convertV2xMsgPublicationToJson(v2xMsgPublication *V2xMsgPublication) string
	}
	return string(jsonInfo)
}

func convertSubscriptionLinkListToJson(subscriptionLinkList *SubscriptionLinkList) string {
	jsonInfo, err := json.Marshal(*subscriptionLinkList)
	if err != nil {
		log.Error(err.Error())
		return ""
	}
	return string(jsonInfo)
}

func convertJsonToUuUniSubscription(jsonInfo string) *ProvChgUuUniSubscription {
	var obj ProvChgUuUniSubscription
	err := json.Unmarshal([]byte(jsonInfo), &obj)
	if err != nil {
		log.Error(err.Error())
		return nil
	}
	return &obj
}

func convertJsonToV2xMsgSubscription(jsonInfo string) *V2xMsgSubscription {
	var obj V2xMsgSubscription
	err := json.Unmarshal([]byte(jsonInfo), &obj)
	if err != nil {
		log.Error(err.Error())
		return nil
	}
	return &obj
}
+41 −70
Original line number Diff line number Diff line
@@ -219,33 +219,6 @@ func sendTerminationConfirmation(appInstanceId string) error {
	return nil
}

func validateQueryParams(params url.Values, validParamList []string) bool {
	for param := range params {
		found := false
		for _, validParam := range validParamList {
			if param == validParam {
				found = true
				break
			}
		}
		if !found {
			log.Error("Invalid query param: ", param)
			return false
		}
	}
	return true
}

func validateQueryParamValue(val string, validValues []string) bool {
	for _, validVal := range validValues {
		if val == validVal {
			return true
		}
	}
	log.Error("Invalid query param value: ", val)
	return false
}

func subscribeAppTermination(appInstanceId string) error {
	var sub asc.AppTerminationNotificationSubscription
	sub.SubscriptionType = "AppTerminationNotificationSubscription"
@@ -1039,30 +1012,17 @@ func createSubscriptionLinkList(subType string) *SubscriptionLinkList {
	mutex.Lock()
	defer mutex.Unlock()

	//loop through v2x_msg map
	//loop through cell_change map
	if subType == "" || subType == "v2x_msg" {
		for _, v2xMsgSubscription := range v2xMsgSubscriptionMap {
			if v2xMsgSubscription != nil {
		for _, v2xSubscription := range v2xMsgSubscriptionMap {
			if v2xSubscription != nil {
				var subscription SubscriptionLinkListLinksSubscriptions
				subscription.Href = v2xMsgSubscription.Links.Self.Href
				subscription.Href = v2xSubscription.Links.Self.Href
				subscription.SubscriptionType = V2X_MSG
				subscriptionLinkList.Links.Subscriptions = append(subscriptionLinkList.Links.Subscriptions, subscription)
			}
		}
	}

	//loop through prov_chg_uu_uni map
	if subType == "" || subType == "prov_chg_uu_uni" {
		for _, provChgUuUniSubscription := range provChgUuUniSubscriptionMap {
			if provChgUuUniSubscription != nil {
				var subscription SubscriptionLinkListLinksSubscriptions
				subscription.Href = provChgUuUniSubscription.Links.Self.Href
				subscription.SubscriptionType = PROV_CHG_UU_UNI
				subscriptionLinkList.Links.Subscriptions = append(subscriptionLinkList.Links.Subscriptions, subscription)
			}
		}
	}

	//no other maps to go through

	return subscriptionLinkList
@@ -1070,21 +1030,45 @@ func createSubscriptionLinkList(subType string) *SubscriptionLinkList {

func subGET(w http.ResponseWriter, r *http.Request) {
	log.Info("subGet")

	w.Header().Set("Content-Type", "application/json; charset=UTF-8")

	u, _ := url.Parse(r.URL.String())
	log.Info("url: ", u.RequestURI())
	q := u.Query()
	validQueryParams := []string{"subscriptionType"}
	if !validateQueryParams(q, validQueryParams) {
	subType := q.Get("subscription_type")

	validQueryParams := []string{"subscription_type"}
	validQueryParamValues := []string{"prov_chg_uu_uni", "prov_chg_uu_mbms", "prov_chg_pc5", "v2x_msg"}

	//look for all query parameters to reject if any invalid ones
	found := false
	for queryParam, values := range q {
		found = false
		for _, validQueryParam := range validQueryParams {
			if queryParam == validQueryParam {
				found = true
				break
			}
		}
		if !found {
			log.Error("Query param not valid: ", queryParam)
			w.WriteHeader(http.StatusBadRequest)
			return
		}

	// Get & validate query param values
	subType := q.Get("subscriptionType")
	if !validateQueryParamValue(subType, []string{"", "prov_chg_uu_uni", "prov_chg_uu_mbms", "prov_chg_pc5", "v2x_msg"}) {
		for _, validQueryParamValue := range validQueryParamValues {
			found = false
			for _, value := range values {
				if value == validQueryParamValue {
					found = true
					break
				}
			}
			if found {
				break
			}
		}
		if !found {
			log.Error("Query param not valid: ", queryParam)
			w.WriteHeader(http.StatusBadRequest)
			return
		}
@@ -1093,20 +1077,7 @@ func subGET(w http.ResponseWriter, r *http.Request) {

	response := createSubscriptionLinkList(subType)

	// Find subscriptions by type
	subscriptionType := ""
	if subType != "" {
		if subType == "prov_chg_uu_uni" {
			subscriptionType = PROV_CHG_UU_UNI
		} else if subType == "prov_chg_uu_mbms" {
			subscriptionType = PROV_CHG_UU_MBMS
		} else if subType == "prov_chg_pc5" {
			subscriptionType = PROV_CHG_PC5
		} else if subType == "v2x_msg" {
			subscriptionType = V2X_MSG
		}
	}
	subList, err := subMgr.GetFilteredSubscriptions("", subscriptionType)
	jsonResponse, err := json.Marshal(response)
	if err != nil {
		log.Error(err.Error())
		errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError)