示例#1
0
文件: messages.go 项目: ovh/tatcli
func (ui *tatui) removeLabel(msg tat.Message, label string) error {
	var err error
	if label == "doing" && msg.ContainsLabel("doing") {
		internal.Client().MessageUntask(msg.Topic, msg.ID)
	} else {
		internal.Client().MessageUnlabel(msg.Topic, msg.ID, label)
		if label == "done" {
			for _, l := range msg.Labels {
				if strings.HasPrefix(l.Text, "done:") {
					internal.Client().MessageUnlabel(msg.Topic, msg.ID, l.Text)
				}
			}
		}
	}
	return err
}
示例#2
0
文件: hook.go 项目: ovh/tat
func matchCriteria(m tat.Message, c tat.FilterCriteria) bool {
	/*
		bson:"label" json:"label,omitempty
		bson:"notLabel" json:"notLabel,omitempty
		bson:"andLabel" json:"andLabel,omitempty
		bson:"tag" json:"tag,omitempty
		bson:"notTag" json:"notTag,omitempty
		bson:"andTag" json:"andTag,omitempty
		bson:"username" json:"username,omitempty
		bson:"onlyMsgRoot" json:"onlyMsgRoot,omitempty
	*/

	if c.OnlyMsgRoot && m.InReplyOfID != "" {
		return false
	}

	if c.Label != "" {
		labels := strings.Split(c.Label, ",")
		ok := false
		for _, l := range labels {
			if m.ContainsLabel(l) {
				ok = true
				break
			}
		}
		if !ok {
			return false
		}
	}

	if c.NotLabel != "" {
		notLabels := strings.Split(c.NotLabel, ",")
		for _, l := range notLabels {
			if m.ContainsLabel(l) {
				return false
			}
		}
	}

	if c.AndLabel != "" {
		andLabels := strings.Split(c.AndLabel, ",")
		ok := 0
		for _, l := range andLabels {
			if m.ContainsLabel(l) {
				ok++
			}
		}
		if ok != len(andLabels) {
			return false
		}
	}

	if c.Tag != "" {
		tags := strings.Split(c.Tag, ",")
		ok := false
		for _, l := range tags {
			if m.ContainsTag(l) {
				ok = true
				break
			}
		}
		if !ok {
			return false
		}
	}

	if c.NotTag != "" {
		notTags := strings.Split(c.NotTag, ",")
		for _, l := range notTags {
			if m.ContainsTag(l) {
				return false
			}
		}
	}

	if c.AndTag != "" {
		andTags := strings.Split(c.AndTag, ",")
		ok := 0
		for _, l := range andTags {
			if m.ContainsTag(l) {
				ok++
			}
		}
		if ok != len(andTags) {
			return false
		}
	}

	if c.Username != "" && c.Username != m.Author.Username {
		return false
	}

	return true
}