summaryrefslogtreecommitdiffstats
path: root/model/outgoing_webhook.go
diff options
context:
space:
mode:
authorPierre Rudloff <contact@rudloff.pro>2016-07-26 14:04:28 +0200
committerChristopher Speller <crspeller@gmail.com>2016-07-26 08:04:28 -0400
commit564dffec35d2ab6772c2561f28d9ad9a2bcbeb40 (patch)
tree6e6caeee6f96707bc5faad7f984e673026e7806e /model/outgoing_webhook.go
parentc56b429e1dee257bac69de1db55cafee01ccd005 (diff)
downloadchat-564dffec35d2ab6772c2561f28d9ad9a2bcbeb40.tar.gz
chat-564dffec35d2ab6772c2561f28d9ad9a2bcbeb40.tar.bz2
chat-564dffec35d2ab6772c2561f28d9ad9a2bcbeb40.zip
Add option to trigger outgoing webhook if first word starts with trigger word (#3611)
Diffstat (limited to 'model/outgoing_webhook.go')
-rw-r--r--model/outgoing_webhook.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/model/outgoing_webhook.go b/model/outgoing_webhook.go
index ee7a32f1f..ec2ed75c7 100644
--- a/model/outgoing_webhook.go
+++ b/model/outgoing_webhook.go
@@ -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
+}