func (m *MessagesController) addOrRemoveLabel(ctx *gin.Context, messageIn *messageJSON, message models.Message, user models.User) { if messageIn.Text == "" { ctx.AbortWithError(http.StatusBadRequest, errors.New("Invalid Text for label")) return } info := gin.H{} if messageIn.Action == "label" { addedLabel, err := message.AddLabel(messageIn.Text, messageIn.Option) if err != nil { log.Errorf("Error while adding a label to a message %s", err) ctx.AbortWithError(http.StatusInternalServerError, err) return } info = gin.H{"info": fmt.Sprintf("label %s added to message", addedLabel.Text), "label": addedLabel, "message": message} } else if messageIn.Action == "unlabel" { err := message.RemoveLabel(messageIn.Text) if err != nil { log.Errorf("Error while remove a label from a message %s", err) ctx.AbortWithError(http.StatusInternalServerError, err) return } info = gin.H{"info": fmt.Sprintf("label %s removed from message", messageIn.Text), "message": message} } 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, info) }