From 060b9f92c382052276fa784065af6b18eda70669 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Tue, 28 Mar 2017 08:07:15 -0400 Subject: Remove API endpoints being deprecated in 3.8 (#5880) --- api/deprecated.go | 142 +--------------------------- api/deprecated_test.go | 80 ---------------- i18n/en.json | 4 + model/client.go | 43 --------- webapp/tests/client/client_channel.test.jsx | 31 ------ webapp/tests/client/client_user.test.jsx | 17 ---- 6 files changed, 5 insertions(+), 312 deletions(-) diff --git a/api/deprecated.go b/api/deprecated.go index 46f016420..eca6f78f8 100644 --- a/api/deprecated.go +++ b/api/deprecated.go @@ -4,152 +4,12 @@ package api import ( - "net/http" - l4g "github.com/alecthomas/log4go" - "github.com/gorilla/mux" - "github.com/mattermost/platform/app" - "github.com/mattermost/platform/model" "github.com/mattermost/platform/utils" ) // ONLY FOR APIs SCHEDULED TO BE DEPRECATED func InitDeprecated() { - l4g.Debug(utils.T("api.channel.init.debug")) - - /* start - SCHEDULED FOR DEPRECATION IN 3.7 */ - BaseRoutes.Channels.Handle("/more", ApiUserRequired(getMoreChannels)).Methods("GET") - /* end - SCHEDULED FOR DEPRECATION IN 3.7 */ - - /* start - SCHEDULED FOR DEPRECATION IN 3.8 */ - BaseRoutes.NeedChannel.Handle("/update_last_viewed_at", ApiUserRequired(updateLastViewedAt)).Methods("POST") - BaseRoutes.NeedChannel.Handle("/set_last_viewed_at", ApiUserRequired(setLastViewedAt)).Methods("POST") - BaseRoutes.Users.Handle("/status/set_active_channel", ApiUserRequired(setActiveChannel)).Methods("POST") - /* end - SCHEDULED FOR DEPRECATION IN 3.8 */ -} - -func getMoreChannels(c *Context, w http.ResponseWriter, r *http.Request) { - - // user is already in the team - if !app.SessionHasPermissionToTeam(c.Session, c.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) { - c.SetPermissionError(model.PERMISSION_LIST_TEAM_CHANNELS) - return - } - - if result := <-app.Srv.Store.Channel().GetMoreChannels(c.TeamId, c.Session.UserId, 0, 100000); result.Err != nil { - c.Err = result.Err - return - } else if HandleEtag(result.Data.(*model.ChannelList).Etag(), "Get More Channels (deprecated)", w, r) { - return - } else { - data := result.Data.(*model.ChannelList) - w.Header().Set(model.HEADER_ETAG_SERVER, data.Etag()) - w.Write([]byte(data.ToJson())) - } -} - -func updateLastViewedAt(c *Context, w http.ResponseWriter, r *http.Request) { - params := mux.Vars(r) - id := params["channel_id"] - - data := model.StringInterfaceFromJson(r.Body) - - var active bool - var ok bool - if active, ok = data["active"].(bool); !ok { - active = true - } - - doClearPush := false - if *utils.Cfg.EmailSettings.SendPushNotifications && !c.Session.IsMobileApp() && active { - if result := <-app.Srv.Store.User().GetUnreadCountForChannel(c.Session.UserId, id); result.Err != nil { - l4g.Error(utils.T("api.channel.update_last_viewed_at.get_unread_count_for_channel.error"), c.Session.UserId, id, result.Err.Error()) - } else { - if result.Data.(int64) > 0 { - doClearPush = true - } - } - } - - go func() { - if err := app.SetActiveChannel(c.Session.UserId, id); err != nil { - l4g.Error(err.Error()) - } - }() - - app.Srv.Store.Channel().UpdateLastViewedAt([]string{id}, c.Session.UserId) - - // Must be after update so that unread count is correct - if doClearPush { - go app.ClearPushNotification(c.Session.UserId, id) - } - - chanPref := model.Preference{ - UserId: c.Session.UserId, - Category: c.TeamId, - Name: model.PREFERENCE_NAME_LAST_CHANNEL, - Value: id, - } - - teamPref := model.Preference{ - UserId: c.Session.UserId, - Category: model.PREFERENCE_CATEGORY_LAST, - Name: model.PREFERENCE_NAME_LAST_TEAM, - Value: c.TeamId, - } - - app.Srv.Store.Preference().Save(&model.Preferences{teamPref, chanPref}) - - result := make(map[string]string) - result["id"] = id - w.Write([]byte(model.MapToJson(result))) -} - -func setLastViewedAt(c *Context, w http.ResponseWriter, r *http.Request) { - params := mux.Vars(r) - id := params["channel_id"] - - data := model.StringInterfaceFromJson(r.Body) - newLastViewedAt := int64(data["last_viewed_at"].(float64)) - - app.Srv.Store.Channel().SetLastViewedAt(id, c.Session.UserId, newLastViewedAt) - - chanPref := model.Preference{ - UserId: c.Session.UserId, - Category: c.TeamId, - Name: model.PREFERENCE_NAME_LAST_CHANNEL, - Value: id, - } - - teamPref := model.Preference{ - UserId: c.Session.UserId, - Category: model.PREFERENCE_CATEGORY_LAST, - Name: model.PREFERENCE_NAME_LAST_TEAM, - Value: c.TeamId, - } - - app.Srv.Store.Preference().Save(&model.Preferences{teamPref, chanPref}) - - result := make(map[string]string) - result["id"] = id - w.Write([]byte(model.MapToJson(result))) -} - -func setActiveChannel(c *Context, w http.ResponseWriter, r *http.Request) { - data := model.MapFromJson(r.Body) - - var channelId string - var ok bool - if channelId, ok = data["channel_id"]; !ok || len(channelId) > 26 { - c.SetInvalidParam("setActiveChannel", "channel_id") - return - } - - if err := app.SetActiveChannel(c.Session.UserId, channelId); err != nil { - c.Err = err - return - } - - ReturnStatusOK(w) + l4g.Debug(utils.T("api.deprecated.init.debug")) } diff --git a/api/deprecated_test.go b/api/deprecated_test.go index ee2ce0b2c..b3249a58d 100644 --- a/api/deprecated_test.go +++ b/api/deprecated_test.go @@ -2,83 +2,3 @@ // See License.txt for license information. package api - -import ( - "testing" - - "github.com/mattermost/platform/model" -) - -func TestGetMoreChannel(t *testing.T) { - th := Setup().InitBasic() - Client := th.BasicClient - team := th.BasicTeam - - channel1 := &model.Channel{DisplayName: "A Test API Name", Name: "a" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id} - channel1 = Client.Must(Client.CreateChannel(channel1)).Data.(*model.Channel) - - channel2 := &model.Channel{DisplayName: "B Test API Name", Name: "a" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id} - channel2 = Client.Must(Client.CreateChannel(channel2)).Data.(*model.Channel) - - th.LoginBasic2() - - rget := Client.Must(Client.GetMoreChannels("")) - channels := rget.Data.(*model.ChannelList) - - if (*channels)[0].DisplayName != channel1.DisplayName { - t.Fatal("full name didn't match") - } - - if (*channels)[1].DisplayName != channel2.DisplayName { - t.Fatal("full name didn't match") - } - - // test etag caching - if cache_result, err := Client.GetMoreChannels(rget.Etag); err != nil { - t.Fatal(err) - } else if cache_result.Data.(*model.ChannelList) != nil { - t.Log(cache_result.Data) - t.Fatal("cache should be empty") - } -} - -/* -func TestSetActiveChannel(t *testing.T) { - th := Setup().InitBasic() - Client := th.BasicClient - - if _, err := Client.SetActiveChannel(th.BasicChannel.Id); err != nil { - t.Fatal(err) - } - - status, _ := GetStatus(th.BasicUser.Id) - if status.ActiveChannel != th.BasicChannel.Id { - t.Fatal("active channel should be set") - } - - if _, err := Client.SetActiveChannel(""); err != nil { - t.Fatal(err) - } - - status, _ = GetStatus(th.BasicUser.Id) - if status.ActiveChannel != "" { - t.Fatal("active channel should be blank") - } - - if _, err := Client.SetActiveChannel("123456789012345678901234567890"); err == nil { - t.Fatal("should have failed, id too long") - } - - if _, err := Client.UpdateLastViewedAt(th.BasicChannel.Id, true); err != nil { - t.Fatal(err) - } - - time.Sleep(500 * time.Millisecond) - - status, _ = GetStatus(th.BasicUser.Id) - need to check if offline to catch race - if status.Status != model.STATUS_OFFLINE && status.ActiveChannel != th.BasicChannel.Id { - t.Fatal("active channel should be set") - } -} -*/ diff --git a/i18n/en.json b/i18n/en.json index 36ac0835f..2a24de825 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -79,6 +79,10 @@ "id": "api.admin.get_brand_image.storage.app_error", "translation": "Image storage is not configured." }, + { + "id": "api.deprecated.init.debug", + "translation": "Initializing deprecated API routes" + }, { "id": "api.admin.init.debug", "translation": "Initializing admin API routes" diff --git a/model/client.go b/model/client.go index 772265843..74793c5eb 100644 --- a/model/client.go +++ b/model/client.go @@ -1191,17 +1191,6 @@ func (c *Client) GetChannel(id, etag string) (*Result, *AppError) { } } -// SCHEDULED FOR DEPRECATION IN 3.7 - use GetMoreChannelsPage instead -func (c *Client) GetMoreChannels(etag string) (*Result, *AppError) { - if r, err := c.DoApiGet(c.GetTeamRoute()+"/channels/more", "", etag); err != nil { - return nil, err - } else { - defer closeBody(r) - return &Result{r.Header.Get(HEADER_REQUEST_ID), - r.Header.Get(HEADER_ETAG_SERVER), ChannelListFromJson(r.Body)}, nil - } -} - // GetMoreChannelsPage will return a page of open channels the user is not in based on // the provided offset and limit. Must be authenticated. func (c *Client) GetMoreChannelsPage(offset int, limit int) (*Result, *AppError) { @@ -1333,22 +1322,6 @@ func (c *Client) RemoveChannelMember(id, user_id string) (*Result, *AppError) { } } -// UpdateLastViewedAt will mark a channel as read. -// The channelId indicates the channel to mark as read. If active is true, push notifications -// will be cleared if there are unread messages. The default for active is true. -// SCHEDULED FOR DEPRECATION IN 3.8 - use ViewChannel instead -func (c *Client) UpdateLastViewedAt(channelId string, active bool) (*Result, *AppError) { - data := make(map[string]interface{}) - data["active"] = active - if r, err := c.DoApiPost(c.GetChannelRoute(channelId)+"/update_last_viewed_at", StringInterfaceToJson(data)); err != nil { - return nil, err - } else { - defer closeBody(r) - return &Result{r.Header.Get(HEADER_REQUEST_ID), - r.Header.Get(HEADER_ETAG_SERVER), nil}, nil - } -} - // ViewChannel performs all the actions related to viewing a channel. This includes marking // the channel and the previous one as read, and marking the channel as being actively viewed. // ChannelId is required but may be blank to indicate no channel is being viewed. @@ -1792,22 +1765,6 @@ func (c *Client) GetStatusesByIds(userIds []string) (*Result, *AppError) { } } -// SetActiveChannel sets the the channel id the user is currently viewing. -// The channelId key is required but the value can be blank. Returns standard -// response. -// SCHEDULED FOR DEPRECATION IN 3.8 - use ViewChannel instead -func (c *Client) SetActiveChannel(channelId string) (*Result, *AppError) { - data := map[string]string{} - data["channel_id"] = channelId - if r, err := c.DoApiPost("/users/status/set_active_channel", MapToJson(data)); err != nil { - return nil, err - } else { - defer closeBody(r) - return &Result{r.Header.Get(HEADER_REQUEST_ID), - r.Header.Get(HEADER_ETAG_SERVER), MapFromJson(r.Body)}, nil - } -} - func (c *Client) GetMyTeam(etag string) (*Result, *AppError) { if r, err := c.DoApiGet(c.GetTeamRoute()+"/me", "", etag); err != nil { return nil, err diff --git a/webapp/tests/client/client_channel.test.jsx b/webapp/tests/client/client_channel.test.jsx index dae70bca2..106cfe38c 100644 --- a/webapp/tests/client/client_channel.test.jsx +++ b/webapp/tests/client/client_channel.test.jsx @@ -246,23 +246,6 @@ describe('Client.Channels', function() { }); }); - test('updateLastViewedAt', function(done) { - TestHelper.initBasic(done, () => { - var channel = TestHelper.basicChannel(); - TestHelper.basicClient().updateLastViewedAt( - channel.id, - true, - function(data) { - expect(data.id).toEqual(channel.id); - done(); - }, - function(err) { - done.fail(new Error(err.message)); - } - ); - }); - }); - test('getChannels', function(done) { TestHelper.initBasic(done, () => { TestHelper.basicClient().getChannels( @@ -292,20 +275,6 @@ describe('Client.Channels', function() { }); }); - test('getMoreChannels', function(done) { - TestHelper.initBasic(done, () => { - TestHelper.basicClient().getMoreChannels( - function(data) { - expect(data.length).toBe(0); - done(); - }, - function(err) { - done.fail(new Error(err.message)); - } - ); - }); - }); - test('getMoreChannelsPage', function(done) { TestHelper.initBasic(done, () => { TestHelper.basicClient().getMoreChannelsPage( diff --git a/webapp/tests/client/client_user.test.jsx b/webapp/tests/client/client_user.test.jsx index 5f299670d..22bdd0e0f 100644 --- a/webapp/tests/client/client_user.test.jsx +++ b/webapp/tests/client/client_user.test.jsx @@ -651,23 +651,6 @@ describe('Client.User', function() { }); }); - test('setActiveChannel', function(done) { - TestHelper.initBasic(done, () => { - var ids = []; - ids.push(TestHelper.basicUser().id); - - TestHelper.basicClient().setActiveChannel( - TestHelper.basicChannel().id, - function() { - done(); - }, - function(err) { - done.fail(new Error(err.message)); - } - ); - }); - }); - test('verifyEmail', function(done) { TestHelper.initBasic(done, () => { TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error -- cgit v1.2.3-1-g7c22