diff options
author | Joram Wilander <jwawilander@gmail.com> | 2018-01-23 11:04:44 -0500 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2018-01-23 08:04:44 -0800 |
commit | 4f4a765e7d0bbfdfecc0c52ae4be35f8d3b737ca (patch) | |
tree | 063aa55db9299f09d4176b201db658f1d7acced5 /api4/emoji.go | |
parent | 599991ea731953f772824ce3ed1e591246aa004f (diff) | |
download | chat-4f4a765e7d0bbfdfecc0c52ae4be35f8d3b737ca.tar.gz chat-4f4a765e7d0bbfdfecc0c52ae4be35f8d3b737ca.tar.bz2 chat-4f4a765e7d0bbfdfecc0c52ae4be35f8d3b737ca.zip |
ABC-90 Add POST /emoji/search and GET /emoji/autocomplete API endpoints (#8125)
* Add POST /emoji/search and GET /emoji/autocomplete API endpoints
* Add constant to be clearer
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))) + } +} |