diff options
Diffstat (limited to 'api4/emoji.go')
-rw-r--r-- | api4/emoji.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/api4/emoji.go b/api4/emoji.go index 049e77d3c..30d59125b 100644 --- a/api4/emoji.go +++ b/api4/emoji.go @@ -11,9 +11,15 @@ import ( "github.com/mattermost/mattermost-server/model" ) +const ( + EMOJI_MAX_AUTOCOMPLETE_ITEMS = 100 +) + func (api *API) InitEmoji() { api.BaseRoutes.Emojis.Handle("", api.ApiSessionRequired(createEmoji)).Methods("POST") api.BaseRoutes.Emojis.Handle("", api.ApiSessionRequired(getEmojiList)).Methods("GET") + api.BaseRoutes.Emojis.Handle("/search", api.ApiSessionRequired(searchEmojis)).Methods("POST") + api.BaseRoutes.Emojis.Handle("/autocomplete", api.ApiSessionRequired(autocompleteEmojis)).Methods("GET") api.BaseRoutes.Emoji.Handle("", api.ApiSessionRequired(deleteEmoji)).Methods("DELETE") api.BaseRoutes.Emoji.Handle("", api.ApiSessionRequired(getEmoji)).Methods("GET") api.BaseRoutes.Emoji.Handle("/image", api.ApiSessionRequiredTrustRequester(getEmojiImage)).Methods("GET") @@ -162,3 +168,41 @@ func getEmojiImage(c *Context, w http.ResponseWriter, r *http.Request) { w.Header().Set("Cache-Control", "max-age=2592000, public") w.Write(image) } + +func searchEmojis(c *Context, w http.ResponseWriter, r *http.Request) { + emojiSearch := model.EmojiSearchFromJson(r.Body) + if emojiSearch == nil { + c.SetInvalidParam("term") + return + } + + if emojiSearch.Term == "" { + c.SetInvalidParam("term") + return + } + + emojis, err := c.App.SearchEmoji(emojiSearch.Term, emojiSearch.PrefixOnly, PER_PAGE_MAXIMUM) + if err != nil { + c.Err = err + return + } else { + w.Write([]byte(model.EmojiListToJson(emojis))) + } +} + +func autocompleteEmojis(c *Context, w http.ResponseWriter, r *http.Request) { + name := r.URL.Query().Get("name") + + if name == "" { + c.SetInvalidUrlParam("name") + return + } + + emojis, err := c.App.SearchEmoji(name, true, EMOJI_MAX_AUTOCOMPLETE_ITEMS) + if err != nil { + c.Err = err + return + } else { + w.Write([]byte(model.EmojiListToJson(emojis))) + } +} |