Commit 49b71e39 authored by M. Hamza's avatar M. Hamza
Browse files

add duplicate session check func in MTS

parent faaa864d
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -621,6 +621,21 @@ func mtsSessionPost(w http.ResponseWriter, r *http.Request) {
		}
	}

	if *requestBody.RequestType == 1 && requestBody.FlowFilter != nil {
		sessionSlice := make([]MtsSessionInfoFlowFilter, 0)
		for index, singleSessionFilter := range requestBody.FlowFilter {
			if index == 0 {
				sessionSlice = append(sessionSlice, singleSessionFilter)
			} else {
				sessionSlice, err = sessionContains(sessionSlice, singleSessionFilter)
				if err != nil {
					errHandlerProblemDetails(w, err.Error(), http.StatusBadRequest)
					return
				}
			}
		}
	}

	if *requestBody.MtsMode > 4 {
		log.Error("Valid mtsMode value should be present")
		errHandlerProblemDetails(w, "Valid mtsMode value should be present in the request body.", http.StatusBadRequest)
@@ -1051,6 +1066,21 @@ func mtsSessionPut(w http.ResponseWriter, r *http.Request) {
		}
	}

	if *requestBodyPut.RequestType == 1 && requestBodyPut.FlowFilter != nil {
		sessionSlice := make([]MtsSessionInfoFlowFilter, 0)
		for index, singleSessionFilter := range requestBodyPut.FlowFilter {
			if index == 0 {
				sessionSlice = append(sessionSlice, singleSessionFilter)
			} else {
				sessionSlice, err = sessionContains(sessionSlice, singleSessionFilter)
				if err != nil {
					errHandlerProblemDetails(w, err.Error(), http.StatusBadRequest)
					return
				}
			}
		}
	}

	if requestBodyPut.MtsMode != nil {
		if *requestBodyPut.MtsMode > 4 {
			log.Error("Valid mtsMode value should be present")
@@ -1332,3 +1362,15 @@ func errHandlerProblemDetails(w http.ResponseWriter, error string, code int) {
	w.WriteHeader(code)
	fmt.Fprint(w, jsonResponse)
}

func sessionContains(sessionSlice []MtsSessionInfoFlowFilter, singleSessionFilter MtsSessionInfoFlowFilter) ([]MtsSessionInfoFlowFilter, error) {
	for _, sessionSlice1 := range sessionSlice {
		if reflect.DeepEqual(singleSessionFilter, sessionSlice1) {
			err := errors.New("SessionFilter contains duplicate sessions")
			return nil, err
		} else {
			sessionSlice = append(sessionSlice, singleSessionFilter)
		}
	}
	return sessionSlice, nil
}