diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-03-13 09:23:16 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2017-03-13 09:23:16 -0400 |
commit | e9c6cc269b5c9fe82e5f38d63344a07365bccd6b (patch) | |
tree | 711fefd3511dbd5a7f1a20225f00b766eb4808f7 /api/command_echo.go | |
parent | 8b0eedbbcd47ba09142c72a71969840aa6e121d2 (diff) | |
download | chat-e9c6cc269b5c9fe82e5f38d63344a07365bccd6b.tar.gz chat-e9c6cc269b5c9fe82e5f38d63344a07365bccd6b.tar.bz2 chat-e9c6cc269b5c9fe82e5f38d63344a07365bccd6b.zip |
Move command logic into app layer (#5617)
Diffstat (limited to 'api/command_echo.go')
-rw-r--r-- | api/command_echo.go | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/api/command_echo.go b/api/command_echo.go deleted file mode 100644 index 2e931e414..000000000 --- a/api/command_echo.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -package api - -import ( - "strconv" - "strings" - "time" - - l4g "github.com/alecthomas/log4go" - "github.com/mattermost/platform/app" - "github.com/mattermost/platform/model" -) - -var echoSem chan bool - -type EchoProvider struct { -} - -const ( - CMD_ECHO = "echo" -) - -func init() { - RegisterCommandProvider(&EchoProvider{}) -} - -func (me *EchoProvider) GetTrigger() string { - return CMD_ECHO -} - -func (me *EchoProvider) GetCommand(c *Context) *model.Command { - return &model.Command{ - Trigger: CMD_ECHO, - AutoComplete: true, - AutoCompleteDesc: c.T("api.command_echo.desc"), - AutoCompleteHint: c.T("api.command_echo.hint"), - DisplayName: c.T("api.command_echo.name"), - } -} - -func (me *EchoProvider) DoCommand(c *Context, args *model.CommandArgs, message string) *model.CommandResponse { - if len(message) == 0 { - return &model.CommandResponse{Text: c.T("api.command_echo.message.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} - } - - maxThreads := 100 - - delay := 0 - if endMsg := strings.LastIndex(message, "\""); string(message[0]) == "\"" && endMsg > 1 { - if checkDelay, err := strconv.Atoi(strings.Trim(message[endMsg:], " \"")); err == nil { - delay = checkDelay - } - message = message[1:endMsg] - } else if strings.Index(message, " ") > -1 { - delayIdx := strings.LastIndex(message, " ") - delayStr := strings.Trim(message[delayIdx:], " ") - - if checkDelay, err := strconv.Atoi(delayStr); err == nil { - delay = checkDelay - message = message[:delayIdx] - } - } - - if delay > 10000 { - return &model.CommandResponse{Text: c.T("api.command_echo.delay.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} - } - - if echoSem == nil { - // We want one additional thread allowed so we never reach channel lockup - echoSem = make(chan bool, maxThreads+1) - } - - if len(echoSem) >= maxThreads { - return &model.CommandResponse{Text: c.T("api.command_echo.high_volume.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} - } - - echoSem <- true - go func() { - defer func() { <-echoSem }() - post := &model.Post{} - post.ChannelId = args.ChannelId - post.RootId = args.RootId - post.ParentId = args.ParentId - post.Message = message - post.UserId = c.Session.UserId - - time.Sleep(time.Duration(delay) * time.Second) - - if _, err := app.CreatePost(post, c.TeamId, true); err != nil { - l4g.Error(c.T("api.command_echo.create.app_error"), err) - } - }() - - return &model.CommandResponse{} -} |