Add option to trigger outgoing webhook if first word starts with trigger word (#3611)

Этот коммит содержится в:
Pierre Rudloff
2016-07-26 14:04:28 +02:00
коммит произвёл Christopher Speller
родитель c56b429e1d
Коммит 564dffec35
8 изменённых файлов: 123 добавлений и 4 удалений

Просмотреть файл

@@ -9,6 +9,7 @@ import (
"io"
"net/url"
"strconv"
"strings"
)
type OutgoingWebhook struct {
@@ -21,6 +22,7 @@ type OutgoingWebhook struct {
ChannelId string `json:"channel_id"`
TeamId string `json:"team_id"`
TriggerWords StringArray `json:"trigger_words"`
TriggerWhen int `json:"trigger_when"`
CallbackURLs StringArray `json:"callback_urls"`
DisplayName string `json:"display_name"`
Description string `json:"description"`
@@ -171,6 +173,10 @@ func (o *OutgoingWebhook) IsValid() *AppError {
return NewLocAppError("OutgoingWebhook.IsValid", "model.outgoing_hook.is_valid.content_type.app_error", nil, "")
}
if o.TriggerWhen > 1 {
return NewLocAppError("OutgoingWebhook.IsValid", "model.outgoing_hook.is_valid.content_type.app_error", nil, "")
}
return nil
}
@@ -204,3 +210,17 @@ func (o *OutgoingWebhook) HasTriggerWord(word string) bool {
return false
}
func (o *OutgoingWebhook) TriggerWordStartsWith(word string) bool {
if len(o.TriggerWords) == 0 || len(word) == 0 {
return false
}
for _, trigger := range o.TriggerWords {
if strings.HasPrefix(word, trigger) {
return true
}
}
return false
}

Просмотреть файл

@@ -163,3 +163,14 @@ func TestOutgoingWebhookPreUpdate(t *testing.T) {
o := OutgoingWebhook{}
o.PreUpdate()
}
func TestOutgoingWebhookTriggerWordStartsWith(t *testing.T) {
o := OutgoingWebhook{Id: NewId()}
o.TriggerWords = append(o.TriggerWords, "foo")
if !o.TriggerWordStartsWith("foobar") {
t.Fatal("Should return true")
}
if o.TriggerWordStartsWith("barfoo") {
t.Fatal("Should return false")
}
}