diff options
author | Daniel Schalla <daniel@schalla.me> | 2018-04-17 14:20:47 +0200 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2018-04-17 08:20:47 -0400 |
commit | 997df03ac1455785b7a39e40edcd67b3b3e86f9e (patch) | |
tree | e11a4f7712e0b5379c89cc415e0be1396b6057b9 /api4/post.go | |
parent | 3a4c7603b3ce35ab247b4dddaf7a2506375ba2c9 (diff) | |
download | chat-997df03ac1455785b7a39e40edcd67b3b3e86f9e.tar.gz chat-997df03ac1455785b7a39e40edcd67b3b3e86f9e.tar.bz2 chat-997df03ac1455785b7a39e40edcd67b3b3e86f9e.zip |
Initial Commit of Ephemeral Message Support for System Admins (#8611)
Fixed Permission Test
Fixed and extended ephemeral message tests; Removed Online/Activity Updates
Set Create Time to current time
gofmt
Diffstat (limited to 'api4/post.go')
-rw-r--r-- | api4/post.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/api4/post.go b/api4/post.go index 80088d9ef..189edfc20 100644 --- a/api4/post.go +++ b/api4/post.go @@ -4,6 +4,7 @@ package api4 import ( + "encoding/json" "net/http" "strconv" "time" @@ -15,6 +16,7 @@ func (api *API) InitPost() { api.BaseRoutes.Posts.Handle("", api.ApiSessionRequired(createPost)).Methods("POST") api.BaseRoutes.Post.Handle("", api.ApiSessionRequired(getPost)).Methods("GET") api.BaseRoutes.Post.Handle("", api.ApiSessionRequired(deletePost)).Methods("DELETE") + api.BaseRoutes.Posts.Handle("/ephemeral", api.ApiSessionRequired(createEphemeralPost)).Methods("POST") api.BaseRoutes.Post.Handle("/thread", api.ApiSessionRequired(getPostThread)).Methods("GET") api.BaseRoutes.Post.Handle("/files/info", api.ApiSessionRequired(getFileInfosForPost)).Methods("GET") api.BaseRoutes.PostsForChannel.Handle("", api.ApiSessionRequired(getPostsForChannel)).Methods("GET") @@ -69,6 +71,34 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) { w.Write([]byte(c.App.PostWithProxyAddedToImageURLs(rp).ToJson())) } +func createEphemeralPost(c *Context, w http.ResponseWriter, r *http.Request) { + ephRequest := model.PostEphemeral{} + + json.NewDecoder(r.Body).Decode(&ephRequest) + if ephRequest.UserID == "" { + c.SetInvalidParam("user_id") + return + } + + if ephRequest.Post == nil { + c.SetInvalidParam("post") + return + } + + ephRequest.Post.UserId = c.Session.UserId + ephRequest.Post.CreateAt = model.GetMillis() + + if !c.App.SessionHasPermissionTo(c.Session, model.PERMISSION_CREATE_POST_EPHEMERAL) { + c.SetPermissionError(model.PERMISSION_CREATE_POST_EPHEMERAL) + return + } + + rp := c.App.SendEphemeralPost(ephRequest.UserID, c.App.PostWithProxyRemovedFromImageURLs(ephRequest.Post)) + + w.WriteHeader(http.StatusCreated) + w.Write([]byte(c.App.PostWithProxyAddedToImageURLs(rp).ToJson())) +} + func getPostsForChannel(c *Context, w http.ResponseWriter, r *http.Request) { c.RequireChannelId() if c.Err != nil { |