func (m *MessagesController) addOrRemoveTag(ctx *gin.Context, messageIn *messageJSON, message models.Message, user models.User) { if !user.IsSystem { ctx.JSON(http.StatusForbidden, gin.H{"error": "Invalid Action for non-system user"}) return } if messageIn.Text == "" { ctx.AbortWithError(http.StatusBadRequest, errors.New("Invalid Text for tag")) return } if messageIn.Action == "tag" { err := message.AddTag(messageIn.Text) if err != nil { log.Errorf("Error while adding a tag to a message %s", err) ctx.AbortWithError(http.StatusInternalServerError, err) return } } else if messageIn.Action == "untag" { err := message.RemoveTag(messageIn.Text) if err != nil { log.Errorf("Error while remove a tag from a message %s", err) ctx.AbortWithError(http.StatusInternalServerError, err) return } } else { ctx.AbortWithError(http.StatusBadRequest, errors.New("Invalid action : "+messageIn.Action)) return } go models.WSMessage(&models.WSMessageJSON{Action: messageIn.Action, Username: user.Username, Message: message}) ctx.JSON(http.StatusCreated, "") }