summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2017-09-06 17:12:54 -0500
committerGitHub <noreply@github.com>2017-09-06 17:12:54 -0500
commit1adfd0e9be69a93c7f63bb7afc742c9fafe31aa3 (patch)
tree2766bacc1f045fa685ca3d8310cd6174d0311d09
parentb84bd21089d305333fa4114b95be70f5ad94ad1b (diff)
downloadchat-1adfd0e9be69a93c7f63bb7afc742c9fafe31aa3.tar.gz
chat-1adfd0e9be69a93c7f63bb7afc742c9fafe31aa3.tar.bz2
chat-1adfd0e9be69a93c7f63bb7afc742c9fafe31aa3.zip
app type transition (#7167)
-rw-r--r--api/admin.go20
-rw-r--r--api/admin_test.go5
-rw-r--r--api/api.go10
-rw-r--r--api/apitestlib.go46
-rw-r--r--api/channel.go120
-rw-r--r--api/channel_test.go23
-rw-r--r--api/cli_test.go6
-rw-r--r--api/command.go22
-rw-r--r--api/command_help_test.go3
-rw-r--r--api/command_msg_test.go3
-rw-r--r--api/context.go18
-rw-r--r--api/emoji.go15
-rw-r--r--api/emoji_test.go10
-rw-r--r--api/file.go10
-rw-r--r--api/file_test.go50
-rw-r--r--api/license.go4
-rw-r--r--api/license_test.go3
-rw-r--r--api/oauth.go30
-rw-r--r--api/oauth_test.go15
-rw-r--r--api/post.go62
-rw-r--r--api/post_test.go40
-rw-r--r--api/preference.go14
-rw-r--r--api/preference_test.go3
-rw-r--r--api/reaction.go18
-rw-r--r--api/status.go2
-rw-r--r--api/status_test.go11
-rw-r--r--api/team.go46
-rw-r--r--api/team_test.go27
-rw-r--r--api/user.go110
-rw-r--r--api/user_test.go82
-rw-r--r--api/webhook.go36
-rw-r--r--api/websocket.go2
-rw-r--r--api4/api.go10
-rw-r--r--api4/apitestlib.go74
-rw-r--r--api4/channel.go108
-rw-r--r--api4/channel_test.go69
-rw-r--r--api4/command.go28
-rw-r--r--api4/command_help_test.go3
-rw-r--r--api4/command_test.go17
-rw-r--r--api4/compliance.go8
-rw-r--r--api4/context.go10
-rw-r--r--api4/emoji.go12
-rw-r--r--api4/file.go26
-rw-r--r--api4/file_test.go12
-rw-r--r--api4/job.go6
-rw-r--r--api4/job_test.go19
-rw-r--r--api4/oauth.go50
-rw-r--r--api4/plugin.go6
-rw-r--r--api4/plugin_test.go5
-rw-r--r--api4/post.go72
-rw-r--r--api4/post_test.go34
-rw-r--r--api4/preference.go10
-rw-r--r--api4/reaction.go12
-rw-r--r--api4/reaction_test.go39
-rw-r--r--api4/status.go10
-rw-r--r--api4/status_test.go15
-rw-r--r--api4/system.go18
-rw-r--r--api4/team.go58
-rw-r--r--api4/team_test.go21
-rw-r--r--api4/user.go128
-rw-r--r--api4/user_test.go35
-rw-r--r--api4/webhook.go60
-rw-r--r--api4/webhook_test.go3
-rw-r--r--api4/websocket.go2
-rw-r--r--app/admin.go23
-rw-r--r--app/analytics.go54
-rw-r--r--app/app.go10
-rw-r--r--app/apptestlib.go46
-rw-r--r--app/audit.go8
-rw-r--r--app/authentication.go18
-rw-r--r--app/authorization.go52
-rw-r--r--app/authorization_test.go3
-rw-r--r--app/auto_environment.go5
-rw-r--r--app/auto_posts.go5
-rw-r--r--app/auto_users.go10
-rw-r--r--app/channel.go384
-rw-r--r--app/channel_test.go50
-rw-r--r--app/cluster_discovery.go12
-rw-r--r--app/cluster_discovery_test.go3
-rw-r--r--app/cluster_handlers.go50
-rw-r--r--app/command.go58
-rw-r--r--app/command_away.go2
-rw-r--r--app/command_channel_header.go8
-rw-r--r--app/command_channel_purpose.go8
-rw-r--r--app/command_channel_rename.go8
-rw-r--r--app/command_channel_rename_test.go3
-rw-r--r--app/command_echo.go2
-rw-r--r--app/command_expand_collapse.go8
-rw-r--r--app/command_invite_people.go2
-rw-r--r--app/command_join.go8
-rw-r--r--app/command_leave.go6
-rw-r--r--app/command_loadtest.go14
-rw-r--r--app/command_logout.go2
-rw-r--r--app/command_msg.go10
-rw-r--r--app/command_offline.go2
-rw-r--r--app/command_online.go2
-rw-r--r--app/compliance.go15
-rw-r--r--app/diagnostics.go32
-rw-r--r--app/diagnostics_test.go7
-rw-r--r--app/email.go7
-rw-r--r--app/email_batching.go25
-rw-r--r--app/email_batching_test.go66
-rw-r--r--app/email_test.go38
-rw-r--r--app/emoji.go28
-rw-r--r--app/file.go30
-rw-r--r--app/file_test.go15
-rw-r--r--app/import.go166
-rw-r--r--app/import_test.go386
-rw-r--r--app/job.go20
-rw-r--r--app/job_test.go32
-rw-r--r--app/ldap.go16
-rw-r--r--app/license.go28
-rw-r--r--app/license_test.go18
-rw-r--r--app/login.go14
-rw-r--r--app/notification.go64
-rw-r--r--app/notification_test.go72
-rw-r--r--app/oauth.go170
-rw-r--r--app/oauth_test.go26
-rw-r--r--app/plugins.go54
-rw-r--r--app/post.go164
-rw-r--r--app/post_test.go25
-rw-r--r--app/preference.go23
-rw-r--r--app/reaction.go24
-rw-r--r--app/saml.go3
-rw-r--r--app/security_update_check.go18
-rw-r--r--app/server.go36
-rw-r--r--app/session.go78
-rw-r--r--app/session_test.go3
-rw-r--r--app/slackimport.go77
-rw-r--r--app/status.go32
-rw-r--r--app/team.go240
-rw-r--r--app/team_test.go62
-rw-r--r--app/user.go408
-rw-r--r--app/user_test.go40
-rw-r--r--app/web_conn.go16
-rw-r--r--app/web_hub.go62
-rw-r--r--app/webhook.go112
-rw-r--r--app/webhook_test.go11
-rw-r--r--app/websocket_router.go9
-rw-r--r--cmd/platform/channel.go26
-rw-r--r--cmd/platform/channelargs.go4
-rw-r--r--cmd/platform/config.go3
-rw-r--r--cmd/platform/import.go5
-rw-r--r--cmd/platform/init.go6
-rw-r--r--cmd/platform/license.go2
-rw-r--r--cmd/platform/mattermost.go2
-rw-r--r--cmd/platform/roles.go4
-rw-r--r--cmd/platform/server.go30
-rw-r--r--cmd/platform/team.go8
-rw-r--r--cmd/platform/teamargs.go4
-rw-r--r--cmd/platform/test.go13
-rw-r--r--cmd/platform/user.go14
-rw-r--r--cmd/platform/userargs.go6
-rw-r--r--cmd/platform/version.go2
-rw-r--r--jobs/jobs.go3
-rw-r--r--manualtesting/manual_testing.go12
-rw-r--r--manualtesting/test_autolink.go3
-rw-r--r--model/gitlab/gitlab.go5
-rw-r--r--model/manifest_test.go3
-rw-r--r--model/websocket_client.go1
-rw-r--r--store/sql_command_store_test.go3
-rw-r--r--store/sql_compliance_store_test.go3
-rw-r--r--store/sql_emoji_store_test.go3
-rw-r--r--store/sql_job_store_test.go7
-rw-r--r--store/sql_license_store_test.go3
-rw-r--r--store/sql_oauth_store_test.go3
-rw-r--r--store/sql_session_store_test.go3
-rw-r--r--utils/license_test.go3
-rw-r--r--utils/logger/logger.go3
-rw-r--r--utils/mail.go3
-rw-r--r--web/web.go2
-rw-r--r--web/web_test.go20
-rw-r--r--wsapi/api.go2
-rw-r--r--wsapi/status.go6
-rw-r--r--wsapi/system.go2
-rw-r--r--wsapi/user.go2
-rw-r--r--wsapi/webrtc.go2
-rw-r--r--wsapi/websocket_handler.go5
178 files changed, 2919 insertions, 2806 deletions
diff --git a/api/admin.go b/api/admin.go
index 30dadc7ba..76a99764e 100644
--- a/api/admin.go
+++ b/api/admin.go
@@ -67,7 +67,7 @@ func getClusterStatus(c *Context, w http.ResponseWriter, r *http.Request) {
}
func getAllAudits(c *Context, w http.ResponseWriter, r *http.Request) {
- if audits, err := app.GetAudits("", 200); err != nil {
+ if audits, err := c.App.GetAudits("", 200); err != nil {
c.Err = err
return
} else if HandleEtag(audits.Etag(), "Get All Audits", w, r) {
@@ -96,7 +96,7 @@ func reloadConfig(c *Context, w http.ResponseWriter, r *http.Request) {
}
func invalidateAllCaches(c *Context, w http.ResponseWriter, r *http.Request) {
- err := app.InvalidateAllCaches()
+ err := c.App.InvalidateAllCaches()
if err != nil {
c.Err = err
return
@@ -124,7 +124,7 @@ func saveConfig(c *Context, w http.ResponseWriter, r *http.Request) {
}
func recycleDatabaseConnection(c *Context, w http.ResponseWriter, r *http.Request) {
- app.RecycleDatabaseConnection()
+ c.App.RecycleDatabaseConnection()
w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
ReturnStatusOK(w)
}
@@ -136,7 +136,7 @@ func testEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.TestEmail(c.Session.UserId, cfg)
+ err := c.App.TestEmail(c.Session.UserId, cfg)
if err != nil {
c.Err = err
return
@@ -148,7 +148,7 @@ func testEmail(c *Context, w http.ResponseWriter, r *http.Request) {
}
func getComplianceReports(c *Context, w http.ResponseWriter, r *http.Request) {
- crs, err := app.GetComplianceReports(0, 10000)
+ crs, err := c.App.GetComplianceReports(0, 10000)
if err != nil {
c.Err = err
return
@@ -165,7 +165,7 @@ func saveComplianceReport(c *Context, w http.ResponseWriter, r *http.Request) {
job.UserId = c.Session.UserId
- rjob, err := app.SaveComplianceReport(job)
+ rjob, err := c.App.SaveComplianceReport(job)
if err != nil {
c.Err = err
return
@@ -184,7 +184,7 @@ func downloadComplianceReport(c *Context, w http.ResponseWriter, r *http.Request
return
}
- job, err := app.GetComplianceReport(id)
+ job, err := c.App.GetComplianceReport(id)
if err != nil {
c.Err = err
return
@@ -221,7 +221,7 @@ func getAnalytics(c *Context, w http.ResponseWriter, r *http.Request) {
teamId := params["id"]
name := params["name"]
- rows, err := app.GetAnalytics(name, teamId)
+ rows, err := c.App.GetAnalytics(name, teamId)
if err != nil {
c.Err = err
return
@@ -316,7 +316,7 @@ func adminResetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.UpdatePasswordByUserIdSendEmail(userId, newPassword, c.T("api.user.reset_password.method")); err != nil {
+ if err := c.App.UpdatePasswordByUserIdSendEmail(userId, newPassword, c.T("api.user.reset_password.method")); err != nil {
c.Err = err
return
}
@@ -412,7 +412,7 @@ func samlCertificateStatus(c *Context, w http.ResponseWriter, r *http.Request) {
}
func getRecentlyActiveUsers(c *Context, w http.ResponseWriter, r *http.Request) {
- if profiles, err := app.GetRecentlyActiveUsersForTeam(c.TeamId); err != nil {
+ if profiles, err := c.App.GetRecentlyActiveUsersForTeam(c.TeamId); err != nil {
c.Err = err
return
} else {
diff --git a/api/admin_test.go b/api/admin_test.go
index 07504c4d1..74b6c1c80 100644
--- a/api/admin_test.go
+++ b/api/admin_test.go
@@ -8,7 +8,6 @@ import (
"strings"
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/store"
"github.com/mattermost/platform/utils"
@@ -597,7 +596,7 @@ func TestAdminResetPassword(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
if _, err := Client.AdminResetPassword("", "newpwd1"); err == nil {
t.Fatal("Should have errored - empty user id")
@@ -619,7 +618,7 @@ func TestAdminResetPassword(t *testing.T) {
user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", AuthData: &authData, AuthService: "random"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
if _, err := Client.AdminResetPassword(user.Id, "newpwd1"); err != nil {
t.Fatal(err)
diff --git a/api/api.go b/api/api.go
index 7e902c159..814341003 100644
--- a/api/api.go
+++ b/api/api.go
@@ -60,14 +60,14 @@ type Routes struct {
var BaseRoutes *Routes
func InitRouter() {
- app.Srv.Router = mux.NewRouter()
- app.Srv.Router.NotFoundHandler = http.HandlerFunc(Handle404)
+ app.Global().Srv.Router = mux.NewRouter()
+ app.Global().Srv.Router.NotFoundHandler = http.HandlerFunc(Handle404)
}
func InitApi() {
BaseRoutes = &Routes{}
- BaseRoutes.Root = app.Srv.Router
- BaseRoutes.ApiRoot = app.Srv.Router.PathPrefix(model.API_URL_SUFFIX_V3).Subrouter()
+ BaseRoutes.Root = app.Global().Srv.Router
+ BaseRoutes.ApiRoot = app.Global().Srv.Router.PathPrefix(model.API_URL_SUFFIX_V3).Subrouter()
BaseRoutes.Users = BaseRoutes.ApiRoot.PathPrefix("/users").Subrouter()
BaseRoutes.NeedUser = BaseRoutes.Users.PathPrefix("/{user_id:[A-Za-z0-9]+}").Subrouter()
BaseRoutes.Teams = BaseRoutes.ApiRoot.PathPrefix("/teams").Subrouter()
@@ -111,7 +111,7 @@ func InitApi() {
InitDeprecated()
// 404 on any api route before web.go has a chance to serve it
- app.Srv.Router.Handle("/api/{anything:.*}", http.HandlerFunc(Handle404))
+ app.Global().Srv.Router.Handle("/api/{anything:.*}", http.HandlerFunc(Handle404))
utils.InitHTML()
diff --git a/api/apitestlib.go b/api/apitestlib.go
index 9aaf62e2b..de58221ab 100644
--- a/api/apitestlib.go
+++ b/api/apitestlib.go
@@ -17,6 +17,8 @@ import (
)
type TestHelper struct {
+ App *app.App
+
BasicClient *model.Client
BasicTeam *model.Team
BasicUser *model.User
@@ -32,7 +34,7 @@ type TestHelper struct {
}
func SetupEnterprise() *TestHelper {
- if app.Srv == nil {
+ if app.Global().Srv == nil {
utils.TranslationsPreInit()
utils.LoadConfig("config.json")
utils.InitTranslations(utils.Cfg.LocalizationSettings)
@@ -40,17 +42,17 @@ func SetupEnterprise() *TestHelper {
*utils.Cfg.RateLimitSettings.Enable = false
utils.DisableDebugLogForTest()
utils.License().Features.SetDefaults()
- app.NewServer()
- app.InitStores()
+ app.Global().NewServer()
+ app.Global().InitStores()
InitRouter()
wsapi.InitRouter()
- app.StartServer()
+ app.Global().StartServer()
utils.InitHTML()
api4.InitApi(false)
InitApi()
wsapi.InitApi()
utils.EnableDebugLogForTest()
- app.Srv.Store.MarkSystemRanUnitTests()
+ app.Global().Srv.Store.MarkSystemRanUnitTests()
*utils.Cfg.TeamSettings.EnableOpenServer = true
}
@@ -59,7 +61,7 @@ func SetupEnterprise() *TestHelper {
}
func Setup() *TestHelper {
- if app.Srv == nil {
+ if app.Global().Srv == nil {
utils.TranslationsPreInit()
utils.LoadConfig("config.json")
utils.InitTranslations(utils.Cfg.LocalizationSettings)
@@ -70,16 +72,16 @@ func Setup() *TestHelper {
utils.Cfg.EmailSettings.SMTPPort = "2500"
utils.Cfg.EmailSettings.FeedbackEmail = "test@example.com"
utils.DisableDebugLogForTest()
- app.NewServer()
- app.InitStores()
+ app.Global().NewServer()
+ app.Global().InitStores()
InitRouter()
wsapi.InitRouter()
- app.StartServer()
+ app.Global().StartServer()
api4.InitApi(false)
InitApi()
wsapi.InitApi()
utils.EnableDebugLogForTest()
- app.Srv.Store.MarkSystemRanUnitTests()
+ app.Global().Srv.Store.MarkSystemRanUnitTests()
*utils.Cfg.TeamSettings.EnableOpenServer = true
}
@@ -100,6 +102,7 @@ func ReloadConfigForSetup() {
}
func (me *TestHelper) InitBasic() *TestHelper {
+ me.App = app.Global()
me.BasicClient = me.CreateClient()
me.BasicUser = me.CreateUser(me.BasicClient)
me.LoginBasic()
@@ -119,6 +122,7 @@ func (me *TestHelper) InitBasic() *TestHelper {
}
func (me *TestHelper) InitSystemAdmin() *TestHelper {
+ me.App = app.Global()
me.SystemAdminClient = me.CreateClient()
me.SystemAdminUser = me.CreateUser(me.SystemAdminClient)
me.SystemAdminUser.Password = "Password1"
@@ -126,7 +130,7 @@ func (me *TestHelper) InitSystemAdmin() *TestHelper {
me.SystemAdminTeam = me.CreateTeam(me.SystemAdminClient)
LinkUserToTeam(me.SystemAdminUser, me.SystemAdminTeam)
me.SystemAdminClient.SetTeamId(me.SystemAdminTeam.Id)
- app.UpdateUserRoles(me.SystemAdminUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_ADMIN.Id)
+ me.App.UpdateUserRoles(me.SystemAdminUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_ADMIN.Id)
me.SystemAdminChannel = me.CreateChannel(me.SystemAdminClient, me.SystemAdminTeam)
return me
@@ -168,7 +172,7 @@ func (me *TestHelper) CreateUser(client *model.Client) *model.User {
utils.DisableDebugLogForTest()
ruser := client.Must(client.CreateUser(user, "")).Data.(*model.User)
ruser.Password = "Password1"
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(app.Global().Srv.Store.User().VerifyEmail(ruser.Id))
utils.EnableDebugLogForTest()
return ruser
}
@@ -176,7 +180,7 @@ func (me *TestHelper) CreateUser(client *model.Client) *model.User {
func LinkUserToTeam(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest()
- err := app.JoinUserToTeam(team, user, "")
+ err := app.Global().JoinUserToTeam(team, user, "")
if err != nil {
l4g.Error(err.Error())
l4g.Close()
@@ -191,7 +195,7 @@ func UpdateUserToTeamAdmin(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest()
tm := &model.TeamMember{TeamId: team.Id, UserId: user.Id, Roles: model.ROLE_TEAM_USER.Id + " " + model.ROLE_TEAM_ADMIN.Id}
- if tmr := <-app.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
+ if tmr := <-app.Global().Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
utils.EnableDebugLogForTest()
l4g.Error(tmr.Err.Error())
l4g.Close()
@@ -205,7 +209,7 @@ func UpdateUserToNonTeamAdmin(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest()
tm := &model.TeamMember{TeamId: team.Id, UserId: user.Id, Roles: model.ROLE_TEAM_USER.Id}
- if tmr := <-app.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
+ if tmr := <-app.Global().Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
utils.EnableDebugLogForTest()
l4g.Error(tmr.Err.Error())
l4g.Close()
@@ -218,10 +222,10 @@ func UpdateUserToNonTeamAdmin(user *model.User, team *model.Team) {
func MakeUserChannelAdmin(user *model.User, channel *model.Channel) {
utils.DisableDebugLogForTest()
- if cmr := <-app.Srv.Store.Channel().GetMember(channel.Id, user.Id); cmr.Err == nil {
+ if cmr := <-app.Global().Srv.Store.Channel().GetMember(channel.Id, user.Id); cmr.Err == nil {
cm := cmr.Data.(*model.ChannelMember)
cm.Roles = "channel_admin channel_user"
- if sr := <-app.Srv.Store.Channel().UpdateMember(cm); sr.Err != nil {
+ if sr := <-app.Global().Srv.Store.Channel().UpdateMember(cm); sr.Err != nil {
utils.EnableDebugLogForTest()
panic(sr.Err)
}
@@ -236,10 +240,10 @@ func MakeUserChannelAdmin(user *model.User, channel *model.Channel) {
func MakeUserChannelUser(user *model.User, channel *model.Channel) {
utils.DisableDebugLogForTest()
- if cmr := <-app.Srv.Store.Channel().GetMember(channel.Id, user.Id); cmr.Err == nil {
+ if cmr := <-app.Global().Srv.Store.Channel().GetMember(channel.Id, user.Id); cmr.Err == nil {
cm := cmr.Data.(*model.ChannelMember)
cm.Roles = "channel_user"
- if sr := <-app.Srv.Store.Channel().UpdateMember(cm); sr.Err != nil {
+ if sr := <-app.Global().Srv.Store.Channel().UpdateMember(cm); sr.Err != nil {
utils.EnableDebugLogForTest()
panic(sr.Err)
}
@@ -323,7 +327,7 @@ func (me *TestHelper) LoginSystemAdmin() {
}
func TearDown() {
- if app.Srv != nil {
- app.StopServer()
+ if app.Global().Srv != nil {
+ app.Global().StopServer()
}
}
diff --git a/api/channel.go b/api/channel.go
index 360d69249..dc6124430 100644
--- a/api/channel.go
+++ b/api/channel.go
@@ -69,7 +69,7 @@ func createChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sc, err := app.CreateChannelWithUser(channel, c.Session.UserId); err != nil {
+ if sc, err := c.App.CreateChannelWithUser(channel, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -92,7 +92,7 @@ func createDirectChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sc, err := app.CreateDirectChannel(c.Session.UserId, userId); err != nil {
+ if sc, err := c.App.CreateDirectChannel(c.Session.UserId, userId); err != nil {
c.Err = err
return
} else {
@@ -124,7 +124,7 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
userIds = append(userIds, c.Session.UserId)
}
- if sc, err := app.CreateGroupChannel(userIds, c.Session.UserId); err != nil {
+ if sc, err := c.App.CreateGroupChannel(userIds, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -133,12 +133,12 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
}
func CanManageChannel(c *Context, channel *model.Channel) bool {
- if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES)
return false
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES)
return false
}
@@ -157,12 +157,12 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
var oldChannel *model.Channel
var err *model.AppError
- if oldChannel, err = app.GetChannel(channel.Id); err != nil {
+ if oldChannel, err = c.App.GetChannel(channel.Id); err != nil {
c.Err = err
return
}
- if _, err = app.GetChannelMember(channel.Id, c.Session.UserId); err != nil {
+ if _, err = c.App.GetChannelMember(channel.Id, c.Session.UserId); err != nil {
c.Err = err
return
}
@@ -200,12 +200,12 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
oldChannel.Type = channel.Type
}
- if _, err := app.UpdateChannel(oldChannel); err != nil {
+ if _, err := c.App.UpdateChannel(oldChannel); err != nil {
c.Err = err
return
} else {
if oldChannelDisplayName != channel.DisplayName {
- if err := app.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
+ if err := c.App.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
l4g.Error(err.Error())
}
}
@@ -232,12 +232,12 @@ func updateChannelHeader(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(channelId); err != nil {
+ if channel, err = c.App.GetChannel(channelId); err != nil {
c.Err = err
return
}
- if _, err = app.GetChannelMember(channelId, c.Session.UserId); err != nil {
+ if _, err = c.App.GetChannelMember(channelId, c.Session.UserId); err != nil {
c.Err = err
return
}
@@ -249,11 +249,11 @@ func updateChannelHeader(c *Context, w http.ResponseWriter, r *http.Request) {
oldChannelHeader := channel.Header
channel.Header = channelHeader
- if _, err := app.UpdateChannel(channel); err != nil {
+ if _, err := c.App.UpdateChannel(channel); err != nil {
c.Err = err
return
} else {
- if err := app.PostUpdateChannelHeaderMessage(c.Session.UserId, channel, oldChannelHeader, channelHeader); err != nil {
+ if err := c.App.PostUpdateChannelHeaderMessage(c.Session.UserId, channel, oldChannelHeader, channelHeader); err != nil {
l4g.Error(err.Error())
}
c.LogAudit("name=" + channel.Name)
@@ -278,12 +278,12 @@ func updateChannelPurpose(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(channelId); err != nil {
+ if channel, err = c.App.GetChannel(channelId); err != nil {
c.Err = err
return
}
- if _, err = app.GetChannelMember(channelId, c.Session.UserId); err != nil {
+ if _, err = c.App.GetChannelMember(channelId, c.Session.UserId); err != nil {
c.Err = err
return
}
@@ -295,11 +295,11 @@ func updateChannelPurpose(c *Context, w http.ResponseWriter, r *http.Request) {
oldChannelPurpose := channel.Purpose
channel.Purpose = channelPurpose
- if _, err := app.UpdateChannel(channel); err != nil {
+ if _, err := c.App.UpdateChannel(channel); err != nil {
c.Err = err
return
} else {
- if err := app.PostUpdateChannelPurposeMessage(c.Session.UserId, channel, oldChannelPurpose, channelPurpose); err != nil {
+ if err := c.App.PostUpdateChannelPurposeMessage(c.Session.UserId, channel, oldChannelPurpose, channelPurpose); err != nil {
l4g.Error(err.Error())
}
c.LogAudit("name=" + channel.Name)
@@ -315,10 +315,10 @@ func getChannels(c *Context, w http.ResponseWriter, r *http.Request) {
// user is already in the team
// Get's all channels the user is a member of
- if channels, err := app.GetChannelsForUser(c.TeamId, c.Session.UserId); err != nil {
+ if channels, err := c.App.GetChannelsForUser(c.TeamId, c.Session.UserId); err != nil {
if err.Id == "store.sql_channel.get_channels.not_found.app_error" {
// lets make sure the user is valid
- if _, err := app.GetUser(c.Session.UserId); err != nil {
+ if _, err := c.App.GetUser(c.Session.UserId); err != nil {
c.Err = err
c.RemoveSessionCookie(w, r)
l4g.Error(utils.T("api.channel.get_channels.error"), c.Session.UserId)
@@ -356,7 +356,7 @@ func getMoreChannelsPage(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if channels, err := app.GetChannelsUserNotIn(c.TeamId, c.Session.UserId, offset, limit); err != nil {
+ if channels, err := c.App.GetChannelsUserNotIn(c.TeamId, c.Session.UserId, offset, limit); err != nil {
c.Err = err
return
} else {
@@ -369,7 +369,7 @@ func getChannelCounts(c *Context, w http.ResponseWriter, r *http.Request) {
// user is already in the team
- if counts, err := app.GetChannelCounts(c.TeamId, c.Session.UserId); err != nil {
+ if counts, err := c.App.GetChannelCounts(c.TeamId, c.Session.UserId); err != nil {
c.Err = model.NewAppError("getChannelCounts", "api.channel.get_channel_counts.app_error", nil, err.Message, http.StatusInternalServerError)
return
} else if HandleEtag(counts.Etag(), "Get Channel Counts", w, r) {
@@ -389,9 +389,9 @@ func join(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
if channelId != "" {
- channel, err = app.GetChannel(channelId)
+ channel, err = c.App.GetChannel(channelId)
} else if channelName != "" {
- channel, err = app.GetChannelByName(channelName, c.TeamId)
+ channel, err = c.App.GetChannelByName(channelName, c.TeamId)
} else {
c.SetInvalidParam("join", "channel_id, channel_name")
return
@@ -409,7 +409,7 @@ func join(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if err = app.JoinChannel(channel, c.Session.UserId); err != nil {
+ if err = c.App.JoinChannel(channel, c.Session.UserId); err != nil {
c.Err = err
return
}
@@ -422,7 +422,7 @@ func leave(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
id := params["channel_id"]
- err := app.LeaveChannel(id, c.Session.UserId)
+ err := c.App.LeaveChannel(id, c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -440,22 +440,22 @@ func deleteChannel(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(id); err != nil {
+ if channel, err = c.App.GetChannel(id); err != nil {
c.Err = err
return
}
- if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) {
+ if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PUBLIC_CHANNEL)
return
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PRIVATE_CHANNEL)
return
}
- err = app.DeleteChannel(channel, c.Session.UserId)
+ err = c.App.DeleteChannel(channel, c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -474,7 +474,7 @@ func getChannel(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(id); err != nil {
+ if channel, err = c.App.GetChannel(id); err != nil {
c.Err = err
return
}
@@ -485,7 +485,7 @@ func getChannel(c *Context, w http.ResponseWriter, r *http.Request) {
}
var member *model.ChannelMember
- if member, err = app.GetChannelMember(id, c.Session.UserId); err != nil {
+ if member, err = c.App.GetChannelMember(id, c.Session.UserId); err != nil {
c.Err = err
return
}
@@ -506,11 +506,11 @@ func getChannelByName(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
channelName := params["channel_name"]
- if channel, err := app.GetChannelByName(channelName, c.TeamId); err != nil {
+ if channel, err := c.App.GetChannelByName(channelName, c.TeamId); err != nil {
c.Err = err
return
} else {
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -535,7 +535,7 @@ func getChannelStats(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(id); err != nil {
+ if channel, err = c.App.GetChannel(id); err != nil {
c.Err = err
return
}
@@ -545,12 +545,12 @@ func getChannelStats(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if memberCount, err := app.GetChannelMemberCount(id); err != nil {
+ if memberCount, err := c.App.GetChannelMemberCount(id); err != nil {
c.Err = err
return
} else {
@@ -564,12 +564,12 @@ func getChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
channelId := params["channel_id"]
userId := params["user_id"]
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if member, err := app.GetChannelMember(channelId, userId); err != nil {
+ if member, err := c.App.GetChannelMember(channelId, userId); err != nil {
c.Err = err
return
} else {
@@ -578,7 +578,7 @@ func getChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
}
func getMyChannelMembers(c *Context, w http.ResponseWriter, r *http.Request) {
- if members, err := app.GetChannelMembersForUser(c.TeamId, c.Session.UserId); err != nil {
+ if members, err := c.App.GetChannelMembersForUser(c.TeamId, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -590,7 +590,7 @@ func getPinnedPosts(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
channelId := params["channel_id"]
- if result := <-app.Srv.Store.Channel().GetPinnedPosts(channelId); result.Err != nil {
+ if result := <-c.App.Srv.Store.Channel().GetPinnedPosts(channelId); result.Err != nil {
c.Err = result.Err
return
} else {
@@ -614,28 +614,28 @@ func addMember(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(id); err != nil {
+ if channel, err = c.App.GetChannel(id); err != nil {
c.Err = err
return
}
- if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
+ if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS)
return
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS)
return
}
var nUser *model.User
- if nUser, err = app.GetUser(userId); err != nil {
+ if nUser, err = c.App.GetUser(userId); err != nil {
c.Err = model.NewAppError("addMember", "api.channel.add_member.find_user.app_error", nil, err.Error(), http.StatusBadRequest)
return
}
- cm, err := app.AddUserToChannel(nUser, channel)
+ cm, err := c.App.AddUserToChannel(nUser, channel)
if err != nil {
c.Err = err
return
@@ -644,14 +644,14 @@ func addMember(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("name=" + channel.Name + " user_id=" + userId)
var oUser *model.User
- if oUser, err = app.GetUser(c.Session.UserId); err != nil {
+ if oUser, err = c.App.GetUser(c.Session.UserId); err != nil {
c.Err = model.NewAppError("addMember", "api.channel.add_member.user_adding.app_error", nil, err.Error(), http.StatusInternalServerError)
return
}
- go app.PostAddToChannelMessage(oUser, nUser, channel)
+ go c.App.PostAddToChannelMessage(oUser, nUser, channel)
- app.UpdateChannelLastViewedAt([]string{id}, oUser.Id)
+ c.App.UpdateChannelLastViewedAt([]string{id}, oUser.Id)
w.Write([]byte(cm.ToJson()))
}
@@ -669,22 +669,22 @@ func removeMember(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(channelId); err != nil {
+ if channel, err = c.App.GetChannel(channelId); err != nil {
c.Err = err
return
}
- if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
+ if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS)
return
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS)
return
}
- if err = app.RemoveUserFromChannel(userIdToRemove, c.Session.UserId, channel); err != nil {
+ if err = c.App.RemoveUserFromChannel(userIdToRemove, c.Session.UserId, channel); err != nil {
c.Err = err
return
}
@@ -717,7 +717,7 @@ func updateNotifyProps(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- member, err := app.UpdateChannelMemberNotifyProps(data, channelId, userId)
+ member, err := c.App.UpdateChannelMemberNotifyProps(data, channelId, userId)
if err != nil {
c.Err = err
return
@@ -745,7 +745,7 @@ func searchMoreChannels(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if channels, err := app.SearchChannelsUserNotIn(c.TeamId, c.Session.UserId, props.Term); err != nil {
+ if channels, err := c.App.SearchChannelsUserNotIn(c.TeamId, c.Session.UserId, props.Term); err != nil {
c.Err = err
return
} else {
@@ -763,7 +763,7 @@ func autocompleteChannels(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if channels, err := app.SearchChannels(c.TeamId, term); err != nil {
+ if channels, err := c.App.SearchChannels(c.TeamId, term); err != nil {
c.Err = err
return
} else {
@@ -779,7 +779,7 @@ func viewChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.ViewChannel(view, c.Session.UserId, !c.Session.IsMobileApp()); err != nil {
+ if err := c.App.ViewChannel(view, c.Session.UserId, !c.Session.IsMobileApp()); err != nil {
c.Err = err
return
}
@@ -797,12 +797,12 @@ func getChannelMembersByIds(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if members, err := app.GetChannelMembersByIds(channelId, userIds); err != nil {
+ if members, err := c.App.GetChannelMembersByIds(channelId, userIds); err != nil {
c.Err = err
return
} else {
@@ -822,7 +822,7 @@ func updateChannelMemberRoles(c *Context, w http.ResponseWriter, r *http.Request
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) {
c.SetPermissionError(model.PERMISSION_MANAGE_CHANNEL_ROLES)
return
}
@@ -833,7 +833,7 @@ func updateChannelMemberRoles(c *Context, w http.ResponseWriter, r *http.Request
return
}
- if _, err := app.UpdateChannelMemberRoles(channelId, userId, newRoles); err != nil {
+ if _, err := c.App.UpdateChannelMemberRoles(channelId, userId, newRoles); err != nil {
c.Err = err
return
}
diff --git a/api/channel_test.go b/api/channel_test.go
index c6fa23282..8a0ec7c62 100644
--- a/api/channel_test.go
+++ b/api/channel_test.go
@@ -9,7 +9,6 @@ import (
"testing"
"time"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/store"
"github.com/mattermost/platform/utils"
@@ -404,7 +403,7 @@ func TestUpdateChannel(t *testing.T) {
}
UpdateUserToTeamAdmin(th.BasicUser, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
if _, err := Client.UpdateChannel(channel2); err != nil {
t.Fatal(err)
}
@@ -412,7 +411,7 @@ func TestUpdateChannel(t *testing.T) {
t.Fatal(err)
}
UpdateUserToNonTeamAdmin(th.BasicUser, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
MakeUserChannelAdmin(th.BasicUser, channel2)
MakeUserChannelAdmin(th.BasicUser, channel3)
@@ -1188,7 +1187,7 @@ func TestJoinChannelByNameDisabledUser(t *testing.T) {
Client.Must(th.BasicClient.RemoveUserFromTeam(th.BasicTeam.Id, th.BasicUser.Id))
- if _, err := app.AddUserToChannel(th.BasicUser, channel1); err == nil {
+ if _, err := th.App.AddUserToChannel(th.BasicUser, channel1); err == nil {
t.Fatal("shoudn't be able to join channel")
} else {
if err.Id != "api.channel.add_user.to.channel.failed.deleted.app_error" {
@@ -1406,7 +1405,7 @@ func TestDeleteChannel(t *testing.T) {
UpdateUserToTeamAdmin(th.BasicUser, team)
Client.Login(th.BasicUser.Email, th.BasicUser.Password)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
if _, err := Client.DeleteChannel(channel2.Id); err != nil {
t.Fatal(err)
@@ -1416,7 +1415,7 @@ func TestDeleteChannel(t *testing.T) {
}
UpdateUserToNonTeamAdmin(th.BasicUser, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
@@ -1634,7 +1633,7 @@ func TestAddChannelMember(t *testing.T) {
}
MakeUserChannelAdmin(user1, channel5)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -1659,7 +1658,7 @@ func TestAddChannelMember(t *testing.T) {
}
UpdateUserToTeamAdmin(user1, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -1810,7 +1809,7 @@ func TestRemoveChannelMember(t *testing.T) {
}
MakeUserChannelAdmin(user1, channel5)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -1835,7 +1834,7 @@ func TestRemoveChannelMember(t *testing.T) {
}
UpdateUserToTeamAdmin(user1, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -2255,7 +2254,7 @@ func TestGetChannelByName(t *testing.T) {
user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
Client.SetTeamId(th.BasicTeam.Id)
@@ -2314,7 +2313,7 @@ func TestViewChannel(t *testing.T) {
func TestGetChannelMembersByIds(t *testing.T) {
th := Setup().InitBasic()
- if _, err := app.AddUserToChannel(th.BasicUser2, th.BasicChannel); err != nil {
+ if _, err := th.App.AddUserToChannel(th.BasicUser2, th.BasicChannel); err != nil {
t.Fatal("Could not add second user to channel")
}
diff --git a/api/cli_test.go b/api/cli_test.go
index 671d1af11..971cfb017 100644
--- a/api/cli_test.go
+++ b/api/cli_test.go
@@ -107,7 +107,7 @@ func TestCliCreateUserWithoutTeam(t *testing.T) {
t.Fatal(err)
}
- if result := <-app.Srv.Store.User().GetByEmail(email); result.Err != nil {
+ if result := <-app.Global().Srv.Store.User().GetByEmail(email); result.Err != nil {
t.Fatal()
} else {
user := result.Data.(*model.User)
@@ -131,7 +131,7 @@ func TestCliAssignRole(t *testing.T) {
t.Fatal(err)
}
- if result := <-app.Srv.Store.User().GetByEmail(th.BasicUser.Email); result.Err != nil {
+ if result := <-th.App.Srv.Store.User().GetByEmail(th.BasicUser.Email); result.Err != nil {
t.Fatal()
} else {
user := result.Data.(*model.User)
@@ -369,7 +369,7 @@ func TestCliLeaveTeam(t *testing.T) {
t.Fatal("profile should not be on team")
}
- if result := <-app.Srv.Store.Team().GetTeamsByUserId(th.BasicUser.Id); result.Err != nil {
+ if result := <-th.App.Srv.Store.Team().GetTeamsByUserId(th.BasicUser.Id); result.Err != nil {
teamMembers := result.Data.([]*model.TeamMember)
if len(teamMembers) > 0 {
t.Fatal("Shouldn't be in team")
diff --git a/api/command.go b/api/command.go
index aaaa790c0..429b58836 100644
--- a/api/command.go
+++ b/api/command.go
@@ -34,7 +34,7 @@ func InitCommand() {
}
func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
- commands, err := app.ListAutocompleteCommands(c.TeamId, c.T)
+ commands, err := c.App.ListAutocompleteCommands(c.TeamId, c.T)
if err != nil {
c.Err = err
return
@@ -56,7 +56,7 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
}
if len(commandArgs.ChannelId) > 0 {
- if !app.SessionHasPermissionToChannel(c.Session, commandArgs.ChannelId, model.PERMISSION_USE_SLASH_COMMANDS) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, commandArgs.ChannelId, model.PERMISSION_USE_SLASH_COMMANDS) {
c.SetPermissionError(model.PERMISSION_USE_SLASH_COMMANDS)
return
}
@@ -68,7 +68,7 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
commandArgs.Session = c.Session
commandArgs.SiteURL = c.GetSiteURLHeader()
- response, err := app.ExecuteCommand(commandArgs)
+ response, err := c.App.ExecuteCommand(commandArgs)
if err != nil {
c.Err = err
return
@@ -95,7 +95,7 @@ func createCommand(c *Context, w http.ResponseWriter, r *http.Request) {
cmd.CreatorId = c.Session.UserId
cmd.TeamId = c.TeamId
- rcmd, err := app.CreateCommand(cmd)
+ rcmd, err := c.App.CreateCommand(cmd)
if err != nil {
c.Err = err
return
@@ -115,7 +115,7 @@ func updateCommand(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- oldCmd, err := app.GetCommand(cmd.Id)
+ oldCmd, err := c.App.GetCommand(cmd.Id)
if err != nil {
c.Err = err
return
@@ -138,7 +138,7 @@ func updateCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rcmd, err := app.UpdateCommand(oldCmd, cmd)
+ rcmd, err := c.App.UpdateCommand(oldCmd, cmd)
if err != nil {
c.Err = err
return
@@ -155,7 +155,7 @@ func listTeamCommands(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- cmds, err := app.ListTeamCommands(c.TeamId)
+ cmds, err := c.App.ListTeamCommands(c.TeamId)
if err != nil {
c.Err = err
return
@@ -175,7 +175,7 @@ func regenCommandToken(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- cmd, err := app.GetCommand(id)
+ cmd, err := c.App.GetCommand(id)
if err != nil {
c.Err = err
return
@@ -198,7 +198,7 @@ func regenCommandToken(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rcmd, err := app.RegenCommandToken(cmd)
+ rcmd, err := c.App.RegenCommandToken(cmd)
if err != nil {
c.Err = err
return
@@ -218,7 +218,7 @@ func deleteCommand(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- cmd, err := app.GetCommand(id)
+ cmd, err := c.App.GetCommand(id)
if err != nil {
c.Err = err
return
@@ -241,7 +241,7 @@ func deleteCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.DeleteCommand(cmd.Id)
+ err = c.App.DeleteCommand(cmd.Id)
if err != nil {
c.Err = err
return
diff --git a/api/command_help_test.go b/api/command_help_test.go
index 20fa8c830..8ce9dec6c 100644
--- a/api/command_help_test.go
+++ b/api/command_help_test.go
@@ -4,9 +4,10 @@
package api
import (
+ "testing"
+
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "testing"
)
func TestHelpCommand(t *testing.T) {
diff --git a/api/command_msg_test.go b/api/command_msg_test.go
index 2e2d927e3..d1b15b7e7 100644
--- a/api/command_msg_test.go
+++ b/api/command_msg_test.go
@@ -4,9 +4,10 @@
package api
import (
- "github.com/mattermost/platform/model"
"strings"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestMsgCommands(t *testing.T) {
diff --git a/api/context.go b/api/context.go
index fc08b39f2..2778e68a4 100644
--- a/api/context.go
+++ b/api/context.go
@@ -21,6 +21,7 @@ import (
)
type Context struct {
+ App *app.App
Session model.Session
RequestId string
IpAddress string
@@ -107,6 +108,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
c := &Context{}
+ c.App = app.Global()
c.T, c.Locale = utils.GetTranslationsAndLocale(w, r)
c.RequestId = model.NewId()
c.IpAddress = utils.GetIpAddress(r)
@@ -165,7 +167,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
if len(token) != 0 {
- session, err := app.GetSession(token)
+ session, err := app.Global().GetSession(token)
if err != nil {
l4g.Error(utils.T("api.context.invalid_session.error"), err.Error())
@@ -206,8 +208,8 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
if c.Err == nil && h.isUserActivity && token != "" && len(c.Session.UserId) > 0 {
- app.SetStatusOnline(c.Session.UserId, c.Session.Id, false)
- app.UpdateLastActivityAtIfNeeded(c.Session)
+ app.Global().SetStatusOnline(c.Session.UserId, c.Session.Id, false)
+ app.Global().UpdateLastActivityAtIfNeeded(c.Session)
}
if c.Err == nil && (h.requireUser || h.requireSystemAdmin) {
@@ -258,7 +260,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func (c *Context) LogAudit(extraInfo string) {
audit := &model.Audit{UserId: c.Session.UserId, IpAddress: c.IpAddress, Action: c.Path, ExtraInfo: extraInfo, SessionId: c.Session.Id}
- if r := <-app.Srv.Store.Audit().Save(audit); r.Err != nil {
+ if r := <-app.Global().Srv.Store.Audit().Save(audit); r.Err != nil {
c.LogError(r.Err)
}
}
@@ -270,7 +272,7 @@ func (c *Context) LogAuditWithUserId(userId, extraInfo string) {
}
audit := &model.Audit{UserId: userId, IpAddress: c.IpAddress, Action: c.Path, ExtraInfo: extraInfo, SessionId: c.Session.Id}
- if r := <-app.Srv.Store.Audit().Save(audit); r.Err != nil {
+ if r := <-app.Global().Srv.Store.Audit().Save(audit); r.Err != nil {
c.LogError(r.Err)
}
}
@@ -314,7 +316,7 @@ func (c *Context) MfaRequired() {
return
}
- if result := <-app.Srv.Store.User().Get(c.Session.UserId); result.Err != nil {
+ if result := <-app.Global().Srv.Store.User().Get(c.Session.UserId); result.Err != nil {
c.Err = model.NewAppError("", "api.context.session_expired.app_error", nil, "MfaRequired", http.StatusUnauthorized)
return
} else {
@@ -391,7 +393,7 @@ func (c *Context) setTeamURL(url string, valid bool) {
}
func (c *Context) SetTeamURLFromSession() {
- if result := <-app.Srv.Store.Team().Get(c.TeamId); result.Err == nil {
+ if result := <-app.Global().Srv.Store.Team().Get(c.TeamId); result.Err == nil {
c.setTeamURL(c.GetSiteURLHeader()+"/"+result.Data.(*model.Team).Name, true)
}
}
@@ -445,7 +447,7 @@ func Handle404(w http.ResponseWriter, r *http.Request) {
func (c *Context) CheckTeamId() {
if c.TeamId != "" && c.Session.GetTeamByTeamId(c.TeamId) == nil {
if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
- if result := <-app.Srv.Store.Team().Get(c.TeamId); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Team().Get(c.TeamId); result.Err != nil {
c.Err = result.Err
c.Err.StatusCode = http.StatusBadRequest
return
diff --git a/api/emoji.go b/api/emoji.go
index 96a59cd84..ebecef276 100644
--- a/api/emoji.go
+++ b/api/emoji.go
@@ -10,6 +10,8 @@ import (
"net/http"
"strings"
+ "image/color/palette"
+
l4g "github.com/alecthomas/log4go"
"github.com/disintegration/imaging"
"github.com/gorilla/mux"
@@ -17,7 +19,6 @@ import (
"github.com/mattermost/platform/einterfaces"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "image/color/palette"
)
func InitEmoji() {
@@ -35,7 +36,7 @@ func getEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- listEmoji, err := app.GetEmojiList(0, 100000)
+ listEmoji, err := c.App.GetEmojiList(0, 100000)
if err != nil {
c.Err = err
return
@@ -97,7 +98,7 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if result := <-app.Srv.Store.Emoji().GetByName(emoji.Name); result.Err == nil && result.Data != nil {
+ if result := <-c.App.Srv.Store.Emoji().GetByName(emoji.Name); result.Err == nil && result.Data != nil {
c.Err = model.NewAppError("createEmoji", "api.emoji.create.duplicate.app_error", nil, "", http.StatusBadRequest)
return
}
@@ -110,7 +111,7 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if result := <-app.Srv.Store.Emoji().Save(emoji); result.Err != nil {
+ if result := <-c.App.Srv.Store.Emoji().Save(emoji); result.Err != nil {
c.Err = result.Err
return
} else {
@@ -141,7 +142,7 @@ func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- emoji, err := app.GetEmoji(id)
+ emoji, err := c.App.GetEmoji(id)
if err != nil {
c.Err = err
return
@@ -152,7 +153,7 @@ func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.DeleteEmoji(emoji)
+ err = c.App.DeleteEmoji(emoji)
if err != nil {
c.Err = err
return
@@ -180,7 +181,7 @@ func getEmojiImage(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- image, imageType, err := app.GetEmojiImage(id)
+ image, imageType, err := c.App.GetEmojiImage(id)
if err != nil {
c.Err = err
return
diff --git a/api/emoji_test.go b/api/emoji_test.go
index 4de5f41dd..ee3bc0bf9 100644
--- a/api/emoji_test.go
+++ b/api/emoji_test.go
@@ -42,11 +42,11 @@ func TestGetEmoji(t *testing.T) {
}
for i, emoji := range emojis {
- emojis[i] = store.Must(app.Srv.Store.Emoji().Save(emoji)).(*model.Emoji)
+ emojis[i] = store.Must(th.App.Srv.Store.Emoji().Save(emoji)).(*model.Emoji)
}
defer func() {
for _, emoji := range emojis {
- store.Must(app.Srv.Store.Emoji().Delete(emoji.Id, time.Now().Unix()))
+ store.Must(th.App.Srv.Store.Emoji().Delete(emoji.Id, time.Now().Unix()))
}
}()
@@ -74,7 +74,7 @@ func TestGetEmoji(t *testing.T) {
Name: model.NewId(),
DeleteAt: 1,
}
- deleted = store.Must(app.Srv.Store.Emoji().Save(deleted)).(*model.Emoji)
+ deleted = store.Must(th.App.Srv.Store.Emoji().Save(deleted)).(*model.Emoji)
if returnedEmojis, err := Client.ListEmoji(); err != nil {
t.Fatal(err)
@@ -264,10 +264,10 @@ func TestDeleteEmoji(t *testing.T) {
}
func createTestEmoji(t *testing.T, emoji *model.Emoji, imageData []byte) *model.Emoji {
- emoji = store.Must(app.Srv.Store.Emoji().Save(emoji)).(*model.Emoji)
+ emoji = store.Must(app.Global().Srv.Store.Emoji().Save(emoji)).(*model.Emoji)
if err := utils.WriteFile(imageData, "emoji/"+emoji.Id+"/image"); err != nil {
- store.Must(app.Srv.Store.Emoji().Delete(emoji.Id, time.Now().Unix()))
+ store.Must(app.Global().Srv.Store.Emoji().Delete(emoji.Id, time.Now().Unix()))
t.Fatalf("failed to write image: %v", err.Error())
}
diff --git a/api/file.go b/api/file.go
index c7ed15a33..6fd963799 100644
--- a/api/file.go
+++ b/api/file.go
@@ -74,12 +74,12 @@ func uploadFile(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_UPLOAD_FILE) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_UPLOAD_FILE) {
c.SetPermissionError(model.PERMISSION_UPLOAD_FILE)
return
}
- resStruct, err := app.UploadFiles(c.TeamId, channelId, c.Session.UserId, m.File["files"], m.Value["client_ids"])
+ resStruct, err := c.App.UploadFiles(c.TeamId, channelId, c.Session.UserId, m.File["files"], m.Value["client_ids"])
if err != nil {
c.Err = err
return
@@ -205,7 +205,7 @@ func getFileInfoForRequest(c *Context, r *http.Request, requireFileVisible bool)
return nil, NewInvalidParamError("getFileInfoForRequest", "file_id")
}
- info, err := app.GetFileInfo(fileId)
+ info, err := c.App.GetFileInfo(fileId)
if err != nil {
return nil, err
}
@@ -218,7 +218,7 @@ func getFileInfoForRequest(c *Context, r *http.Request, requireFileVisible bool)
}
if requireFileVisible {
- if !app.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return nil, c.Err
}
@@ -261,7 +261,7 @@ func getPublicFileOld(c *Context, w http.ResponseWriter, r *http.Request) {
path := "teams/" + teamId + "/channels/" + channelId + "/users/" + userId + "/" + filename
var info *model.FileInfo
- if result := <-app.Srv.Store.FileInfo().GetByPath(path); result.Err != nil {
+ if result := <-c.App.Srv.Store.FileInfo().GetByPath(path); result.Err != nil {
c.Err = result.Err
return
} else {
diff --git a/api/file_test.go b/api/file_test.go
index 0d64608c3..367a414fb 100644
--- a/api/file_test.go
+++ b/api/file_test.go
@@ -61,7 +61,7 @@ func TestUploadFile(t *testing.T) {
}
var info *model.FileInfo
- if result := <-app.Srv.Store.FileInfo().Get(uploadInfo.Id); result.Err != nil {
+ if result := <-th.App.Srv.Store.FileInfo().Get(uploadInfo.Id); result.Err != nil {
t.Fatal(result.Err)
} else {
info = result.Data.(*model.FileInfo)
@@ -170,7 +170,7 @@ func TestGetFileInfo(t *testing.T) {
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
// Other user shouldn't be able to get file info for this file if they're not in the channel for it
if _, err := Client.GetFileInfo(fileId); err == nil {
@@ -186,7 +186,7 @@ func TestGetFileInfo(t *testing.T) {
t.Fatal("other user got incorrect file")
}
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
}
@@ -239,7 +239,7 @@ func TestGetFile(t *testing.T) {
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
// Other user shouldn't be able to get file for this file if they're not in the channel for it
if _, err := Client.GetFile(fileId); err == nil {
@@ -268,7 +268,7 @@ func TestGetFile(t *testing.T) {
body.Close()
}
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
}
@@ -308,7 +308,7 @@ func TestGetFileThumbnail(t *testing.T) {
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
// Other user shouldn't be able to get thumbnail for this file if they're not in the channel for it
if _, err := Client.GetFileThumbnail(fileId); err == nil {
@@ -324,7 +324,7 @@ func TestGetFileThumbnail(t *testing.T) {
body.Close()
}
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
}
@@ -364,7 +364,7 @@ func TestGetFilePreview(t *testing.T) {
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
// Other user shouldn't be able to get preview for this file if they're not in the channel for it
if _, err := Client.GetFilePreview(fileId); err == nil {
@@ -380,7 +380,7 @@ func TestGetFilePreview(t *testing.T) {
body.Close()
}
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
}
@@ -413,7 +413,7 @@ func TestGetPublicFile(t *testing.T) {
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
link := Client.MustGeneric(Client.GetPublicLink(fileId)).(string)
@@ -447,7 +447,7 @@ func TestGetPublicFile(t *testing.T) {
t.Fatal("should've failed to get image with public link after salt changed")
}
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
}
@@ -483,12 +483,12 @@ func TestGetPublicFileOld(t *testing.T) {
CreatorId: th.BasicUser.Id,
Path: fmt.Sprintf("teams/%s/channels/%s/users/%s/%s/%s", th.BasicTeam.Id, channel.Id, th.BasicUser.Id, fileId, "test.png"),
}
- store.Must(app.Srv.Store.FileInfo().Save(&fileInfo))
+ store.Must(th.App.Srv.Store.FileInfo().Save(&fileInfo))
uploadFileOld(t, data, fmt.Sprintf("data/teams/%s/channels/%s/users/%s/%s", th.BasicTeam.Id, channel.Id, th.BasicUser.Id, fileId), "test.png")
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
// reconstruct old style of link
siteURL := *utils.Cfg.ServiceSettings.SiteURL
@@ -526,7 +526,7 @@ func TestGetPublicFileOld(t *testing.T) {
t.Fatal("should've failed to get image with public link after salt changed")
}
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
}
@@ -565,7 +565,7 @@ func TestGetPublicLink(t *testing.T) {
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
utils.Cfg.FileSettings.EnablePublicLink = false
@@ -600,7 +600,7 @@ func TestGetPublicLink(t *testing.T) {
// Wait a bit for files to ready
time.Sleep(2 * time.Second)
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
}
@@ -635,7 +635,7 @@ func TestMigrateFilenamesToFileInfos(t *testing.T) {
}
// Bypass the Client whenever possible since we're trying to simulate a pre-3.5 post
- post1 := store.Must(app.Srv.Store.Post().Save(&model.Post{
+ post1 := store.Must(th.App.Srv.Store.Post().Save(&model.Post{
UserId: user1.Id,
ChannelId: channel1.Id,
Message: "test",
@@ -757,20 +757,20 @@ func TestFindTeamIdForFilename(t *testing.T) {
}
// Bypass the Client whenever possible since we're trying to simulate a pre-3.5 post
- post1 := store.Must(app.Srv.Store.Post().Save(&model.Post{
+ post1 := store.Must(th.App.Srv.Store.Post().Save(&model.Post{
UserId: user1.Id,
ChannelId: channel1.Id,
Message: "test",
Filenames: []string{fmt.Sprintf("/%s/%s/%s/%s", channel1.Id, user1.Id, fileId1, "test.png")},
})).(*model.Post)
- if teamId := app.FindTeamIdForFilename(post1, post1.Filenames[0]); teamId != team1.Id {
+ if teamId := th.App.FindTeamIdForFilename(post1, post1.Filenames[0]); teamId != team1.Id {
t.Log(teamId)
t.Fatal("file should've been found under team1")
}
Client.SetTeamId(team2.Id)
- post2 := store.Must(app.Srv.Store.Post().Save(&model.Post{
+ post2 := store.Must(th.App.Srv.Store.Post().Save(&model.Post{
UserId: user1.Id,
ChannelId: channel2.Id,
Message: "test",
@@ -778,7 +778,7 @@ func TestFindTeamIdForFilename(t *testing.T) {
})).(*model.Post)
Client.SetTeamId(team1.Id)
- if teamId := app.FindTeamIdForFilename(post2, post2.Filenames[0]); teamId != team2.Id {
+ if teamId := th.App.FindTeamIdForFilename(post2, post2.Filenames[0]); teamId != team2.Id {
t.Fatal("file should've been found under team2")
}
}
@@ -808,13 +808,13 @@ func TestGetInfoForFilename(t *testing.T) {
} else {
fileId1 = Client.MustGeneric(Client.UploadPostAttachment(data, channel1.Id, "test.png")).(*model.FileUploadResponse).FileInfos[0].Id
uploadFileOld(t, data, fmt.Sprintf("data/teams/%s/channels/%s/users/%s/%s", team1.Id, channel1.Id, user1.Id, fileId1), "test.png")
- path = store.Must(app.Srv.Store.FileInfo().Get(fileId1)).(*model.FileInfo).Path
- thumbnailPath = store.Must(app.Srv.Store.FileInfo().Get(fileId1)).(*model.FileInfo).ThumbnailPath
- previewPath = store.Must(app.Srv.Store.FileInfo().Get(fileId1)).(*model.FileInfo).PreviewPath
+ path = store.Must(th.App.Srv.Store.FileInfo().Get(fileId1)).(*model.FileInfo).Path
+ thumbnailPath = store.Must(th.App.Srv.Store.FileInfo().Get(fileId1)).(*model.FileInfo).ThumbnailPath
+ previewPath = store.Must(th.App.Srv.Store.FileInfo().Get(fileId1)).(*model.FileInfo).PreviewPath
}
// Bypass the Client whenever possible since we're trying to simulate a pre-3.5 post
- post1 := store.Must(app.Srv.Store.Post().Save(&model.Post{
+ post1 := store.Must(th.App.Srv.Store.Post().Save(&model.Post{
UserId: user1.Id,
ChannelId: channel1.Id,
Message: "test",
diff --git a/api/license.go b/api/license.go
index 081fa7ed9..84ee076e6 100644
--- a/api/license.go
+++ b/api/license.go
@@ -55,7 +55,7 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
buf := bytes.NewBuffer(nil)
io.Copy(buf, file)
- if license, err := app.SaveLicense(buf.Bytes()); err != nil {
+ if license, err := c.App.SaveLicense(buf.Bytes()); err != nil {
if err.Id == model.EXPIRED_LICENSE_ERROR {
c.LogAudit("failed - expired or non-started license")
} else if err.Id == model.INVALID_LICENSE_ERROR {
@@ -74,7 +74,7 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("")
- if err := app.RemoveLicense(); err != nil {
+ if err := c.App.RemoveLicense(); err != nil {
c.Err = err
return
}
diff --git a/api/license_test.go b/api/license_test.go
index 15d3b9eef..a8f36a2c7 100644
--- a/api/license_test.go
+++ b/api/license_test.go
@@ -4,8 +4,9 @@
package api
import (
- "github.com/mattermost/platform/utils"
"testing"
+
+ "github.com/mattermost/platform/utils"
)
func TestGetLicenceConfig(t *testing.T) {
diff --git a/api/oauth.go b/api/oauth.go
index a239e889b..9d6c9bf52 100644
--- a/api/oauth.go
+++ b/api/oauth.go
@@ -43,7 +43,7 @@ func registerOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
oauthApp.CreatorId = c.Session.UserId
- rapp, err := app.CreateOAuthApp(oauthApp)
+ rapp, err := c.App.CreateOAuthApp(oauthApp)
if err != nil {
c.Err = err
@@ -63,9 +63,9 @@ func getOAuthApps(c *Context, w http.ResponseWriter, r *http.Request) {
var apps []*model.OAuthApp
var err *model.AppError
if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) {
- apps, err = app.GetOAuthApps(0, 100000)
+ apps, err = c.App.GetOAuthApps(0, 100000)
} else {
- apps, err = app.GetOAuthAppsByCreator(c.Session.UserId, 0, 100000)
+ apps, err = c.App.GetOAuthAppsByCreator(c.Session.UserId, 0, 100000)
}
if err != nil {
@@ -80,7 +80,7 @@ func getOAuthAppInfo(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
clientId := params["client_id"]
- oauthApp, err := app.GetOAuthApp(clientId)
+ oauthApp, err := c.App.GetOAuthApp(clientId)
if err != nil {
c.Err = err
@@ -123,7 +123,7 @@ func allowOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
State: state,
}
- redirectUrl, err := app.AllowOAuthAppAccessToUser(c.Session.UserId, authRequest)
+ redirectUrl, err := c.App.AllowOAuthAppAccessToUser(c.Session.UserId, authRequest)
if err != nil {
c.Err = err
@@ -136,7 +136,7 @@ func allowOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
}
func getAuthorizedApps(c *Context, w http.ResponseWriter, r *http.Request) {
- apps, err := app.GetAuthorizedAppsForUser(c.Session.UserId, 0, 10000)
+ apps, err := c.App.GetAuthorizedAppsForUser(c.Session.UserId, 0, 10000)
if err != nil {
c.Err = err
return
@@ -151,13 +151,13 @@ func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
loginHint := r.URL.Query().Get("login_hint")
redirectTo := r.URL.Query().Get("redirect_to")
- teamId, err := app.GetTeamIdFromQuery(r.URL.Query())
+ teamId, err := c.App.GetTeamIdFromQuery(r.URL.Query())
if err != nil {
c.Err = err
return
}
- if authUrl, err := app.GetOAuthLoginEndpoint(w, r, service, teamId, model.OAUTH_ACTION_LOGIN, redirectTo, loginHint); err != nil {
+ if authUrl, err := c.App.GetOAuthLoginEndpoint(w, r, service, teamId, model.OAUTH_ACTION_LOGIN, redirectTo, loginHint); err != nil {
c.Err = err
return
} else {
@@ -174,13 +174,13 @@ func signupWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- teamId, err := app.GetTeamIdFromQuery(r.URL.Query())
+ teamId, err := c.App.GetTeamIdFromQuery(r.URL.Query())
if err != nil {
c.Err = err
return
}
- if authUrl, err := app.GetOAuthSignupEndpoint(w, r, service, teamId); err != nil {
+ if authUrl, err := c.App.GetOAuthSignupEndpoint(w, r, service, teamId); err != nil {
c.Err = err
return
} else {
@@ -204,7 +204,7 @@ func deleteOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oauthApp, err := app.GetOAuthApp(id)
+ oauthApp, err := c.App.GetOAuthApp(id)
if err != nil {
c.Err = err
return
@@ -216,7 +216,7 @@ func deleteOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.DeleteOAuthApp(id)
+ err = c.App.DeleteOAuthApp(id)
if err != nil {
c.Err = err
return
@@ -230,7 +230,7 @@ func deauthorizeOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
id := params["id"]
- err := app.DeauthorizeOAuthAppForUser(c.Session.UserId, id)
+ err := c.App.DeauthorizeOAuthAppForUser(c.Session.UserId, id)
if err != nil {
c.Err = err
return
@@ -244,7 +244,7 @@ func regenerateOAuthSecret(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
id := params["id"]
- oauthApp, err := app.GetOAuthApp(id)
+ oauthApp, err := c.App.GetOAuthApp(id)
if err != nil {
c.Err = err
return
@@ -255,7 +255,7 @@ func regenerateOAuthSecret(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oauthApp, err = app.RegenerateOAuthAppSecret(oauthApp)
+ oauthApp, err = c.App.RegenerateOAuthAppSecret(oauthApp)
if err != nil {
c.Err = err
return
diff --git a/api/oauth_test.go b/api/oauth_test.go
index 584b4183b..4ff6c70bd 100644
--- a/api/oauth_test.go
+++ b/api/oauth_test.go
@@ -12,7 +12,6 @@ import (
"strings"
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/einterfaces"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
@@ -77,7 +76,7 @@ func TestOAuthRegisterApp(t *testing.T) {
user := &model.User{Email: strings.ToLower("test+"+model.NewId()) + "@simulator.amazonses.com", Password: "hello1", Username: "n" + model.NewId(), EmailVerified: true}
ruser := Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
- app.UpdateUserRoles(ruser.Id, "")
+ th.App.UpdateUserRoles(ruser.Id, "")
Client.Logout()
Client.Login(user.Email, user.Password)
@@ -233,7 +232,7 @@ func TestOAuthGetAppsByUser(t *testing.T) {
user := &model.User{Email: strings.ToLower("test+"+model.NewId()) + "@simulator.amazonses.com", Password: "hello1", Username: "n" + model.NewId(), EmailVerified: true}
ruser := Client.Must(AdminClient.CreateUser(user, "")).Data.(*model.User)
- app.UpdateUserRoles(ruser.Id, "")
+ th.App.UpdateUserRoles(ruser.Id, "")
Client.Logout()
Client.Login(user.Email, user.Password)
@@ -338,7 +337,7 @@ func TestOAuthDeauthorizeApp(t *testing.T) {
a1.RefreshToken = model.NewId()
a1.ExpiresAt = model.GetMillis()
a1.RedirectUri = "http://example.com"
- <-app.Srv.Store.OAuth().SaveAccessData(&a1)
+ <-th.App.Srv.Store.OAuth().SaveAccessData(&a1)
if err := Client.OAuthDeauthorizeApp(oauthApp.Id); err != nil {
t.Fatal(err)
@@ -446,7 +445,7 @@ func TestOAuthDeleteApp(t *testing.T) {
user := &model.User{Email: strings.ToLower("test+"+model.NewId()) + "@simulator.amazonses.com", Password: "hello1", Username: "n" + model.NewId(), EmailVerified: true}
ruser := Client.Must(AdminClient.CreateUser(user, "")).Data.(*model.User)
- app.UpdateUserRoles(ruser.Id, "")
+ th.App.UpdateUserRoles(ruser.Id, "")
Client.Logout()
Client.Login(user.Email, user.Password)
@@ -675,7 +674,7 @@ func TestOAuthAccessToken(t *testing.T) {
}
authData := &model.AuthData{ClientId: oauthApp.Id, RedirectUri: oauthApp.CallbackUrls[0], UserId: th.BasicUser.Id, Code: model.NewId(), ExpiresIn: -1}
- <-app.Srv.Store.OAuth().SaveAuthData(authData)
+ <-th.App.Srv.Store.OAuth().SaveAuthData(authData)
data.Set("grant_type", model.ACCESS_TOKEN_GRANT_TYPE)
data.Set("client_id", oauthApp.Id)
@@ -688,7 +687,7 @@ func TestOAuthAccessToken(t *testing.T) {
}
authData = &model.AuthData{ClientId: oauthApp.Id, RedirectUri: oauthApp.CallbackUrls[0], UserId: th.BasicUser.Id, Code: model.NewId(), ExpiresIn: model.AUTHCODE_EXPIRE_TIME}
- <-app.Srv.Store.OAuth().SaveAuthData(authData)
+ <-th.App.Srv.Store.OAuth().SaveAuthData(authData)
data.Set("code", authData.Code)
if _, err := Client.GetAccessToken(data); err == nil {
@@ -787,7 +786,7 @@ func TestOAuthComplete(t *testing.T) {
closeBody(r)
}
- if result := <-app.Srv.Store.User().UpdateAuthData(
+ if result := <-th.App.Srv.Store.User().UpdateAuthData(
th.BasicUser.Id, model.SERVICE_GITLAB, &th.BasicUser.Email, th.BasicUser.Email, true); result.Err != nil {
t.Fatal(result.Err)
}
diff --git a/api/post.go b/api/post.go
index 89f85160f..0b5a5c612 100644
--- a/api/post.go
+++ b/api/post.go
@@ -52,9 +52,9 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
post.UserId = c.Session.UserId
hasPermission := false
- if app.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_CREATE_POST) {
+ if c.App.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_CREATE_POST) {
hasPermission = true
- } else if channel, err := app.GetChannel(post.ChannelId); err == nil {
+ } else if channel, err := c.App.GetChannel(post.ChannelId); err == nil {
// Temporary permission check method until advanced permissions, please do not copy
if channel.Type == model.CHANNEL_OPEN && app.SessionHasPermissionToTeam(c.Session, channel.TeamId, model.PERMISSION_CREATE_POST_PUBLIC) {
hasPermission = true
@@ -70,7 +70,7 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
post.CreateAt = 0
}
- rp, err := app.CreatePostAsUser(post)
+ rp, err := c.App.CreatePostAsUser(post)
if err != nil {
c.Err = err
return
@@ -87,14 +87,14 @@ func updatePost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_EDIT_POST) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_EDIT_POST) {
c.SetPermissionError(model.PERMISSION_EDIT_POST)
return
}
post.UserId = c.Session.UserId
- rpost, err := app.UpdatePost(post, true)
+ rpost, err := c.App.UpdatePost(post, true)
if err != nil {
c.Err = err
return
@@ -118,7 +118,7 @@ func saveIsPinnedPost(c *Context, w http.ResponseWriter, r *http.Request, isPinn
return
}
- pchan := app.Srv.Store.Post().Get(postId)
+ pchan := c.App.Srv.Store.Post().Get(postId)
var oldPost *model.Post
if result := <-pchan; result.Err != nil {
@@ -130,7 +130,7 @@ func saveIsPinnedPost(c *Context, w http.ResponseWriter, r *http.Request, isPinn
*newPost = *oldPost
newPost.IsPinned = isPinned
- if result := <-app.Srv.Store.Post().Update(newPost, oldPost); result.Err != nil {
+ if result := <-c.App.Srv.Store.Post().Update(newPost, oldPost); result.Err != nil {
c.Err = result.Err
return
} else {
@@ -141,7 +141,7 @@ func saveIsPinnedPost(c *Context, w http.ResponseWriter, r *http.Request, isPinn
go app.Publish(message)
- app.InvalidateCacheForChannelPosts(rpost.ChannelId)
+ c.App.InvalidateCacheForChannelPosts(rpost.ChannelId)
w.Write([]byte(rpost.ToJson()))
}
@@ -176,7 +176,7 @@ func getFlaggedPosts(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if posts, err := app.GetFlaggedPostsForTeam(c.Session.UserId, c.TeamId, offset, limit); err != nil {
+ if posts, err := c.App.GetFlaggedPostsForTeam(c.Session.UserId, c.TeamId, offset, limit); err != nil {
c.Err = err
return
} else {
@@ -205,18 +205,18 @@ func getPosts(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, id, model.PERMISSION_CREATE_POST) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, id, model.PERMISSION_CREATE_POST) {
c.SetPermissionError(model.PERMISSION_CREATE_POST)
return
}
- etag := app.GetPostsEtag(id)
+ etag := c.App.GetPostsEtag(id)
if HandleEtag(etag, "Get Posts", w, r) {
return
}
- if list, err := app.GetPosts(id, offset, limit); err != nil {
+ if list, err := c.App.GetPosts(id, offset, limit); err != nil {
c.Err = err
return
} else {
@@ -241,12 +241,12 @@ func getPostsSince(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, id, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if list, err := app.GetPostsSince(id, time); err != nil {
+ if list, err := c.App.GetPostsSince(id, time); err != nil {
c.Err = err
return
} else {
@@ -270,12 +270,12 @@ func getPost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if list, err := app.GetPostThread(postId); err != nil {
+ if list, err := c.App.GetPostThread(postId); err != nil {
c.Err = err
return
} else if HandleEtag(list.Etag(), "Get Post", w, r) {
@@ -300,7 +300,7 @@ func getPostById(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if list, err := app.GetPostThread(postId); err != nil {
+ if list, err := c.App.GetPostThread(postId); err != nil {
c.Err = err
return
} else {
@@ -310,7 +310,7 @@ func getPostById(c *Context, w http.ResponseWriter, r *http.Request) {
}
post := list.Posts[list.Order[0]]
- if !app.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -334,7 +334,7 @@ func getPermalinkTmp(c *Context, w http.ResponseWriter, r *http.Request) {
}
var channel *model.Channel
- if result := <-app.Srv.Store.Channel().GetForPost(postId); result.Err == nil {
+ if result := <-c.App.Srv.Store.Channel().GetForPost(postId); result.Err == nil {
channel = result.Data.(*model.Channel)
} else {
c.SetInvalidParam("getPermalinkTmp", "postId")
@@ -342,18 +342,18 @@ func getPermalinkTmp(c *Context, w http.ResponseWriter, r *http.Request) {
}
if channel.Type == model.CHANNEL_OPEN {
- if !app.HasPermissionToChannelByPost(c.Session.UserId, postId, model.PERMISSION_JOIN_PUBLIC_CHANNELS) {
+ if !c.App.HasPermissionToChannelByPost(c.Session.UserId, postId, model.PERMISSION_JOIN_PUBLIC_CHANNELS) {
c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_CHANNELS)
return
}
} else {
- if !app.HasPermissionToChannelByPost(c.Session.UserId, postId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.HasPermissionToChannelByPost(c.Session.UserId, postId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
}
- if list, err := app.GetPermalinkPost(postId, c.Session.UserId); err != nil {
+ if list, err := c.App.GetPermalinkPost(postId, c.Session.UserId); err != nil {
c.Err = err
return
} else if HandleEtag(list.Etag(), "Get Permalink TMP", w, r) {
@@ -379,17 +379,17 @@ func deletePost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_DELETE_POST) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_DELETE_POST) {
c.SetPermissionError(model.PERMISSION_DELETE_POST)
return
}
- if !app.SessionHasPermissionToPost(c.Session, postId, model.PERMISSION_DELETE_OTHERS_POSTS) {
+ if !c.App.SessionHasPermissionToPost(c.Session, postId, model.PERMISSION_DELETE_OTHERS_POSTS) {
c.SetPermissionError(model.PERMISSION_DELETE_OTHERS_POSTS)
return
}
- if post, err := app.DeletePost(postId); err != nil {
+ if post, err := c.App.DeletePost(postId); err != nil {
c.Err = err
return
} else {
@@ -439,19 +439,19 @@ func getPostsBeforeOrAfter(c *Context, w http.ResponseWriter, r *http.Request, b
return
}
- if !app.SessionHasPermissionToChannel(c.Session, id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, id, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
// We can do better than this etag in this situation
- etag := app.GetPostsEtag(id)
+ etag := c.App.GetPostsEtag(id)
if HandleEtag(etag, "Get Posts Before or After", w, r) {
return
}
- if list, err := app.GetPostsAroundPost(postId, id, offset, numPosts, before); err != nil {
+ if list, err := c.App.GetPostsAroundPost(postId, id, offset, numPosts, before); err != nil {
c.Err = err
return
} else {
@@ -474,7 +474,7 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
isOrSearch = val.(bool)
}
- posts, err := app.SearchPostsInTeam(terms, c.Session.UserId, c.TeamId, isOrSearch)
+ posts, err := c.App.SearchPostsInTeam(terms, c.Session.UserId, c.TeamId, isOrSearch)
if err != nil {
c.Err = err
return
@@ -499,12 +499,12 @@ func getFileInfosForPost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if infos, err := app.GetFileInfosForPost(postId, false); err != nil {
+ if infos, err := c.App.GetFileInfosForPost(postId, false); err != nil {
c.Err = err
return
} else if HandleEtag(model.GetEtagForFileInfos(infos), "Get File Infos For Post", w, r) {
diff --git a/api/post_test.go b/api/post_test.go
index 18bf22f5c..23c7fa371 100644
--- a/api/post_test.go
+++ b/api/post_test.go
@@ -142,7 +142,7 @@ func TestCreatePost(t *testing.T) {
} else if rpost9 := resp.Data.(*model.Post); len(rpost9.FileIds) != 3 {
t.Fatal("post should have 3 files")
} else {
- infos := store.Must(app.Srv.Store.FileInfo().GetForPost(rpost9.Id, true, true)).([]*model.FileInfo)
+ infos := store.Must(adm.App.Srv.Store.FileInfo().GetForPost(rpost9.Id, true, true)).([]*model.FileInfo)
if len(infos) != 3 {
t.Fatal("should've attached all 3 files to post")
@@ -164,7 +164,7 @@ func TestCreatePost(t *testing.T) {
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
- defaultChannel := store.Must(app.Srv.Store.Channel().GetByName(team.Id, model.DEFAULT_CHANNEL, true)).(*model.Channel)
+ defaultChannel := store.Must(adm.App.Srv.Store.Channel().GetByName(team.Id, model.DEFAULT_CHANNEL, true)).(*model.Channel)
defaultPost := &model.Post{
ChannelId: defaultChannel.Id,
Message: "Default Channel Post",
@@ -173,7 +173,7 @@ func TestCreatePost(t *testing.T) {
t.Fatal("should have failed -- ExperimentalTownSquareIsReadOnly is true and it's a read only channel")
}
- adminDefaultChannel := store.Must(app.Srv.Store.Channel().GetByName(adminTeam.Id, model.DEFAULT_CHANNEL, true)).(*model.Channel)
+ adminDefaultChannel := store.Must(adm.App.Srv.Store.Channel().GetByName(adminTeam.Id, model.DEFAULT_CHANNEL, true)).(*model.Channel)
adminDefaultPost := &model.Post{
ChannelId: adminDefaultChannel.Id,
Message: "Admin Default Channel Post",
@@ -1085,7 +1085,7 @@ func TestEmailMention(t *testing.T) {
data["comments"] = "any"
Client.Must(Client.UpdateUserNotify(data))
- store.Must(app.Srv.Store.Preference().Save(&model.Preferences{{
+ store.Must(th.App.Srv.Store.Preference().Save(&model.Preferences{{
UserId: th.BasicUser2.Id,
Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS,
Name: model.PREFERENCE_NAME_EMAIL_INTERVAL,
@@ -1189,28 +1189,28 @@ func TestGetFlaggedPosts(t *testing.T) {
func TestGetMessageForNotification(t *testing.T) {
Setup().InitBasic()
- testPng := store.Must(app.Srv.Store.FileInfo().Save(&model.FileInfo{
+ testPng := store.Must(app.Global().Srv.Store.FileInfo().Save(&model.FileInfo{
CreatorId: model.NewId(),
Path: "test1.png",
Name: "test1.png",
MimeType: "image/png",
})).(*model.FileInfo)
- testJpg1 := store.Must(app.Srv.Store.FileInfo().Save(&model.FileInfo{
+ testJpg1 := store.Must(app.Global().Srv.Store.FileInfo().Save(&model.FileInfo{
CreatorId: model.NewId(),
Path: "test2.jpg",
Name: "test2.jpg",
MimeType: "image/jpeg",
})).(*model.FileInfo)
- testFile := store.Must(app.Srv.Store.FileInfo().Save(&model.FileInfo{
+ testFile := store.Must(app.Global().Srv.Store.FileInfo().Save(&model.FileInfo{
CreatorId: model.NewId(),
Path: "test1.go",
Name: "test1.go",
MimeType: "text/plain",
})).(*model.FileInfo)
- testJpg2 := store.Must(app.Srv.Store.FileInfo().Save(&model.FileInfo{
+ testJpg2 := store.Must(app.Global().Srv.Store.FileInfo().Save(&model.FileInfo{
CreatorId: model.NewId(),
Path: "test3.jpg",
Name: "test3.jpg",
@@ -1224,39 +1224,39 @@ func TestGetMessageForNotification(t *testing.T) {
Message: "test",
}
- if app.GetMessageForNotification(post, translateFunc) != "test" {
+ if app.Global().GetMessageForNotification(post, translateFunc) != "test" {
t.Fatal("should've returned message text")
}
post.FileIds = model.StringArray{testPng.Id}
- store.Must(app.Srv.Store.FileInfo().AttachToPost(testPng.Id, post.Id))
- if app.GetMessageForNotification(post, translateFunc) != "test" {
+ store.Must(app.Global().Srv.Store.FileInfo().AttachToPost(testPng.Id, post.Id))
+ if app.Global().GetMessageForNotification(post, translateFunc) != "test" {
t.Fatal("should've returned message text, even with attachments")
}
post.Message = ""
- if message := app.GetMessageForNotification(post, translateFunc); message != "1 image sent: test1.png" {
+ if message := app.Global().GetMessageForNotification(post, translateFunc); message != "1 image sent: test1.png" {
t.Fatal("should've returned number of images:", message)
}
post.FileIds = model.StringArray{testPng.Id, testJpg1.Id}
- store.Must(app.Srv.Store.FileInfo().AttachToPost(testJpg1.Id, post.Id))
- app.Srv.Store.FileInfo().InvalidateFileInfosForPostCache(post.Id)
- if message := app.GetMessageForNotification(post, translateFunc); message != "2 images sent: test1.png, test2.jpg" && message != "2 images sent: test2.jpg, test1.png" {
+ store.Must(app.Global().Srv.Store.FileInfo().AttachToPost(testJpg1.Id, post.Id))
+ app.Global().Srv.Store.FileInfo().InvalidateFileInfosForPostCache(post.Id)
+ if message := app.Global().GetMessageForNotification(post, translateFunc); message != "2 images sent: test1.png, test2.jpg" && message != "2 images sent: test2.jpg, test1.png" {
t.Fatal("should've returned number of images:", message)
}
post.Id = model.NewId()
post.FileIds = model.StringArray{testFile.Id}
- store.Must(app.Srv.Store.FileInfo().AttachToPost(testFile.Id, post.Id))
- if message := app.GetMessageForNotification(post, translateFunc); message != "1 file sent: test1.go" {
+ store.Must(app.Global().Srv.Store.FileInfo().AttachToPost(testFile.Id, post.Id))
+ if message := app.Global().GetMessageForNotification(post, translateFunc); message != "1 file sent: test1.go" {
t.Fatal("should've returned number of files:", message)
}
- store.Must(app.Srv.Store.FileInfo().AttachToPost(testJpg2.Id, post.Id))
- app.Srv.Store.FileInfo().InvalidateFileInfosForPostCache(post.Id)
+ store.Must(app.Global().Srv.Store.FileInfo().AttachToPost(testJpg2.Id, post.Id))
+ app.Global().Srv.Store.FileInfo().InvalidateFileInfosForPostCache(post.Id)
post.FileIds = model.StringArray{testFile.Id, testJpg2.Id}
- if message := app.GetMessageForNotification(post, translateFunc); message != "2 files sent: test1.go, test3.jpg" && message != "2 files sent: test3.jpg, test1.go" {
+ if message := app.Global().GetMessageForNotification(post, translateFunc); message != "2 files sent: test1.go, test3.jpg" && message != "2 files sent: test3.jpg, test1.go" {
t.Fatal("should've returned number of mixed files:", message)
}
}
diff --git a/api/preference.go b/api/preference.go
index de8adf049..b8bdc6f94 100644
--- a/api/preference.go
+++ b/api/preference.go
@@ -4,12 +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"
- "net/http"
)
func InitPreference() {
@@ -23,7 +23,7 @@ func InitPreference() {
}
func getAllPreferences(c *Context, w http.ResponseWriter, r *http.Request) {
- if result := <-app.Srv.Store.Preference().GetAll(c.Session.UserId); result.Err != nil {
+ if result := <-c.App.Srv.Store.Preference().GetAll(c.Session.UserId); result.Err != nil {
c.Err = result.Err
} else {
data := result.Data.(model.Preferences)
@@ -39,7 +39,7 @@ func savePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.UpdatePreferences(c.Session.UserId, preferences); err != nil {
+ if err := c.App.UpdatePreferences(c.Session.UserId, preferences); err != nil {
c.Err = err
return
}
@@ -51,7 +51,7 @@ func getPreferenceCategory(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
category := params["category"]
- if result := <-app.Srv.Store.Preference().GetCategory(c.Session.UserId, category); result.Err != nil {
+ if result := <-c.App.Srv.Store.Preference().GetCategory(c.Session.UserId, category); result.Err != nil {
c.Err = result.Err
} else {
data := result.Data.(model.Preferences)
@@ -65,7 +65,7 @@ func getPreference(c *Context, w http.ResponseWriter, r *http.Request) {
category := params["category"]
name := params["name"]
- if result := <-app.Srv.Store.Preference().Get(c.Session.UserId, category, name); result.Err != nil {
+ if result := <-c.App.Srv.Store.Preference().Get(c.Session.UserId, category, name); result.Err != nil {
c.Err = result.Err
} else {
data := result.Data.(model.Preference)
@@ -80,7 +80,7 @@ func deletePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.DeletePreferences(c.Session.UserId, preferences); err != nil {
+ if err := c.App.DeletePreferences(c.Session.UserId, preferences); err != nil {
c.Err = err
return
}
diff --git a/api/preference_test.go b/api/preference_test.go
index 8388138c1..bff6e4501 100644
--- a/api/preference_test.go
+++ b/api/preference_test.go
@@ -4,8 +4,9 @@
package api
import (
- "github.com/mattermost/platform/model"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestGetAllPreferences(t *testing.T) {
diff --git a/api/reaction.go b/api/reaction.go
index df095b8b2..e3e207e2a 100644
--- a/api/reaction.go
+++ b/api/reaction.go
@@ -41,7 +41,7 @@ func saveReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -54,7 +54,7 @@ func saveReaction(c *Context, w http.ResponseWriter, r *http.Request) {
var post *model.Post
- if result := <-app.Srv.Store.Post().Get(reaction.PostId); result.Err != nil {
+ if result := <-c.App.Srv.Store.Post().Get(reaction.PostId); result.Err != nil {
c.Err = result.Err
return
} else if post = result.Data.(*model.PostList).Posts[postId]; post.ChannelId != channelId {
@@ -63,7 +63,7 @@ func saveReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if reaction, err := app.SaveReactionForPost(reaction); err != nil {
+ if reaction, err := c.App.SaveReactionForPost(reaction); err != nil {
c.Err = err
return
} else {
@@ -92,7 +92,7 @@ func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -103,7 +103,7 @@ func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.DeleteReactionForPost(reaction)
+ err := c.App.DeleteReactionForPost(reaction)
if err != nil {
c.Err = err
return
@@ -120,7 +120,7 @@ func sendReactionEvent(event string, channelId string, reaction *model.Reaction,
app.Publish(message)
// THe post is always modified since the UpdateAt always changes
- app.InvalidateCacheForChannelPosts(post.ChannelId)
+ app.Global().InvalidateCacheForChannelPosts(post.ChannelId)
post.HasReactions = true
post.UpdateAt = model.GetMillis()
umessage := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_EDITED, "", channelId, "", nil)
@@ -144,9 +144,9 @@ func listReactions(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- pchan := app.Srv.Store.Post().Get(postId)
+ pchan := c.App.Srv.Store.Post().Get(postId)
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -160,7 +160,7 @@ func listReactions(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if result := <-app.Srv.Store.Reaction().GetForPost(postId, true); result.Err != nil {
+ if result := <-c.App.Srv.Store.Reaction().GetForPost(postId, true); result.Err != nil {
c.Err = result.Err
return
} else {
diff --git a/api/status.go b/api/status.go
index b945d7e90..77454389e 100644
--- a/api/status.go
+++ b/api/status.go
@@ -33,7 +33,7 @@ func getStatusesByIdsHttp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- statusMap, err := app.GetStatusesByIds(userIds)
+ statusMap, err := c.App.GetStatusesByIds(userIds)
if err != nil {
c.Err = err
return
diff --git a/api/status_test.go b/api/status_test.go
index ba276da06..1f936d286 100644
--- a/api/status_test.go
+++ b/api/status_test.go
@@ -8,7 +8,6 @@ import (
"testing"
"time"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/store"
"github.com/mattermost/platform/utils"
@@ -35,12 +34,12 @@ func TestStatuses(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Id))
user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser2 := Client.Must(Client.CreateUser(&user2, "")).Data.(*model.User)
LinkUserToTeam(ruser2, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser2.Id))
Client.Login(user.Email, user.Password)
Client.SetTeamId(team.Id)
@@ -138,7 +137,7 @@ func TestStatuses(t *testing.T) {
WebSocketClient2.Close()
- app.SetStatusAwayIfNeeded(th.BasicUser.Id, false)
+ th.App.SetStatusAwayIfNeeded(th.BasicUser.Id, false)
awayTimeout := *utils.Cfg.TeamSettings.UserStatusAwayTimeout
defer func() {
@@ -148,8 +147,8 @@ func TestStatuses(t *testing.T) {
time.Sleep(1500 * time.Millisecond)
- app.SetStatusAwayIfNeeded(th.BasicUser.Id, false)
- app.SetStatusOnline(th.BasicUser.Id, "junk", false)
+ th.App.SetStatusAwayIfNeeded(th.BasicUser.Id, false)
+ th.App.SetStatusOnline(th.BasicUser.Id, "junk", false)
time.Sleep(1500 * time.Millisecond)
diff --git a/api/team.go b/api/team.go
index ec9a41993..31b38688e 100644
--- a/api/team.go
+++ b/api/team.go
@@ -61,7 +61,7 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rteam, err := app.CreateTeamWithUser(team, c.Session.UserId)
+ rteam, err := c.App.CreateTeamWithUser(team, c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -74,7 +74,7 @@ func GetAllTeamListings(c *Context, w http.ResponseWriter, r *http.Request) {
var teams []*model.Team
var err *model.AppError
- if teams, err = app.GetAllOpenTeams(); err != nil {
+ if teams, err = c.App.GetAllOpenTeams(); err != nil {
c.Err = err
return
}
@@ -96,10 +96,10 @@ func getAll(c *Context, w http.ResponseWriter, r *http.Request) {
var teams []*model.Team
var err *model.AppError
- if app.HasPermissionTo(c.Session.UserId, model.PERMISSION_MANAGE_SYSTEM) {
- teams, err = app.GetAllTeams()
+ if c.App.HasPermissionTo(c.Session.UserId, model.PERMISSION_MANAGE_SYSTEM) {
+ teams, err = c.App.GetAllTeams()
} else {
- teams, err = app.GetTeamsForUser(c.Session.UserId)
+ teams, err = c.App.GetTeamsForUser(c.Session.UserId)
}
if err != nil {
@@ -130,7 +130,7 @@ func inviteMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.InviteNewUsersToTeam(invites.ToEmailList(), c.TeamId, c.Session.UserId); err != nil {
+ if err := c.App.InviteNewUsersToTeam(invites.ToEmailList(), c.TeamId, c.Session.UserId); err != nil {
c.Err = err
return
}
@@ -152,7 +152,7 @@ func addUserToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if _, err := app.AddUserToTeam(c.TeamId, userId, ""); err != nil {
+ if _, err := c.App.AddUserToTeam(c.TeamId, userId, ""); err != nil {
c.Err = err
return
}
@@ -176,7 +176,7 @@ func removeUserFromTeam(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if err := app.RemoveUserFromTeam(c.TeamId, userId); err != nil {
+ if err := c.App.RemoveUserFromTeam(c.TeamId, userId); err != nil {
c.Err = err
return
}
@@ -194,9 +194,9 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request)
var err *model.AppError
if len(hash) > 0 {
- team, err = app.AddUserToTeamByHash(c.Session.UserId, hash, data)
+ team, err = c.App.AddUserToTeamByHash(c.Session.UserId, hash, data)
} else if len(inviteId) > 0 {
- team, err = app.AddUserToTeamByInviteId(inviteId, c.Session.UserId)
+ team, err = c.App.AddUserToTeamByInviteId(inviteId, c.Session.UserId)
} else {
c.Err = model.NewAppError("addUserToTeamFromInvite", "api.user.create_user.signup_link_invalid.app_error", nil, "", http.StatusBadRequest)
return
@@ -217,7 +217,7 @@ func findTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
m := model.MapFromJson(r.Body)
name := strings.ToLower(strings.TrimSpace(m["name"]))
- found := app.FindTeamByName(name)
+ found := c.App.FindTeamByName(name)
if found {
w.Write([]byte("true"))
@@ -230,7 +230,7 @@ func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
teamname := params["team_name"]
- if team, err := app.GetTeamByName(teamname); err != nil {
+ if team, err := c.App.GetTeamByName(teamname); err != nil {
c.Err = err
return
} else {
@@ -250,7 +250,7 @@ func getMyTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
if len(c.Session.TeamMembers) > 0 {
w.Write([]byte(model.TeamMembersToJson(c.Session.TeamMembers)))
} else {
- if members, err := app.GetTeamMembersForUser(c.Session.UserId); err != nil {
+ if members, err := c.App.GetTeamMembersForUser(c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -262,7 +262,7 @@ func getMyTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
func getMyTeamsUnread(c *Context, w http.ResponseWriter, r *http.Request) {
teamId := r.URL.Query().Get("id")
- if unreads, err := app.GetTeamsUnreadForUser(teamId, c.Session.UserId); err != nil {
+ if unreads, err := c.App.GetTeamsUnreadForUser(teamId, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -288,7 +288,7 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError
var updatedTeam *model.Team
- updatedTeam, err = app.UpdateTeam(team)
+ updatedTeam, err = c.App.UpdateTeam(team)
if err != nil {
c.Err = err
return
@@ -319,7 +319,7 @@ func updateMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if _, err := app.UpdateTeamMemberRoles(teamId, userId, newRoles); err != nil {
+ if _, err := c.App.UpdateTeamMemberRoles(teamId, userId, newRoles); err != nil {
c.Err = err
return
}
@@ -335,7 +335,7 @@ func getMyTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if team, err := app.GetTeam(c.TeamId); err != nil {
+ if team, err := c.App.GetTeam(c.TeamId); err != nil {
c.Err = err
return
} else if HandleEtag(team.Etag(), "Get My Team", w, r) {
@@ -355,7 +355,7 @@ func getTeamStats(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- stats, err := app.GetTeamStats(c.TeamId)
+ stats, err := c.App.GetTeamStats(c.TeamId)
if err != nil {
c.Err = err
return
@@ -414,7 +414,7 @@ func importTeam(c *Context, w http.ResponseWriter, r *http.Request) {
switch importFrom {
case "slack":
var err *model.AppError
- if err, log = app.SlackImport(fileData, fileSize, c.TeamId); err != nil {
+ if err, log = c.App.SlackImport(fileData, fileSize, c.TeamId); err != nil {
c.Err = err
c.Err.StatusCode = http.StatusBadRequest
}
@@ -433,7 +433,7 @@ func getInviteInfo(c *Context, w http.ResponseWriter, r *http.Request) {
m := model.MapFromJson(r.Body)
inviteId := m["invite_id"]
- if team, err := app.GetTeamByInviteId(inviteId); err != nil {
+ if team, err := c.App.GetTeamByInviteId(inviteId); err != nil {
c.Err = err
return
} else {
@@ -473,7 +473,7 @@ func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if members, err := app.GetTeamMembers(c.TeamId, offset, limit); err != nil {
+ if members, err := c.App.GetTeamMembers(c.TeamId, offset, limit); err != nil {
c.Err = err
return
} else {
@@ -498,7 +498,7 @@ func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if member, err := app.GetTeamMember(c.TeamId, userId); err != nil {
+ if member, err := c.App.GetTeamMember(c.TeamId, userId); err != nil {
c.Err = err
return
} else {
@@ -521,7 +521,7 @@ func getTeamMembersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if members, err := app.GetTeamMembersByIds(c.TeamId, userIds); err != nil {
+ if members, err := c.App.GetTeamMembersByIds(c.TeamId, userIds); err != nil {
c.Err = err
return
} else {
diff --git a/api/team_test.go b/api/team_test.go
index 99e54a904..58b471f72 100644
--- a/api/team_test.go
+++ b/api/team_test.go
@@ -6,7 +6,6 @@ package api
import (
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/store"
"github.com/mattermost/platform/utils"
@@ -25,7 +24,7 @@ func TestCreateTeam(t *testing.T) {
user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Login(user.Email, "passwd1")
Client.SetTeamId(rteam.Data.(*model.Team).Id)
@@ -128,7 +127,7 @@ func TestAddUserToTeam(t *testing.T) {
// Should work as team admin.
UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
*utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
@@ -219,7 +218,7 @@ func TestGetAllTeams(t *testing.T) {
user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Login(user.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -258,7 +257,7 @@ func TestGetAllTeamListings(t *testing.T) {
user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Login(user.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -275,7 +274,7 @@ func TestGetAllTeamListings(t *testing.T) {
}
}
- app.UpdateUserRoles(user.Id, model.ROLE_SYSTEM_ADMIN.Id)
+ th.App.UpdateUserRoles(user.Id, model.ROLE_SYSTEM_ADMIN.Id)
Client.Login(user.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -305,7 +304,7 @@ func TestTeamPermDelete(t *testing.T) {
user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user1 = Client.Must(Client.CreateUser(user1, "")).Data.(*model.User)
LinkUserToTeam(user1, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user1.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user1.Id))
Client.Login(user1.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -329,7 +328,7 @@ func TestTeamPermDelete(t *testing.T) {
c.RequestId = model.NewId()
c.IpAddress = "test"
- err := app.PermanentDeleteTeam(team)
+ err := th.App.PermanentDeleteTeam(team)
if err != nil {
t.Fatal(err)
}
@@ -350,7 +349,7 @@ func TestInviteMembers(t *testing.T) {
user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Login(user.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -437,7 +436,7 @@ func TestUpdateTeamDisplayName(t *testing.T) {
user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
Client.Login(user2.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -498,7 +497,7 @@ func TestGetMyTeam(t *testing.T) {
user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
Client.Login(user.Email, user.Password)
Client.SetTeamId(team.Id)
@@ -743,7 +742,7 @@ func TestGetTeamStats(t *testing.T) {
user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
Client.Login(user.Email, user.Password)
@@ -764,7 +763,7 @@ func TestUpdateTeamDescription(t *testing.T) {
user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
Client.Login(user2.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -817,7 +816,7 @@ func TestGetTeamByName(t *testing.T) {
user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
Client.Login(user2.Email, "passwd1")
diff --git a/api/user.go b/api/user.go
index 551b751c1..8815f698f 100644
--- a/api/user.go
+++ b/api/user.go
@@ -85,11 +85,11 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
var ruser *model.User
var err *model.AppError
if len(hash) > 0 {
- ruser, err = app.CreateUserWithHash(user, hash, r.URL.Query().Get("d"))
+ ruser, err = c.App.CreateUserWithHash(user, hash, r.URL.Query().Get("d"))
} else if len(inviteId) > 0 {
- ruser, err = app.CreateUserWithInviteId(user, inviteId)
+ ruser, err = c.App.CreateUserWithInviteId(user, inviteId)
} else {
- ruser, err = app.CreateUserFromSignup(user)
+ ruser, err = c.App.CreateUserFromSignup(user)
}
if err != nil {
@@ -111,7 +111,7 @@ func login(c *Context, w http.ResponseWriter, r *http.Request) {
ldapOnly := props["ldap_only"] == "true"
c.LogAudit("attempt - user_id=" + id + " login_id=" + loginId)
- user, err := app.AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId, ldapOnly)
+ user, err := c.App.AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId, ldapOnly)
if err != nil {
c.LogAudit("failure - user_id=" + id + " login_id=" + loginId)
c.Err = err
@@ -132,7 +132,7 @@ func login(c *Context, w http.ResponseWriter, r *http.Request) {
// User MUST be authenticated completely before calling Login
func doLogin(c *Context, w http.ResponseWriter, r *http.Request, user *model.User, deviceId string) {
- session, err := app.DoLogin(w, r, user, deviceId)
+ session, err := c.App.DoLogin(w, r, user, deviceId)
if err != nil {
c.Err = err
return
@@ -145,7 +145,7 @@ func revokeSession(c *Context, w http.ResponseWriter, r *http.Request) {
props := model.MapFromJson(r.Body)
id := props["id"]
- if err := app.RevokeSessionById(id); err != nil {
+ if err := c.App.RevokeSessionById(id); err != nil {
c.Err = err
return
}
@@ -163,7 +163,7 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) {
}
// A special case where we logout of all other sessions with the same device id
- if err := app.RevokeSessionsForDeviceId(c.Session.UserId, deviceId, c.Session.Id); err != nil {
+ if err := c.App.RevokeSessionsForDeviceId(c.Session.UserId, deviceId, c.Session.Id); err != nil {
c.Err = err
c.Err.StatusCode = http.StatusInternalServerError
return
@@ -192,7 +192,7 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) {
http.SetCookie(w, sessionCookie)
- if err := app.AttachDeviceId(c.Session.Id, deviceId, c.Session.ExpiresAt); err != nil {
+ if err := c.App.AttachDeviceId(c.Session.Id, deviceId, c.Session.ExpiresAt); err != nil {
c.Err = err
return
}
@@ -210,7 +210,7 @@ func getSessions(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sessions, err := app.GetSessions(id); err != nil {
+ if sessions, err := c.App.GetSessions(id); err != nil {
c.Err = err
return
} else {
@@ -236,7 +236,7 @@ func Logout(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("")
c.RemoveSessionCookie(w, r)
if c.Session.Id != "" {
- if err := app.RevokeSessionById(c.Session.Id); err != nil {
+ if err := c.App.RevokeSessionById(c.Session.Id); err != nil {
c.Err = err
return
}
@@ -245,7 +245,7 @@ func Logout(c *Context, w http.ResponseWriter, r *http.Request) {
func getMe(c *Context, w http.ResponseWriter, r *http.Request) {
- if user, err := app.GetUser(c.Session.UserId); err != nil {
+ if user, err := c.App.GetUser(c.Session.UserId); err != nil {
c.Err = err
c.RemoveSessionCookie(w, r)
l4g.Error(utils.T("api.user.get_me.getting.error"), c.Session.UserId)
@@ -267,20 +267,20 @@ func getInitialLoad(c *Context, w http.ResponseWriter, r *http.Request) {
if len(c.Session.UserId) != 0 {
var err *model.AppError
- il.User, err = app.GetUser(c.Session.UserId)
+ il.User, err = c.App.GetUser(c.Session.UserId)
if err != nil {
c.Err = err
return
}
il.User.Sanitize(map[string]bool{})
- il.Preferences, err = app.GetPreferencesForUser(c.Session.UserId)
+ il.Preferences, err = c.App.GetPreferencesForUser(c.Session.UserId)
if err != nil {
c.Err = err
return
}
- il.Teams, err = app.GetTeamsForUser(c.Session.UserId)
+ il.Teams, err = c.App.GetTeamsForUser(c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -297,7 +297,7 @@ func getInitialLoad(c *Context, w http.ResponseWriter, r *http.Request) {
// Below is a special case when intializating a new server
// Lets check to make sure the server is really empty
- il.NoAccounts = app.IsFirstUserAccount()
+ il.NoAccounts = c.App.IsFirstUserAccount()
}
il.ClientCfg = utils.ClientCfg
@@ -317,7 +317,7 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
var user *model.User
var err *model.AppError
- if user, err = app.GetUser(id); err != nil {
+ if user, err = c.App.GetUser(id); err != nil {
c.Err = err
return
}
@@ -341,7 +341,7 @@ func getByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
var user *model.User
var err *model.AppError
- if user, err = app.GetUserByUsername(username); err != nil {
+ if user, err = c.App.GetUserByUsername(username); err != nil {
c.Err = err
return
} else if HandleEtag(user.Etag(utils.Cfg.PrivacySettings.ShowFullName, utils.Cfg.PrivacySettings.ShowEmailAddress), "Get By Username", w, r) {
@@ -359,7 +359,7 @@ func getByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
email := params["email"]
- if user, err := app.GetUserByEmail(email); err != nil {
+ if user, err := c.App.GetUserByEmail(email); err != nil {
c.Err = err
return
} else if HandleEtag(user.Etag(utils.Cfg.PrivacySettings.ShowFullName, utils.Cfg.PrivacySettings.ShowEmailAddress), "Get By Email", w, r) {
@@ -388,12 +388,12 @@ func getProfiles(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- etag := app.GetUsersEtag() + params["offset"] + "." + params["limit"]
+ etag := c.App.GetUsersEtag() + params["offset"] + "." + params["limit"]
if HandleEtag(etag, "Get Profiles", w, r) {
return
}
- if profiles, err := app.GetUsersMap(offset, limit, c.IsSystemAdmin()); err != nil {
+ if profiles, err := c.App.GetUsersMap(offset, limit, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -424,12 +424,12 @@ func getProfilesInTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- etag := app.GetUsersInTeamEtag(teamId)
+ etag := c.App.GetUsersInTeamEtag(teamId)
if HandleEtag(etag, "Get Profiles In Team", w, r) {
return
}
- if profiles, err := app.GetUsersInTeamMap(teamId, offset, limit, c.IsSystemAdmin()); err != nil {
+ if profiles, err := c.App.GetUsersInTeamMap(teamId, offset, limit, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -461,12 +461,12 @@ func getProfilesInChannel(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if profiles, err := app.GetUsersInChannelMap(channelId, offset, limit, c.IsSystemAdmin()); err != nil {
+ if profiles, err := c.App.GetUsersInChannelMap(channelId, offset, limit, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -485,7 +485,7 @@ func getProfilesNotInChannel(c *Context, w http.ResponseWriter, r *http.Request)
}
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -502,7 +502,7 @@ func getProfilesNotInChannel(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- if profiles, err := app.GetUsersNotInChannelMap(c.TeamId, channelId, offset, limit, c.IsSystemAdmin()); err != nil {
+ if profiles, err := c.App.GetUsersNotInChannelMap(c.TeamId, channelId, offset, limit, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -519,7 +519,7 @@ func getAudits(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if audits, err := app.GetAudits(id, 20); err != nil {
+ if audits, err := c.App.GetAudits(id, 20); err != nil {
c.Err = err
return
} else {
@@ -545,7 +545,7 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
var etag string
- if users, err := app.GetUsersByIds([]string{id}, false); err != nil {
+ if users, err := c.App.GetUsersByIds([]string{id}, false); err != nil {
c.Err = err
return
} else {
@@ -610,7 +610,7 @@ func uploadProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
imageData := imageArray[0]
- if err := app.SetProfileImage(c.Session.UserId, imageData); err != nil {
+ if err := c.App.SetProfileImage(c.Session.UserId, imageData); err != nil {
c.Err = err
return
}
@@ -634,7 +634,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if ruser, err := app.UpdateUserAsUser(user, c.IsSystemAdmin()); err != nil {
+ if ruser, err := c.App.UpdateUserAsUser(user, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -666,7 +666,7 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.UpdatePasswordAsUser(userId, currentPassword, newPassword); err != nil {
+ if err := c.App.UpdatePasswordAsUser(userId, currentPassword, newPassword); err != nil {
c.LogAudit("failed")
c.Err = err
return
@@ -700,7 +700,7 @@ func updateRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if _, err := app.UpdateUserRoles(userId, newRoles); err != nil {
+ if _, err := c.App.UpdateUserRoles(userId, newRoles); err != nil {
return
} else {
c.LogAuditWithUserId(userId, "roles="+newRoles)
@@ -730,7 +730,7 @@ func updateActive(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if ruser, err := app.UpdateActiveNoLdap(userId, active); err != nil {
+ if ruser, err := c.App.UpdateActiveNoLdap(userId, active); err != nil {
c.Err = err
} else {
c.LogAuditWithUserId(ruser.Id, fmt.Sprintf("active=%v", active))
@@ -747,7 +747,7 @@ func sendPasswordReset(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sent, err := app.SendPasswordReset(email, utils.GetSiteURL()); err != nil {
+ if sent, err := c.App.SendPasswordReset(email, utils.GetSiteURL()); err != nil {
c.Err = err
return
} else if sent {
@@ -770,7 +770,7 @@ func resetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt - token=" + code)
- if err := app.ResetPasswordFromToken(code, newPassword); err != nil {
+ if err := c.App.ResetPasswordFromToken(code, newPassword); err != nil {
c.LogAudit("fail - token=" + code)
c.Err = err
return
@@ -823,7 +823,7 @@ func updateUserNotify(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- ruser, err := app.UpdateUserNotifyProps(userId, props)
+ ruser, err := c.App.UpdateUserNotifyProps(userId, props)
if err != nil {
c.Err = err
return
@@ -860,7 +860,7 @@ func emailToOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- link, err := app.SwitchEmailToOAuth(w, r, email, password, mfaToken, service)
+ link, err := c.App.SwitchEmailToOAuth(w, r, email, password, mfaToken, service)
if err != nil {
c.Err = err
return
@@ -885,7 +885,7 @@ func oauthToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- link, err := app.SwitchOAuthToEmail(email, password, c.Session.UserId)
+ link, err := c.App.SwitchOAuthToEmail(email, password, c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -931,7 +931,7 @@ func emailToLdap(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- link, err := app.SwitchEmailToLdap(email, emailPassword, token, ldapId, ldapPassword)
+ link, err := c.App.SwitchEmailToLdap(email, emailPassword, token, ldapId, ldapPassword)
if err != nil {
c.Err = err
return
@@ -971,7 +971,7 @@ func ldapToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- link, err := app.SwitchLdapToEmail(ldapPassword, token, email, emailPassword)
+ link, err := c.App.SwitchLdapToEmail(ldapPassword, token, email, emailPassword)
if err != nil {
c.Err = err
return
@@ -1036,7 +1036,7 @@ func resendVerification(c *Context, w http.ResponseWriter, r *http.Request) {
}*/
func generateMfaSecret(c *Context, w http.ResponseWriter, r *http.Request) {
- secret, err := app.GenerateMfaSecret(c.Session.UserId)
+ secret, err := c.App.GenerateMfaSecret(c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -1069,7 +1069,7 @@ func updateMfa(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
if activate {
- if err := app.ActivateMfa(c.Session.UserId, token); err != nil {
+ if err := c.App.ActivateMfa(c.Session.UserId, token); err != nil {
c.Err = err
return
}
@@ -1085,7 +1085,7 @@ func updateMfa(c *Context, w http.ResponseWriter, r *http.Request) {
go func() {
var user *model.User
var err *model.AppError
- if user, err = app.GetUser(c.Session.UserId); err != nil {
+ if user, err = c.App.GetUser(c.Session.UserId); err != nil {
l4g.Warn(err.Error())
return
}
@@ -1117,7 +1117,7 @@ func checkMfa(c *Context, w http.ResponseWriter, r *http.Request) {
}
rdata := map[string]string{}
- if user, err := app.GetUserForLogin(loginId, false); err != nil {
+ if user, err := c.App.GetUserForLogin(loginId, false); err != nil {
rdata["mfa_required"] = "false"
} else {
rdata["mfa_required"] = strconv.FormatBool(user.MfaActive)
@@ -1133,7 +1133,7 @@ func loginWithSaml(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- teamId, err := app.GetTeamIdFromQuery(r.URL.Query())
+ teamId, err := c.App.GetTeamIdFromQuery(r.URL.Query())
if err != nil {
c.Err = err
return
@@ -1213,11 +1213,11 @@ func completeSaml(c *Context, w http.ResponseWriter, r *http.Request) {
case model.OAUTH_ACTION_SIGNUP:
teamId := relayProps["team_id"]
if len(teamId) > 0 {
- go app.AddDirectChannels(teamId, user)
+ go c.App.AddDirectChannels(teamId, user)
}
break
case model.OAUTH_ACTION_EMAIL_TO_SSO:
- if err := app.RevokeAllSessions(user.Id); err != nil {
+ if err := c.App.RevokeAllSessions(user.Id); err != nil {
c.Err = err
return
}
@@ -1273,12 +1273,12 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if props.InChannelId != "" && !app.SessionHasPermissionToChannel(c.Session, props.InChannelId, model.PERMISSION_READ_CHANNEL) {
+ if props.InChannelId != "" && !c.App.SessionHasPermissionToChannel(c.Session, props.InChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if props.NotInChannelId != "" && !app.SessionHasPermissionToChannel(c.Session, props.NotInChannelId, model.PERMISSION_READ_CHANNEL) {
+ if props.NotInChannelId != "" && !c.App.SessionHasPermissionToChannel(c.Session, props.NotInChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -1299,7 +1299,7 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if profiles, err := app.SearchUsers(props, searchOptions, c.IsSystemAdmin()); err != nil {
+ if profiles, err := c.App.SearchUsers(props, searchOptions, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -1315,7 +1315,7 @@ func getProfilesByIds(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if profiles, err := app.GetUsersByIds(userIds, c.IsSystemAdmin()); err != nil {
+ if profiles, err := c.App.GetUsersByIds(userIds, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -1340,7 +1340,7 @@ func autocompleteUsersInChannel(c *Context, w http.ResponseWriter, r *http.Reque
}
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -1354,7 +1354,7 @@ func autocompleteUsersInChannel(c *Context, w http.ResponseWriter, r *http.Reque
searchOptions[store.USER_SEARCH_OPTION_NAMES_ONLY] = true
}
- autocomplete, err := app.AutocompleteUsersInChannel(teamId, channelId, term, searchOptions, c.IsSystemAdmin())
+ autocomplete, err := c.App.AutocompleteUsersInChannel(teamId, channelId, term, searchOptions, c.IsSystemAdmin())
if err != nil {
c.Err = err
return
@@ -1384,7 +1384,7 @@ func autocompleteUsersInTeam(c *Context, w http.ResponseWriter, r *http.Request)
searchOptions[store.USER_SEARCH_OPTION_NAMES_ONLY] = true
}
- autocomplete, err := app.AutocompleteUsersInTeam(teamId, term, searchOptions, c.IsSystemAdmin())
+ autocomplete, err := c.App.AutocompleteUsersInTeam(teamId, term, searchOptions, c.IsSystemAdmin())
if err != nil {
c.Err = err
return
@@ -1408,7 +1408,7 @@ func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
var profiles []*model.User
var err *model.AppError
- if profiles, err = app.SearchUsersInTeam("", term, searchOptions, c.IsSystemAdmin()); err != nil {
+ if profiles, err = c.App.SearchUsersInTeam("", term, searchOptions, c.IsSystemAdmin()); err != nil {
c.Err = err
return
}
diff --git a/api/user_test.go b/api/user_test.go
index e11391434..72806bfd4 100644
--- a/api/user_test.go
+++ b/api/user_test.go
@@ -109,7 +109,7 @@ func TestLogin(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Username: "corey" + model.NewId(), Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
if result, err := Client.LoginById(ruser.Data.(*model.User).Id, user.Password); err != nil {
t.Fatal(err)
@@ -203,7 +203,7 @@ func TestLogin(t *testing.T) {
AuthService: model.USER_AUTH_SERVICE_LDAP,
}
user3 = Client.Must(Client.CreateUser(user3, "")).Data.(*model.User)
- store.Must(app.Srv.Store.User().VerifyEmail(user3.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user3.Id))
if _, err := Client.Login(user3.Id, user3.Password); err == nil {
t.Fatal("AD/LDAP user should not be able to log in with AD/LDAP disabled")
@@ -222,7 +222,7 @@ func TestLoginByLdap(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Username: "corey" + model.NewId(), Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
if _, err := Client.LoginByLdap(ruser.Data.(*model.User).Id, user.Password); err == nil {
t.Fatal("should have failed to log in with non AD/LDAP user")
@@ -249,7 +249,7 @@ func TestLoginWithDeviceId(t *testing.T) {
t.Fatal(err)
}
- if sresult := <-app.Srv.Store.Session().Get(sessions[0].Id); sresult.Err == nil {
+ if sresult := <-th.App.Srv.Store.Session().Get(sessions[0].Id); sresult.Err == nil {
t.Fatal("session should have been removed")
}
}
@@ -355,17 +355,17 @@ func TestGetUser(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", FirstName: "Corey", LastName: "Hulen"}
ruser2, _ := Client.CreateUser(&user2, "")
LinkUserToTeam(ruser2.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser2.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser2.Data.(*model.User).Id))
user3 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser3, _ := Client.CreateUser(&user3, "")
LinkUserToTeam(ruser3.Data.(*model.User), rteam2.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser3.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser3.Data.(*model.User).Id))
Client.Login(user.Email, user.Password)
@@ -488,7 +488,7 @@ func TestGetUser(t *testing.T) {
t.Fatal("shouldn't have accss")
}
- app.UpdateUserRoles(ruser.Data.(*model.User).Id, model.ROLE_SYSTEM_ADMIN.Id)
+ th.App.UpdateUserRoles(ruser.Data.(*model.User).Id, model.ROLE_SYSTEM_ADMIN.Id)
Client.Login(user.Email, "passwd1")
@@ -620,7 +620,7 @@ func TestGetAudits(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
time.Sleep(100 * time.Millisecond)
@@ -675,7 +675,7 @@ func TestUserCreateImage(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Login(user.Email, "passwd1")
@@ -724,7 +724,7 @@ func TestUserUploadProfileImage(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
if *utils.Cfg.FileSettings.DriverName != "" {
@@ -837,7 +837,7 @@ func TestUserUpdate(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Roles: ""}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
if _, err := Client.UpdateUser(user); err == nil {
t.Fatal("Should have errored")
@@ -867,7 +867,7 @@ func TestUserUpdate(t *testing.T) {
user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
Client.Login(user2.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -892,7 +892,7 @@ func TestUserUpdatePassword(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
if _, err := Client.UpdateUserPassword(user.Id, "passwd1", "newpasswd1"); err == nil {
t.Fatal("Should have errored")
@@ -976,12 +976,12 @@ func TestUserUpdateRoles(t *testing.T) {
user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
if _, err := Client.UpdateUserRoles(user.Id, ""); err == nil {
t.Fatal("Should have errored, not logged in")
@@ -1000,7 +1000,7 @@ func TestUserUpdateRoles(t *testing.T) {
user3 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user3 = Client.Must(Client.CreateUser(user3, "")).Data.(*model.User)
LinkUserToTeam(user3, team2)
- store.Must(app.Srv.Store.User().VerifyEmail(user3.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user3.Id))
Client.Login(user3.Email, "passwd1")
Client.SetTeamId(team2.Id)
@@ -1095,7 +1095,7 @@ func TestUserUpdateDeviceId(t *testing.T) {
user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Login(user.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -1105,7 +1105,7 @@ func TestUserUpdateDeviceId(t *testing.T) {
t.Fatal(err)
}
- if result := <-app.Srv.Store.Session().GetSessions(user.Id); result.Err != nil {
+ if result := <-th.App.Srv.Store.Session().GetSessions(user.Id); result.Err != nil {
t.Fatal(result.Err)
} else {
sessions := result.Data.([]*model.Session)
@@ -1126,7 +1126,7 @@ func TestUserUpdateDeviceId2(t *testing.T) {
user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Login(user.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -1136,7 +1136,7 @@ func TestUserUpdateDeviceId2(t *testing.T) {
t.Fatal(err)
}
- if result := <-app.Srv.Store.Session().GetSessions(user.Id); result.Err != nil {
+ if result := <-th.App.Srv.Store.Session().GetSessions(user.Id); result.Err != nil {
t.Fatal(result.Err)
} else {
sessions := result.Data.([]*model.Session)
@@ -1163,12 +1163,12 @@ func TestUserUpdateActive(t *testing.T) {
user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
if _, err := Client.UpdateActive(user.Id, false); err == nil {
t.Fatal("Should have errored, not logged in")
@@ -1186,7 +1186,7 @@ func TestUserUpdateActive(t *testing.T) {
user3 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user3 = Client.Must(Client.CreateUser(user3, "")).Data.(*model.User)
LinkUserToTeam(user2, team2)
- store.Must(app.Srv.Store.User().VerifyEmail(user3.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user3.Id))
Client.Login(user3.Email, "passwd1")
Client.SetTeamId(team2.Id)
@@ -1206,13 +1206,13 @@ func TestUserUpdateActive(t *testing.T) {
t.Fatal("Should have errored, bad id")
}
- app.SetStatusOnline(user3.Id, "", false)
+ th.App.SetStatusOnline(user3.Id, "", false)
if _, err := SystemAdminClient.UpdateActive(user3.Id, false); err != nil {
t.Fatal(err)
}
- if status, err := app.GetStatus(user3.Id); err != nil {
+ if status, err := th.App.GetStatus(user3.Id); err != nil {
t.Fatal(err)
} else if status.Status != model.STATUS_OFFLINE {
t.Fatal("status should have been set to offline")
@@ -1229,7 +1229,7 @@ func TestUserPermDelete(t *testing.T) {
user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user1 = Client.Must(Client.CreateUser(user1, "")).Data.(*model.User)
LinkUserToTeam(user1, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user1.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user1.Id))
Client.Login(user1.Email, "passwd1")
Client.SetTeamId(team.Id)
@@ -1253,7 +1253,7 @@ func TestUserPermDelete(t *testing.T) {
c.RequestId = model.NewId()
c.IpAddress = "test"
- err := app.PermanentDeleteUser(user1)
+ err := th.App.PermanentDeleteUser(user1)
if err != nil {
t.Fatal(err)
}
@@ -1271,7 +1271,7 @@ func TestSendPasswordReset(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
Client.Logout()
@@ -1296,7 +1296,7 @@ func TestSendPasswordReset(t *testing.T) {
user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", AuthData: &authData, AuthService: "random"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id))
if _, err := Client.SendPasswordReset(user2.Email); err == nil {
t.Fatal("should have errored - SSO user can't send reset password link")
@@ -1311,7 +1311,7 @@ func TestResetPassword(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
//Delete all the messages before check the reset password
utils.DeleteMailBox(user.Email)
@@ -1350,7 +1350,7 @@ func TestResetPassword(t *testing.T) {
}
var recoveryToken *model.Token
- if result := <-app.Srv.Store.Token().GetByToken(recoveryTokenString); result.Err != nil {
+ if result := <-th.App.Srv.Store.Token().GetByToken(recoveryTokenString); result.Err != nil {
t.Log(recoveryTokenString)
t.Fatal(result.Err)
} else {
@@ -1412,7 +1412,7 @@ func TestUserUpdateNotify(t *testing.T) {
user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Roles: ""}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id))
data := make(map[string]string)
data["user_id"] = user.Id
@@ -1527,7 +1527,7 @@ func TestEmailToOAuth(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Id))
m := map[string]string{}
if _, err := Client.EmailToOAuth(m); err == nil {
@@ -1580,12 +1580,12 @@ func TestOAuthToEmail(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Id))
user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser2 := Client.Must(Client.CreateUser(&user2, "")).Data.(*model.User)
LinkUserToTeam(ruser2, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser2.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser2.Id))
m := map[string]string{}
if _, err := Client.OAuthToEmail(m); err == nil {
@@ -1631,7 +1631,7 @@ func TestLDAPToEmail(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Id))
Client.Login(user.Email, user.Password)
@@ -1684,7 +1684,7 @@ func TestEmailToLDAP(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Id))
Client.Login(user.Email, user.Password)
@@ -1815,7 +1815,7 @@ func TestGenerateMfaSecret(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
Client.Logout()
@@ -1856,7 +1856,7 @@ func TestUpdateMfa(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
Client.Logout()
@@ -1897,7 +1897,7 @@ func TestCheckMfa(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
- store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
+ store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
if result, err := Client.CheckMfa(user.Email); err != nil {
t.Fatal(err)
diff --git a/api/webhook.go b/api/webhook.go
index 204df6b31..ce7084da9 100644
--- a/api/webhook.go
+++ b/api/webhook.go
@@ -34,7 +34,7 @@ func createIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- channel, err := app.GetChannel(hook.ChannelId)
+ channel, err := c.App.GetChannel(hook.ChannelId)
if err != nil {
c.Err = err
return
@@ -47,13 +47,13 @@ func createIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if channel.Type != model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.LogAudit("fail - bad channel permissions")
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if incomingHook, err := app.CreateIncomingWebhookForChannel(c.Session.UserId, channel, hook); err != nil {
+ if incomingHook, err := c.App.CreateIncomingWebhookForChannel(c.Session.UserId, channel, hook); err != nil {
c.Err = err
return
} else {
@@ -73,7 +73,7 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- oldHook, err := app.GetIncomingWebhook(hook.Id)
+ oldHook, err := c.App.GetIncomingWebhook(hook.Id)
if err != nil {
c.Err = err
return
@@ -95,19 +95,19 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- channel, err := app.GetChannel(hook.ChannelId)
+ channel, err := c.App.GetChannel(hook.ChannelId)
if err != nil {
c.Err = err
return
}
- if channel.Type != model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.LogAudit("fail - bad channel permissions")
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- rhook, err := app.UpdateIncomingWebhook(oldHook, hook)
+ rhook, err := c.App.UpdateIncomingWebhook(oldHook, hook)
if err != nil {
c.Err = err
return
@@ -126,7 +126,7 @@ func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- hook, err := app.GetIncomingWebhook(id)
+ hook, err := c.App.GetIncomingWebhook(id)
if err != nil {
c.Err = err
return
@@ -145,7 +145,7 @@ func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.DeleteIncomingWebhook(id); err != nil {
+ if err := c.App.DeleteIncomingWebhook(id); err != nil {
c.LogAudit("fail")
c.Err = err
return
@@ -161,7 +161,7 @@ func getIncomingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if hooks, err := app.GetIncomingWebhooksForTeamPage(c.TeamId, 0, 100); err != nil {
+ if hooks, err := c.App.GetIncomingWebhooksForTeamPage(c.TeamId, 0, 100); err != nil {
c.Err = err
return
} else {
@@ -186,7 +186,7 @@ func createOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if rhook, err := app.CreateOutgoingWebhook(hook); err != nil {
+ if rhook, err := c.App.CreateOutgoingWebhook(hook); err != nil {
c.LogAudit("fail")
c.Err = err
return
@@ -202,7 +202,7 @@ func getOutgoingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if hooks, err := app.GetOutgoingWebhooksForTeamPage(c.TeamId, 0, 100); err != nil {
+ if hooks, err := c.App.GetOutgoingWebhooksForTeamPage(c.TeamId, 0, 100); err != nil {
c.Err = err
return
} else {
@@ -220,7 +220,7 @@ func updateOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oldHook, err := app.GetOutgoingWebhook(hook.Id)
+ oldHook, err := c.App.GetOutgoingWebhook(hook.Id)
if err != nil {
c.Err = err
return
@@ -243,7 +243,7 @@ func updateOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rhook, err := app.UpdateOutgoingWebhook(oldHook, hook)
+ rhook, err := c.App.UpdateOutgoingWebhook(oldHook, hook)
if err != nil {
c.Err = err
return
@@ -269,7 +269,7 @@ func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- hook, err := app.GetOutgoingWebhook(id)
+ hook, err := c.App.GetOutgoingWebhook(id)
if err != nil {
c.Err = err
return
@@ -281,7 +281,7 @@ func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.DeleteOutgoingWebhook(id); err != nil {
+ if err := c.App.DeleteOutgoingWebhook(id); err != nil {
c.LogAudit("fail")
c.Err = err
return
@@ -300,7 +300,7 @@ func regenOutgoingHookToken(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- hook, err := app.GetOutgoingWebhook(id)
+ hook, err := c.App.GetOutgoingWebhook(id)
if err != nil {
c.Err = err
return
@@ -324,7 +324,7 @@ func regenOutgoingHookToken(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- if rhook, err := app.RegenOutgoingWebhookToken(hook); err != nil {
+ if rhook, err := c.App.RegenOutgoingWebhookToken(hook); err != nil {
c.Err = err
return
} else {
diff --git a/api/websocket.go b/api/websocket.go
index 6fd79a2dd..66a44013b 100644
--- a/api/websocket.go
+++ b/api/websocket.go
@@ -34,7 +34,7 @@ func connect(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- wc := app.NewWebConn(ws, c.Session, c.T, c.Locale)
+ wc := c.App.NewWebConn(ws, c.Session, c.T, c.Locale)
if len(c.Session.UserId) > 0 {
app.HubRegister(wc)
diff --git a/api4/api.go b/api4/api.go
index 3a4f2c412..ef96ec589 100644
--- a/api4/api.go
+++ b/api4/api.go
@@ -106,14 +106,14 @@ type Routes struct {
var BaseRoutes *Routes
func InitRouter() {
- app.Srv.Router = mux.NewRouter()
- app.Srv.Router.NotFoundHandler = http.HandlerFunc(Handle404)
+ app.Global().Srv.Router = mux.NewRouter()
+ app.Global().Srv.Router.NotFoundHandler = http.HandlerFunc(Handle404)
}
func InitApi(full bool) {
BaseRoutes = &Routes{}
- BaseRoutes.Root = app.Srv.Router
- BaseRoutes.ApiRoot = app.Srv.Router.PathPrefix(model.API_URL_SUFFIX).Subrouter()
+ BaseRoutes.Root = app.Global().Srv.Router
+ BaseRoutes.ApiRoot = app.Global().Srv.Router.PathPrefix(model.API_URL_SUFFIX).Subrouter()
BaseRoutes.Users = BaseRoutes.ApiRoot.PathPrefix("/users").Subrouter()
BaseRoutes.User = BaseRoutes.ApiRoot.PathPrefix("/users/{user_id:[A-Za-z0-9]+}").Subrouter()
@@ -213,7 +213,7 @@ func InitApi(full bool) {
InitOpenGraph()
InitPlugin()
- app.Srv.Router.Handle("/api/v4/{anything:.*}", http.HandlerFunc(Handle404))
+ app.Global().Srv.Router.Handle("/api/v4/{anything:.*}", http.HandlerFunc(Handle404))
// REMOVE CONDITION WHEN APIv3 REMOVED
if full {
diff --git a/api4/apitestlib.go b/api4/apitestlib.go
index b634de0d4..9d26342dc 100644
--- a/api4/apitestlib.go
+++ b/api4/apitestlib.go
@@ -29,6 +29,8 @@ import (
)
type TestHelper struct {
+ App *app.App
+
Client *model.Client4
BasicUser *model.User
BasicUser2 *model.User
@@ -44,7 +46,7 @@ type TestHelper struct {
}
func SetupEnterprise() *TestHelper {
- if app.Srv == nil {
+ if app.Global().Srv == nil {
utils.TranslationsPreInit()
utils.LoadConfig("config.json")
utils.InitTranslations(utils.Cfg.LocalizationSettings)
@@ -56,32 +58,33 @@ func SetupEnterprise() *TestHelper {
utils.Cfg.EmailSettings.FeedbackEmail = "test@example.com"
utils.DisableDebugLogForTest()
utils.License().Features.SetDefaults()
- app.NewServer()
- app.InitStores()
+ app.Global().NewServer()
+ app.Global().InitStores()
InitRouter()
wsapi.InitRouter()
- app.StartServer()
+ app.Global().StartServer()
utils.InitHTML()
InitApi(true)
wsapi.InitApi()
utils.EnableDebugLogForTest()
- app.Srv.Store.MarkSystemRanUnitTests()
+ app.Global().Srv.Store.MarkSystemRanUnitTests()
*utils.Cfg.TeamSettings.EnableOpenServer = true
}
if jobs.Srv.Store == nil {
- jobs.Srv.Store = app.Srv.Store
+ jobs.Srv.Store = app.Global().Srv.Store
}
th := &TestHelper{}
+ th.App = app.Global()
th.Client = th.CreateClient()
th.SystemAdminClient = th.CreateClient()
return th
}
func Setup() *TestHelper {
- if app.Srv == nil {
+ if app.Global().Srv == nil {
utils.TranslationsPreInit()
utils.LoadConfig("config.json")
utils.InitTranslations(utils.Cfg.LocalizationSettings)
@@ -92,32 +95,33 @@ func Setup() *TestHelper {
utils.Cfg.EmailSettings.SMTPPort = "2500"
utils.Cfg.EmailSettings.FeedbackEmail = "test@example.com"
utils.DisableDebugLogForTest()
- app.NewServer()
- app.InitStores()
+ app.Global().NewServer()
+ app.Global().InitStores()
InitRouter()
wsapi.InitRouter()
- app.StartServer()
+ app.Global().StartServer()
InitApi(true)
wsapi.InitApi()
utils.EnableDebugLogForTest()
- app.Srv.Store.MarkSystemRanUnitTests()
+ app.Global().Srv.Store.MarkSystemRanUnitTests()
*utils.Cfg.TeamSettings.EnableOpenServer = true
}
if jobs.Srv.Store == nil {
- jobs.Srv.Store = app.Srv.Store
+ jobs.Srv.Store = app.Global().Srv.Store
}
th := &TestHelper{}
+ th.App = app.Global()
th.Client = th.CreateClient()
th.SystemAdminClient = th.CreateClient()
return th
}
func StopServer() {
- if app.Srv != nil {
- app.StopServer()
+ if app.Global().Srv != nil {
+ app.Global().StopServer()
}
}
@@ -131,13 +135,13 @@ func TearDown() {
defer wg.Done()
options := map[string]bool{}
options[store.USER_SEARCH_OPTION_NAMES_ONLY_NO_FULL_NAME] = true
- if result := <-app.Srv.Store.User().Search("", "fakeuser", options); result.Err != nil {
+ if result := <-app.Global().Srv.Store.User().Search("", "fakeuser", options); result.Err != nil {
l4g.Error("Error tearing down test users")
} else {
users := result.Data.([]*model.User)
for _, u := range users {
- if err := app.PermanentDeleteUser(u); err != nil {
+ if err := app.Global().PermanentDeleteUser(u); err != nil {
l4g.Error(err.Error())
}
}
@@ -146,13 +150,13 @@ func TearDown() {
go func() {
defer wg.Done()
- if result := <-app.Srv.Store.Team().SearchByName("faketeam"); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Team().SearchByName("faketeam"); result.Err != nil {
l4g.Error("Error tearing down test teams")
} else {
teams := result.Data.([]*model.Team)
for _, t := range teams {
- if err := app.PermanentDeleteTeam(t); err != nil {
+ if err := app.Global().PermanentDeleteTeam(t); err != nil {
l4g.Error(err.Error())
}
}
@@ -161,14 +165,14 @@ func TearDown() {
go func() {
defer wg.Done()
- if result := <-app.Srv.Store.OAuth().GetApps(0, 1000); result.Err != nil {
+ if result := <-app.Global().Srv.Store.OAuth().GetApps(0, 1000); result.Err != nil {
l4g.Error("Error tearing down test oauth apps")
} else {
apps := result.Data.([]*model.OAuthApp)
for _, a := range apps {
if strings.HasPrefix(a.Name, "fakeoauthapp") {
- <-app.Srv.Store.OAuth().DeleteApp(a.Id)
+ <-app.Global().Srv.Store.OAuth().DeleteApp(a.Id)
}
}
}
@@ -191,13 +195,13 @@ func (me *TestHelper) InitBasic() *TestHelper {
LinkUserToTeam(me.BasicUser, me.BasicTeam)
me.BasicUser2 = me.CreateUser()
LinkUserToTeam(me.BasicUser2, me.BasicTeam)
- app.AddUserToChannel(me.BasicUser, me.BasicChannel)
- app.AddUserToChannel(me.BasicUser2, me.BasicChannel)
- app.AddUserToChannel(me.BasicUser, me.BasicChannel2)
- app.AddUserToChannel(me.BasicUser2, me.BasicChannel2)
- app.AddUserToChannel(me.BasicUser, me.BasicPrivateChannel)
- app.AddUserToChannel(me.BasicUser2, me.BasicPrivateChannel)
- app.UpdateUserRoles(me.BasicUser.Id, model.ROLE_SYSTEM_USER.Id)
+ me.App.AddUserToChannel(me.BasicUser, me.BasicChannel)
+ me.App.AddUserToChannel(me.BasicUser2, me.BasicChannel)
+ me.App.AddUserToChannel(me.BasicUser, me.BasicChannel2)
+ me.App.AddUserToChannel(me.BasicUser2, me.BasicChannel2)
+ me.App.AddUserToChannel(me.BasicUser, me.BasicPrivateChannel)
+ me.App.AddUserToChannel(me.BasicUser2, me.BasicPrivateChannel)
+ me.App.UpdateUserRoles(me.BasicUser.Id, model.ROLE_SYSTEM_USER.Id)
me.LoginBasic()
return me
@@ -205,7 +209,7 @@ func (me *TestHelper) InitBasic() *TestHelper {
func (me *TestHelper) InitSystemAdmin() *TestHelper {
me.SystemAdminUser = me.CreateUser()
- app.UpdateUserRoles(me.SystemAdminUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_ADMIN.Id)
+ me.App.UpdateUserRoles(me.SystemAdminUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_ADMIN.Id)
me.LoginSystemAdmin()
return me
@@ -391,7 +395,7 @@ func (me *TestHelper) LoginSystemAdminWithClient(client *model.Client4) {
func (me *TestHelper) UpdateActiveUser(user *model.User, active bool) {
utils.DisableDebugLogForTest()
- _, err := app.UpdateActive(user, active)
+ _, err := app.Global().UpdateActive(user, active)
if err != nil {
l4g.Error(err.Error())
l4g.Close()
@@ -405,7 +409,7 @@ func (me *TestHelper) UpdateActiveUser(user *model.User, active bool) {
func LinkUserToTeam(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest()
- err := app.JoinUserToTeam(team, user, "")
+ err := app.Global().JoinUserToTeam(team, user, "")
if err != nil {
l4g.Error(err.Error())
l4g.Close()
@@ -441,7 +445,7 @@ func GenerateTestId() string {
}
func VerifyUserEmail(userId string) {
- store.Must(app.Srv.Store.User().VerifyEmail(userId))
+ store.Must(app.Global().Srv.Store.User().VerifyEmail(userId))
}
func CheckUserSanitization(t *testing.T, user *model.User) {
@@ -709,10 +713,10 @@ func cleanupTestFile(info *model.FileInfo) error {
func MakeUserChannelAdmin(user *model.User, channel *model.Channel) {
utils.DisableDebugLogForTest()
- if cmr := <-app.Srv.Store.Channel().GetMember(channel.Id, user.Id); cmr.Err == nil {
+ if cmr := <-app.Global().Srv.Store.Channel().GetMember(channel.Id, user.Id); cmr.Err == nil {
cm := cmr.Data.(*model.ChannelMember)
cm.Roles = "channel_admin channel_user"
- if sr := <-app.Srv.Store.Channel().UpdateMember(cm); sr.Err != nil {
+ if sr := <-app.Global().Srv.Store.Channel().UpdateMember(cm); sr.Err != nil {
utils.EnableDebugLogForTest()
panic(sr.Err)
}
@@ -728,7 +732,7 @@ func UpdateUserToTeamAdmin(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest()
tm := &model.TeamMember{TeamId: team.Id, UserId: user.Id, Roles: model.ROLE_TEAM_USER.Id + " " + model.ROLE_TEAM_ADMIN.Id}
- if tmr := <-app.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
+ if tmr := <-app.Global().Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
utils.EnableDebugLogForTest()
l4g.Error(tmr.Err.Error())
l4g.Close()
@@ -742,7 +746,7 @@ func UpdateUserToNonTeamAdmin(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest()
tm := &model.TeamMember{TeamId: team.Id, UserId: user.Id, Roles: model.ROLE_TEAM_USER.Id}
- if tmr := <-app.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
+ if tmr := <-app.Global().Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
utils.EnableDebugLogForTest()
l4g.Error(tmr.Err.Error())
l4g.Close()
diff --git a/api4/channel.go b/api4/channel.go
index 8a14b85bb..98cbc4eff 100644
--- a/api4/channel.go
+++ b/api4/channel.go
@@ -66,7 +66,7 @@ func createChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sc, err := app.CreateChannelWithUser(channel, c.Session.UserId); err != nil {
+ if sc, err := c.App.CreateChannelWithUser(channel, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -91,12 +91,12 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
var oldChannel *model.Channel
var err *model.AppError
- if oldChannel, err = app.GetChannel(channel.Id); err != nil {
+ if oldChannel, err = c.App.GetChannel(channel.Id); err != nil {
c.Err = err
return
}
- if _, err = app.GetChannelMember(channel.Id, c.Session.UserId); err != nil {
+ if _, err = c.App.GetChannelMember(channel.Id, c.Session.UserId); err != nil {
c.Err = err
return
}
@@ -134,12 +134,12 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
oldChannel.Type = channel.Type
}
- if _, err := app.UpdateChannel(oldChannel); err != nil {
+ if _, err := c.App.UpdateChannel(oldChannel); err != nil {
c.Err = err
return
} else {
if oldChannelDisplayName != channel.DisplayName {
- if err := app.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
+ if err := c.App.PostUpdateChannelDisplayNameMessage(c.Session.UserId, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
l4g.Error(err.Error())
}
}
@@ -160,7 +160,7 @@ func patchChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oldChannel, err := app.GetChannel(c.Params.ChannelId)
+ oldChannel, err := c.App.GetChannel(c.Params.ChannelId)
if err != nil {
c.Err = err
return
@@ -170,7 +170,7 @@ func patchChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if rchannel, err := app.PatchChannel(oldChannel, patch, c.Session.UserId); err != nil {
+ if rchannel, err := c.App.PatchChannel(oldChannel, patch, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -187,7 +187,7 @@ func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(c.Params.ChannelId); err != nil {
+ if channel, err = c.App.GetChannel(c.Params.ChannelId); err != nil {
c.Err = err
return
}
@@ -198,7 +198,7 @@ func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- channel, err = app.RestoreChannel(channel)
+ channel, err = c.App.RestoreChannel(channel)
if err != nil {
c.Err = err
return
@@ -210,12 +210,12 @@ func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
}
func CanManageChannel(c *Context, channel *model.Channel) bool {
- if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES)
return false
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES)
return false
}
@@ -252,7 +252,7 @@ func createDirectChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sc, err := app.CreateDirectChannel(userIds[0], userIds[1]); err != nil {
+ if sc, err := c.App.CreateDirectChannel(userIds[0], userIds[1]); err != nil {
c.Err = err
return
} else {
@@ -289,7 +289,7 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if groupChannel, err := app.CreateGroupChannel(userIds, c.Session.UserId); err != nil {
+ if groupChannel, err := c.App.CreateGroupChannel(userIds, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -304,7 +304,7 @@ func getChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- channel, err := app.GetChannel(c.Params.ChannelId)
+ channel, err := c.App.GetChannel(c.Params.ChannelId)
if err != nil {
c.Err = err
return
@@ -316,7 +316,7 @@ func getChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
} else {
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -337,12 +337,12 @@ func getChannelUnread(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- channelUnread, err := app.GetChannelUnread(c.Params.ChannelId, c.Params.UserId)
+ channelUnread, err := c.App.GetChannelUnread(c.Params.ChannelId, c.Params.UserId)
if err != nil {
c.Err = err
return
@@ -357,12 +357,12 @@ func getChannelStats(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- memberCount, err := app.GetChannelMemberCount(c.Params.ChannelId)
+ memberCount, err := c.App.GetChannelMemberCount(c.Params.ChannelId)
if err != nil {
c.Err = err
@@ -379,12 +379,12 @@ func getPinnedPosts(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if posts, err := app.GetPinnedPosts(c.Params.ChannelId); err != nil {
+ if posts, err := c.App.GetPinnedPosts(c.Params.ChannelId); err != nil {
c.Err = err
return
} else if HandleEtag(posts.Etag(), "Get Pinned Posts", w, r) {
@@ -406,7 +406,7 @@ func getPublicChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request
return
}
- if channels, err := app.GetPublicChannelsForTeam(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil {
+ if channels, err := c.App.GetPublicChannelsForTeam(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil {
c.Err = err
return
} else {
@@ -426,7 +426,7 @@ func getDeletedChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Reques
return
}
- if channels, err := app.GetDeletedChannels(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil {
+ if channels, err := c.App.GetDeletedChannels(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil {
c.Err = err
return
} else {
@@ -459,7 +459,7 @@ func getPublicChannelsByIdsForTeam(c *Context, w http.ResponseWriter, r *http.Re
return
}
- if channels, err := app.GetPublicChannelsByIdsForTeam(c.Params.TeamId, channelIds); err != nil {
+ if channels, err := c.App.GetPublicChannelsByIdsForTeam(c.Params.TeamId, channelIds); err != nil {
c.Err = err
return
} else {
@@ -483,7 +483,7 @@ func getChannelsForTeamForUser(c *Context, w http.ResponseWriter, r *http.Reques
return
}
- if channels, err := app.GetChannelsForUser(c.Params.TeamId, c.Params.UserId); err != nil {
+ if channels, err := c.App.GetChannelsForUser(c.Params.TeamId, c.Params.UserId); err != nil {
c.Err = err
return
} else if HandleEtag(channels.Etag(), "Get Channels", w, r) {
@@ -511,7 +511,7 @@ func searchChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if channels, err := app.SearchChannels(c.Params.TeamId, props.Term); err != nil {
+ if channels, err := c.App.SearchChannels(c.Params.TeamId, props.Term); err != nil {
c.Err = err
return
} else {
@@ -527,22 +527,22 @@ func deleteChannel(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(c.Params.ChannelId); err != nil {
+ if channel, err = c.App.GetChannel(c.Params.ChannelId); err != nil {
c.Err = err
return
}
- if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) {
+ if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PUBLIC_CHANNEL)
return
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PRIVATE_CHANNEL)
return
}
- err = app.DeleteChannel(channel, c.Session.UserId)
+ err = c.App.DeleteChannel(channel, c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -562,7 +562,7 @@ func getChannelByName(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannelByName(c.Params.ChannelName, c.Params.TeamId); err != nil {
+ if channel, err = c.App.GetChannelByName(c.Params.ChannelName, c.Params.TeamId); err != nil {
c.Err = err
return
}
@@ -573,7 +573,7 @@ func getChannelByName(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
} else {
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -591,12 +591,12 @@ func getChannelByNameForTeamName(c *Context, w http.ResponseWriter, r *http.Requ
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannelByNameForTeamName(c.Params.ChannelName, c.Params.TeamName); err != nil {
+ if channel, err = c.App.GetChannelByNameForTeamName(c.Params.ChannelName, c.Params.TeamName); err != nil {
c.Err = err
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -611,12 +611,12 @@ func getChannelMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if members, err := app.GetChannelMembersPage(c.Params.ChannelId, c.Params.Page, c.Params.PerPage); err != nil {
+ if members, err := c.App.GetChannelMembersPage(c.Params.ChannelId, c.Params.Page, c.Params.PerPage); err != nil {
c.Err = err
return
} else {
@@ -636,12 +636,12 @@ func getChannelMembersByIds(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if members, err := app.GetChannelMembersByIds(c.Params.ChannelId, userIds); err != nil {
+ if members, err := c.App.GetChannelMembersByIds(c.Params.ChannelId, userIds); err != nil {
c.Err = err
return
} else {
@@ -655,12 +655,12 @@ func getChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if member, err := app.GetChannelMember(c.Params.ChannelId, c.Params.UserId); err != nil {
+ if member, err := c.App.GetChannelMember(c.Params.ChannelId, c.Params.UserId); err != nil {
c.Err = err
return
} else {
@@ -684,7 +684,7 @@ func getChannelMembersForUser(c *Context, w http.ResponseWriter, r *http.Request
return
}
- if members, err := app.GetChannelMembersForUser(c.Params.TeamId, c.Params.UserId); err != nil {
+ if members, err := c.App.GetChannelMembersForUser(c.Params.TeamId, c.Params.UserId); err != nil {
c.Err = err
return
} else {
@@ -709,7 +709,7 @@ func viewChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.ViewChannel(view, c.Params.UserId, !c.Session.IsMobileApp()); err != nil {
+ if err := c.App.ViewChannel(view, c.Params.UserId, !c.Session.IsMobileApp()); err != nil {
c.Err = err
return
}
@@ -731,12 +731,12 @@ func updateChannelMemberRoles(c *Context, w http.ResponseWriter, r *http.Request
return
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) {
c.SetPermissionError(model.PERMISSION_MANAGE_CHANNEL_ROLES)
return
}
- if _, err := app.UpdateChannelMemberRoles(c.Params.ChannelId, c.Params.UserId, newRoles); err != nil {
+ if _, err := c.App.UpdateChannelMemberRoles(c.Params.ChannelId, c.Params.UserId, newRoles); err != nil {
c.Err = err
return
}
@@ -761,7 +761,7 @@ func updateChannelMemberNotifyProps(c *Context, w http.ResponseWriter, r *http.R
return
}
- _, err := app.UpdateChannelMemberNotifyProps(props, c.Params.ChannelId, c.Params.UserId)
+ _, err := c.App.UpdateChannelMemberNotifyProps(props, c.Params.ChannelId, c.Params.UserId)
if err != nil {
c.Err = err
return
@@ -791,7 +791,7 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(member.ChannelId); err != nil {
+ if channel, err = c.App.GetChannel(member.ChannelId); err != nil {
c.Err = err
return
}
@@ -799,24 +799,24 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
// Check join permission if adding yourself, otherwise check manage permission
if channel.Type == model.CHANNEL_OPEN {
if member.UserId == c.Session.UserId {
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_JOIN_PUBLIC_CHANNELS) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_JOIN_PUBLIC_CHANNELS) {
c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_CHANNELS)
return
}
} else {
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS)
return
}
}
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS)
return
}
- if cm, err := app.AddChannelMember(member.UserId, channel, c.Session.UserId); err != nil {
+ if cm, err := c.App.AddChannelMember(member.UserId, channel, c.Session.UserId); err != nil {
c.Err = err
return
} else {
@@ -834,24 +834,24 @@ func removeChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
var channel *model.Channel
var err *model.AppError
- if channel, err = app.GetChannel(c.Params.ChannelId); err != nil {
+ if channel, err = c.App.GetChannel(c.Params.ChannelId); err != nil {
c.Err = err
return
}
if c.Params.UserId != c.Session.UserId {
- if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
+ if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS)
return
}
- if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
+ if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS)
return
}
}
- if err = app.RemoveUserFromChannel(c.Params.UserId, c.Session.UserId, channel); err != nil {
+ if err = c.App.RemoveUserFromChannel(c.Params.UserId, c.Session.UserId, channel); err != nil {
c.Err = err
return
}
diff --git a/api4/channel_test.go b/api4/channel_test.go
index e4da4f4d2..4a200571f 100644
--- a/api4/channel_test.go
+++ b/api4/channel_test.go
@@ -11,7 +11,6 @@ import (
"strconv"
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/store"
"github.com/mattermost/platform/utils"
@@ -390,7 +389,7 @@ func TestCreateGroupChannel(t *testing.T) {
t.Fatal("should have created a channel of group type")
}
- m, _ := app.GetChannelMembersPage(rgc.Id, 0, 10)
+ m, _ := th.App.GetChannelMembersPage(rgc.Id, 0, 10)
if len(*m) != 3 {
t.Fatal("should have 3 channel members")
}
@@ -403,7 +402,7 @@ func TestCreateGroupChannel(t *testing.T) {
t.Fatal("should have returned existing channel")
}
- m2, _ := app.GetChannelMembersPage(rgc2.Id, 0, 10)
+ m2, _ := th.App.GetChannelMembersPage(rgc2.Id, 0, 10)
if !reflect.DeepEqual(*m, *m2) {
t.Fatal("should be equal")
}
@@ -798,9 +797,9 @@ func TestDeleteChannel(t *testing.T) {
t.Fatal("should have passed")
}
- if ch, err := app.GetChannel(publicChannel1.Id); err == nil && ch.DeleteAt == 0 {
+ if ch, err := th.App.GetChannel(publicChannel1.Id); err == nil && ch.DeleteAt == 0 {
t.Fatal("should have failed to get deleted channel")
- } else if err := app.JoinChannel(ch, user2.Id); err == nil {
+ } else if err := th.App.JoinChannel(ch, user2.Id); err == nil {
t.Fatal("should have failed to join deleted channel")
}
@@ -816,7 +815,7 @@ func TestDeleteChannel(t *testing.T) {
// successful delete of channel with multiple members
publicChannel3 := th.CreatePublicChannel()
- app.AddUserToChannel(user2, publicChannel3)
+ th.App.AddUserToChannel(user2, publicChannel3)
_, resp = Client.DeleteChannel(publicChannel3.Id)
CheckNoError(t, resp)
@@ -827,7 +826,7 @@ func TestDeleteChannel(t *testing.T) {
CheckNoError(t, resp)
// default channel cannot be deleted.
- defaultChannel, _ := app.GetChannelByName(model.DEFAULT_CHANNEL, team.Id)
+ defaultChannel, _ := th.App.GetChannelByName(model.DEFAULT_CHANNEL, team.Id)
pass, resp = Client.DeleteChannel(defaultChannel.Id)
CheckBadRequestStatus(t, resp)
@@ -904,9 +903,9 @@ func TestDeleteChannel(t *testing.T) {
// channels created by SystemAdmin
publicChannel6 := th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_OPEN)
privateChannel7 := th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_PRIVATE)
- app.AddUserToChannel(user, publicChannel6)
- app.AddUserToChannel(user, privateChannel7)
- app.AddUserToChannel(user2, privateChannel7)
+ th.App.AddUserToChannel(user, publicChannel6)
+ th.App.AddUserToChannel(user, privateChannel7)
+ th.App.AddUserToChannel(user2, privateChannel7)
// successful delete by user
_, resp = Client.DeleteChannel(publicChannel6.Id)
@@ -922,9 +921,9 @@ func TestDeleteChannel(t *testing.T) {
// channels created by SystemAdmin
publicChannel6 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_OPEN)
privateChannel7 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_PRIVATE)
- app.AddUserToChannel(user, publicChannel6)
- app.AddUserToChannel(user, privateChannel7)
- app.AddUserToChannel(user2, privateChannel7)
+ th.App.AddUserToChannel(user, publicChannel6)
+ th.App.AddUserToChannel(user, privateChannel7)
+ th.App.AddUserToChannel(user2, privateChannel7)
// cannot delete by user
_, resp = Client.DeleteChannel(publicChannel6.Id)
@@ -947,13 +946,13 @@ func TestDeleteChannel(t *testing.T) {
// // channels created by SystemAdmin
publicChannel6 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_OPEN)
privateChannel7 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_PRIVATE)
- app.AddUserToChannel(user, publicChannel6)
- app.AddUserToChannel(user, privateChannel7)
- app.AddUserToChannel(user2, privateChannel7)
+ th.App.AddUserToChannel(user, publicChannel6)
+ th.App.AddUserToChannel(user, privateChannel7)
+ th.App.AddUserToChannel(user2, privateChannel7)
// successful delete by team admin
UpdateUserToTeamAdmin(user, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -968,7 +967,7 @@ func TestDeleteChannel(t *testing.T) {
*utils.Cfg.TeamSettings.RestrictPrivateChannelDeletion = model.PERMISSIONS_TEAM_ADMIN
utils.SetDefaultRolesBasedOnConfig()
UpdateUserToNonTeamAdmin(user, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -976,9 +975,9 @@ func TestDeleteChannel(t *testing.T) {
// channels created by SystemAdmin
publicChannel6 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_OPEN)
privateChannel7 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_PRIVATE)
- app.AddUserToChannel(user, publicChannel6)
- app.AddUserToChannel(user, privateChannel7)
- app.AddUserToChannel(user2, privateChannel7)
+ th.App.AddUserToChannel(user, publicChannel6)
+ th.App.AddUserToChannel(user, privateChannel7)
+ th.App.AddUserToChannel(user2, privateChannel7)
// cannot delete by user
_, resp = Client.DeleteChannel(publicChannel6.Id)
@@ -1000,7 +999,7 @@ func TestDeleteChannel(t *testing.T) {
// successful delete by team admin
UpdateUserToTeamAdmin(th.BasicUser, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -1018,9 +1017,9 @@ func TestDeleteChannel(t *testing.T) {
// channels created by SystemAdmin
publicChannel6 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_OPEN)
privateChannel7 = th.CreateChannelWithClient(th.SystemAdminClient, model.CHANNEL_PRIVATE)
- app.AddUserToChannel(user, publicChannel6)
- app.AddUserToChannel(user, privateChannel7)
- app.AddUserToChannel(user2, privateChannel7)
+ th.App.AddUserToChannel(user, publicChannel6)
+ th.App.AddUserToChannel(user, privateChannel7)
+ th.App.AddUserToChannel(user2, privateChannel7)
// cannot delete by user
_, resp = Client.DeleteChannel(publicChannel6.Id)
@@ -1042,7 +1041,7 @@ func TestDeleteChannel(t *testing.T) {
// cannot delete by team admin
UpdateUserToTeamAdmin(th.BasicUser, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -1560,7 +1559,7 @@ func TestUpdateChannelRoles(t *testing.T) {
channel := th.CreatePublicChannel()
// Adds User 2 to the channel, making them a channel member by default.
- app.AddUserToChannel(th.BasicUser2, channel)
+ th.App.AddUserToChannel(th.BasicUser2, channel)
// User 1 promotes User 2
pass, resp := Client.UpdateChannelRoles(channel.Id, th.BasicUser2.Id, CHANNEL_ADMIN)
@@ -1643,7 +1642,7 @@ func TestUpdateChannelNotifyProps(t *testing.T) {
t.Fatal("should have passed")
}
- member, err := app.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id)
+ member, err := th.App.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id)
if err != nil {
t.Fatal(err)
}
@@ -1838,7 +1837,7 @@ func TestAddChannelMember(t *testing.T) {
Client.Logout()
MakeUserChannelAdmin(user, privateChannel)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -1868,7 +1867,7 @@ func TestAddChannelMember(t *testing.T) {
Client.Logout()
UpdateUserToTeamAdmin(user, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -1932,7 +1931,7 @@ func TestRemoveChannelMember(t *testing.T) {
_, resp = Client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id)
CheckForbiddenStatus(t, resp)
- app.AddUserToChannel(th.BasicUser2, th.BasicChannel)
+ th.App.AddUserToChannel(th.BasicUser2, th.BasicChannel)
_, resp = Client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser2.Id)
CheckNoError(t, resp)
@@ -1944,7 +1943,7 @@ func TestRemoveChannelMember(t *testing.T) {
th.LoginBasic()
private := th.CreatePrivateChannel()
- app.AddUserToChannel(th.BasicUser2, private)
+ th.App.AddUserToChannel(th.BasicUser2, private)
_, resp = Client.RemoveUserFromChannel(private.Id, th.BasicUser2.Id)
CheckNoError(t, resp)
@@ -1958,7 +1957,7 @@ func TestRemoveChannelMember(t *testing.T) {
th.LoginBasic()
UpdateUserToNonTeamAdmin(user1, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
// Test policy does not apply to TE.
restrictPrivateChannel := *utils.Cfg.TeamSettings.RestrictPrivateChannelManageMembers
@@ -2018,7 +2017,7 @@ func TestRemoveChannelMember(t *testing.T) {
CheckForbiddenStatus(t, resp)
MakeUserChannelAdmin(user1, privateChannel)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
@@ -2043,7 +2042,7 @@ func TestRemoveChannelMember(t *testing.T) {
CheckForbiddenStatus(t, resp)
UpdateUserToTeamAdmin(user1, team)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
utils.License().Features.SetDefaults()
diff --git a/api4/command.go b/api4/command.go
index 31361b00a..ebcc34a72 100644
--- a/api4/command.go
+++ b/api4/command.go
@@ -48,7 +48,7 @@ func createCommand(c *Context, w http.ResponseWriter, r *http.Request) {
cmd.CreatorId = c.Session.UserId
- rcmd, err := app.CreateCommand(cmd)
+ rcmd, err := c.App.CreateCommand(cmd)
if err != nil {
c.Err = err
return
@@ -73,7 +73,7 @@ func updateCommand(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- oldCmd, err := app.GetCommand(c.Params.CommandId)
+ oldCmd, err := c.App.GetCommand(c.Params.CommandId)
if err != nil {
c.Err = err
return
@@ -96,7 +96,7 @@ func updateCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rcmd, err := app.UpdateCommand(oldCmd, cmd)
+ rcmd, err := c.App.UpdateCommand(oldCmd, cmd)
if err != nil {
c.Err = err
return
@@ -115,7 +115,7 @@ func deleteCommand(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- cmd, err := app.GetCommand(c.Params.CommandId)
+ cmd, err := c.App.GetCommand(c.Params.CommandId)
if err != nil {
c.Err = err
return
@@ -133,7 +133,7 @@ func deleteCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.DeleteCommand(cmd.Id)
+ err = c.App.DeleteCommand(cmd.Id)
if err != nil {
c.Err = err
return
@@ -164,7 +164,7 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS)
return
}
- commands, err = app.ListTeamCommands(teamId)
+ commands, err = c.App.ListTeamCommands(teamId)
if err != nil {
c.Err = err
return
@@ -172,13 +172,13 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
} else {
//User with no permission should see only system commands
if !app.SessionHasPermissionToTeam(c.Session, teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
- commands, err = app.ListAutocompleteCommands(teamId, c.T)
+ commands, err = c.App.ListAutocompleteCommands(teamId, c.T)
if err != nil {
c.Err = err
return
}
} else {
- commands, err = app.ListAllCommands(teamId, c.T)
+ commands, err = c.App.ListAllCommands(teamId, c.T)
if err != nil {
c.Err = err
return
@@ -201,12 +201,12 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, commandArgs.ChannelId, model.PERMISSION_USE_SLASH_COMMANDS) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, commandArgs.ChannelId, model.PERMISSION_USE_SLASH_COMMANDS) {
c.SetPermissionError(model.PERMISSION_USE_SLASH_COMMANDS)
return
}
- channel, err := app.GetChannel(commandArgs.ChannelId)
+ channel, err := c.App.GetChannel(commandArgs.ChannelId)
if err != nil {
c.Err = err
return
@@ -224,7 +224,7 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
commandArgs.Session = c.Session
commandArgs.SiteURL = c.GetSiteURLHeader()
- response, err := app.ExecuteCommand(commandArgs)
+ response, err := c.App.ExecuteCommand(commandArgs)
if err != nil {
c.Err = err
return
@@ -244,7 +244,7 @@ func listAutocompleteCommands(c *Context, w http.ResponseWriter, r *http.Request
return
}
- commands, err := app.ListAutocompleteCommands(c.Params.TeamId, c.T)
+ commands, err := c.App.ListAutocompleteCommands(c.Params.TeamId, c.T)
if err != nil {
c.Err = err
return
@@ -260,7 +260,7 @@ func regenCommandToken(c *Context, w http.ResponseWriter, r *http.Request) {
}
c.LogAudit("attempt")
- cmd, err := app.GetCommand(c.Params.CommandId)
+ cmd, err := c.App.GetCommand(c.Params.CommandId)
if err != nil {
c.Err = err
return
@@ -278,7 +278,7 @@ func regenCommandToken(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rcmd, err := app.RegenCommandToken(cmd)
+ rcmd, err := c.App.RegenCommandToken(cmd)
if err != nil {
c.Err = err
return
diff --git a/api4/command_help_test.go b/api4/command_help_test.go
index cb0f1b634..5178370e5 100644
--- a/api4/command_help_test.go
+++ b/api4/command_help_test.go
@@ -4,9 +4,10 @@
package api4
import (
+ "testing"
+
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "testing"
)
func TestHelpCommand(t *testing.T) {
diff --git a/api4/command_test.go b/api4/command_test.go
index 3c61f82b1..71db0456a 100644
--- a/api4/command_test.go
+++ b/api4/command_test.go
@@ -7,7 +7,6 @@ import (
"strings"
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
)
@@ -82,7 +81,7 @@ func TestUpdateCommand(t *testing.T) {
Trigger: "trigger1",
}
- cmd1, _ = app.CreateCommand(cmd1)
+ cmd1, _ = th.App.CreateCommand(cmd1)
cmd2 := &model.Command{
CreatorId: GenerateTestId(),
@@ -168,7 +167,7 @@ func TestDeleteCommand(t *testing.T) {
Trigger: "trigger1",
}
- rcmd1, _ := app.CreateCommand(cmd1)
+ rcmd1, _ := th.App.CreateCommand(cmd1)
ok, resp := Client.DeleteCommand(rcmd1.Id)
CheckNoError(t, resp)
@@ -177,7 +176,7 @@ func TestDeleteCommand(t *testing.T) {
t.Fatal("should have returned true")
}
- rcmd1, _ = app.GetCommand(rcmd1.Id)
+ rcmd1, _ = th.App.GetCommand(rcmd1.Id)
if rcmd1 != nil {
t.Fatal("should be nil")
}
@@ -200,7 +199,7 @@ func TestDeleteCommand(t *testing.T) {
Trigger: "trigger2",
}
- rcmd2, _ := app.CreateCommand(cmd2)
+ rcmd2, _ := th.App.CreateCommand(cmd2)
_, resp = th.Client.DeleteCommand(rcmd2.Id)
CheckForbiddenStatus(t, resp)
@@ -405,7 +404,7 @@ func TestExecuteCommand(t *testing.T) {
Trigger: "postcommand",
}
- if _, err := app.CreateCommand(postCmd); err != nil {
+ if _, err := th.App.CreateCommand(postCmd); err != nil {
t.Fatal("failed to create post command")
}
@@ -416,7 +415,7 @@ func TestExecuteCommand(t *testing.T) {
t.Fatal("command response should have returned")
}
- posts, err := app.GetPostsPage(channel.Id, 0, 10)
+ posts, err := th.App.GetPostsPage(channel.Id, 0, 10)
if err != nil || posts == nil || len(posts.Order) != 3 {
t.Fatal("Test command failed to send")
}
@@ -441,7 +440,7 @@ func TestExecuteCommand(t *testing.T) {
Trigger: "getcommand",
}
- if _, err := app.CreateCommand(getCmd); err != nil {
+ if _, err := th.App.CreateCommand(getCmd); err != nil {
t.Fatal("failed to create get command")
}
@@ -452,7 +451,7 @@ func TestExecuteCommand(t *testing.T) {
t.Fatal("command response should have returned")
}
- posts, err = app.GetPostsPage(channel.Id, 0, 10)
+ posts, err = th.App.GetPostsPage(channel.Id, 0, 10)
if err != nil || posts == nil || len(posts.Order) != 4 {
t.Fatal("Test command failed to send")
}
diff --git a/api4/compliance.go b/api4/compliance.go
index 733abeecf..45f6460c8 100644
--- a/api4/compliance.go
+++ b/api4/compliance.go
@@ -37,7 +37,7 @@ func createComplianceReport(c *Context, w http.ResponseWriter, r *http.Request)
job.UserId = c.Session.UserId
- rjob, err := app.SaveComplianceReport(job)
+ rjob, err := c.App.SaveComplianceReport(job)
if err != nil {
c.Err = err
return
@@ -54,7 +54,7 @@ func getComplianceReports(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- crs, err := app.GetComplianceReports(c.Params.Page, c.Params.PerPage)
+ crs, err := c.App.GetComplianceReports(c.Params.Page, c.Params.PerPage)
if err != nil {
c.Err = err
return
@@ -74,7 +74,7 @@ func getComplianceReport(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- job, err := app.GetComplianceReport(c.Params.ReportId)
+ job, err := c.App.GetComplianceReport(c.Params.ReportId)
if err != nil {
c.Err = err
return
@@ -94,7 +94,7 @@ func downloadComplianceReport(c *Context, w http.ResponseWriter, r *http.Request
return
}
- job, err := app.GetComplianceReport(c.Params.ReportId)
+ job, err := c.App.GetComplianceReport(c.Params.ReportId)
if err != nil {
c.Err = err
return
diff --git a/api4/context.go b/api4/context.go
index 2c0e54ea0..f8768b11e 100644
--- a/api4/context.go
+++ b/api4/context.go
@@ -20,6 +20,7 @@ import (
)
type Context struct {
+ App *app.App
Session model.Session
Params *ApiParams
Err *model.AppError
@@ -87,6 +88,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
l4g.Debug("%v - %v", r.Method, r.URL.Path)
c := &Context{}
+ c.App = app.Global()
c.T, _ = utils.GetTranslationsAndLocale(w, r)
c.RequestId = model.NewId()
c.IpAddress = utils.GetIpAddress(r)
@@ -138,7 +140,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
if len(token) != 0 {
- session, err := app.GetSession(token)
+ session, err := app.Global().GetSession(token)
if err != nil {
l4g.Error(utils.T("api.context.invalid_session.error"), err.Error())
@@ -199,7 +201,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func (c *Context) LogAudit(extraInfo string) {
audit := &model.Audit{UserId: c.Session.UserId, IpAddress: c.IpAddress, Action: c.Path, ExtraInfo: extraInfo, SessionId: c.Session.Id}
- if r := <-app.Srv.Store.Audit().Save(audit); r.Err != nil {
+ if r := <-app.Global().Srv.Store.Audit().Save(audit); r.Err != nil {
c.LogError(r.Err)
}
}
@@ -211,7 +213,7 @@ func (c *Context) LogAuditWithUserId(userId, extraInfo string) {
}
audit := &model.Audit{UserId: userId, IpAddress: c.IpAddress, Action: c.Path, ExtraInfo: extraInfo, SessionId: c.Session.Id}
- if r := <-app.Srv.Store.Audit().Save(audit); r.Err != nil {
+ if r := <-app.Global().Srv.Store.Audit().Save(audit); r.Err != nil {
c.LogError(r.Err)
}
}
@@ -259,7 +261,7 @@ func (c *Context) MfaRequired() {
return
}
- if user, err := app.GetUser(c.Session.UserId); err != nil {
+ if user, err := app.Global().GetUser(c.Session.UserId); err != nil {
c.Err = model.NewAppError("", "api.context.session_expired.app_error", nil, "MfaRequired", http.StatusUnauthorized)
return
} else {
diff --git a/api4/emoji.go b/api4/emoji.go
index 11801169d..35aea5b0d 100644
--- a/api4/emoji.go
+++ b/api4/emoji.go
@@ -66,7 +66,7 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- newEmoji, err := app.CreateEmoji(c.Session.UserId, emoji, m)
+ newEmoji, err := c.App.CreateEmoji(c.Session.UserId, emoji, m)
if err != nil {
c.Err = err
return
@@ -81,7 +81,7 @@ func getEmojiList(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- listEmoji, err := app.GetEmojiList(c.Params.Page, c.Params.PerPage)
+ listEmoji, err := c.App.GetEmojiList(c.Params.Page, c.Params.PerPage)
if err != nil {
c.Err = err
return
@@ -96,7 +96,7 @@ func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- emoji, err := app.GetEmoji(c.Params.EmojiId)
+ emoji, err := c.App.GetEmoji(c.Params.EmojiId)
if err != nil {
c.Err = err
return
@@ -107,7 +107,7 @@ func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.DeleteEmoji(emoji)
+ err = c.App.DeleteEmoji(emoji)
if err != nil {
c.Err = err
return
@@ -127,7 +127,7 @@ func getEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- emoji, err := app.GetEmoji(c.Params.EmojiId)
+ emoji, err := c.App.GetEmoji(c.Params.EmojiId)
if err != nil {
c.Err = err
return
@@ -152,7 +152,7 @@ func getEmojiImage(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- image, imageType, err := app.GetEmojiImage(c.Params.EmojiId)
+ image, imageType, err := c.App.GetEmojiImage(c.Params.EmojiId)
if err != nil {
c.Err = err
return
diff --git a/api4/file.go b/api4/file.go
index ab71b998b..b1a77b567 100644
--- a/api4/file.go
+++ b/api4/file.go
@@ -86,12 +86,12 @@ func uploadFile(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_UPLOAD_FILE) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_UPLOAD_FILE) {
c.SetPermissionError(model.PERMISSION_UPLOAD_FILE)
return
}
- resStruct, err := app.UploadFiles(FILE_TEAM_ID, channelId, c.Session.UserId, m.File["files"], m.Value["client_ids"])
+ resStruct, err := c.App.UploadFiles(FILE_TEAM_ID, channelId, c.Session.UserId, m.File["files"], m.Value["client_ids"])
if err != nil {
c.Err = err
return
@@ -112,13 +112,13 @@ func getFile(c *Context, w http.ResponseWriter, r *http.Request) {
forceDownload = false
}
- info, err := app.GetFileInfo(c.Params.FileId)
+ info, err := c.App.GetFileInfo(c.Params.FileId)
if err != nil {
c.Err = err
return
}
- if info.CreatorId != c.Session.UserId && !app.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
+ if info.CreatorId != c.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -148,13 +148,13 @@ func getFileThumbnail(c *Context, w http.ResponseWriter, r *http.Request) {
forceDownload = false
}
- info, err := app.GetFileInfo(c.Params.FileId)
+ info, err := c.App.GetFileInfo(c.Params.FileId)
if err != nil {
c.Err = err
return
}
- if info.CreatorId != c.Session.UserId && !app.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
+ if info.CreatorId != c.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -184,13 +184,13 @@ func getFileLink(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- info, err := app.GetFileInfo(c.Params.FileId)
+ info, err := c.App.GetFileInfo(c.Params.FileId)
if err != nil {
c.Err = err
return
}
- if info.CreatorId != c.Session.UserId && !app.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
+ if info.CreatorId != c.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -217,13 +217,13 @@ func getFilePreview(c *Context, w http.ResponseWriter, r *http.Request) {
forceDownload = false
}
- info, err := app.GetFileInfo(c.Params.FileId)
+ info, err := c.App.GetFileInfo(c.Params.FileId)
if err != nil {
c.Err = err
return
}
- if info.CreatorId != c.Session.UserId && !app.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
+ if info.CreatorId != c.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -248,13 +248,13 @@ func getFileInfo(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- info, err := app.GetFileInfo(c.Params.FileId)
+ info, err := c.App.GetFileInfo(c.Params.FileId)
if err != nil {
c.Err = err
return
}
- if info.CreatorId != c.Session.UserId && !app.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
+ if info.CreatorId != c.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.Session, info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -274,7 +274,7 @@ func getPublicFile(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- info, err := app.GetFileInfo(c.Params.FileId)
+ info, err := c.App.GetFileInfo(c.Params.FileId)
if err != nil {
c.Err = err
return
diff --git a/api4/file_test.go b/api4/file_test.go
index 04c0a8569..f08597047 100644
--- a/api4/file_test.go
+++ b/api4/file_test.go
@@ -51,7 +51,7 @@ func TestUploadFile(t *testing.T) {
}
var info *model.FileInfo
- if result := <-app.Srv.Store.FileInfo().Get(uploadInfo.Id); result.Err != nil {
+ if result := <-th.App.Srv.Store.FileInfo().Get(uploadInfo.Id); result.Err != nil {
t.Fatal(result.Err)
} else {
info = result.Data.(*model.FileInfo)
@@ -317,7 +317,7 @@ func TestGetFileLink(t *testing.T) {
CheckBadRequestStatus(t, resp)
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
utils.Cfg.FileSettings.EnablePublicLink = false
_, resp = Client.GetFileLink(fileId)
@@ -352,7 +352,7 @@ func TestGetFileLink(t *testing.T) {
_, resp = th.SystemAdminClient.GetFileLink(fileId)
CheckNoError(t, resp)
- if result := <-app.Srv.Store.FileInfo().Get(fileId); result.Err != nil {
+ if result := <-th.App.Srv.Store.FileInfo().Get(fileId); result.Err != nil {
t.Fatal(result.Err)
} else {
cleanupTestFile(result.Data.(*model.FileInfo))
@@ -508,9 +508,9 @@ func TestGetPublicFile(t *testing.T) {
}
// Hacky way to assign file to a post (usually would be done by CreatePost call)
- store.Must(app.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
+ store.Must(th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id))
- result := <-app.Srv.Store.FileInfo().Get(fileId)
+ result := <-th.App.Srv.Store.FileInfo().Get(fileId)
info := result.Data.(*model.FileInfo)
link := app.GeneratePublicLink(Client.Url, info)
@@ -543,7 +543,7 @@ func TestGetPublicFile(t *testing.T) {
t.Fatal("should've failed to get image with public link after salt changed")
}
- if err := cleanupTestFile(store.Must(app.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
+ if err := cleanupTestFile(store.Must(th.App.Srv.Store.FileInfo().Get(fileId)).(*model.FileInfo)); err != nil {
t.Fatal(err)
}
diff --git a/api4/job.go b/api4/job.go
index 941e5d543..9c4b64ab1 100644
--- a/api4/job.go
+++ b/api4/job.go
@@ -32,7 +32,7 @@ func getJob(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if job, err := app.GetJob(c.Params.JobId); err != nil {
+ if job, err := c.App.GetJob(c.Params.JobId); err != nil {
c.Err = err
return
} else {
@@ -71,7 +71,7 @@ func getJobs(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if jobs, err := app.GetJobsPage(c.Params.Page, c.Params.PerPage); err != nil {
+ if jobs, err := c.App.GetJobsPage(c.Params.Page, c.Params.PerPage); err != nil {
c.Err = err
return
} else {
@@ -90,7 +90,7 @@ func getJobsByType(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if jobs, err := app.GetJobsByTypePage(c.Params.JobType, c.Params.Page, c.Params.PerPage); err != nil {
+ if jobs, err := c.App.GetJobsByTypePage(c.Params.JobType, c.Params.Page, c.Params.PerPage); err != nil {
c.Err = err
return
} else {
diff --git a/api4/job_test.go b/api4/job_test.go
index 511386810..50ce0bef6 100644
--- a/api4/job_test.go
+++ b/api4/job_test.go
@@ -7,7 +7,6 @@ import (
"strings"
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/store"
)
@@ -26,7 +25,7 @@ func TestCreateJob(t *testing.T) {
received, resp := th.SystemAdminClient.CreateJob(job)
CheckNoError(t, resp)
- defer app.Srv.Store.Job().Delete(received.Id)
+ defer th.App.Srv.Store.Job().Delete(received.Id)
job = &model.Job{
Type: model.NewId(),
@@ -47,11 +46,11 @@ func TestGetJob(t *testing.T) {
Id: model.NewId(),
Status: model.JOB_STATUS_PENDING,
}
- if result := <-app.Srv.Store.Job().Save(job); result.Err != nil {
+ if result := <-th.App.Srv.Store.Job().Save(job); result.Err != nil {
t.Fatal(result.Err)
}
- defer app.Srv.Store.Job().Delete(job.Id)
+ defer th.App.Srv.Store.Job().Delete(job.Id)
received, resp := th.SystemAdminClient.GetJob(job.Id)
CheckNoError(t, resp)
@@ -95,8 +94,8 @@ func TestGetJobs(t *testing.T) {
}
for _, job := range jobs {
- store.Must(app.Srv.Store.Job().Save(job))
- defer app.Srv.Store.Job().Delete(job.Id)
+ store.Must(th.App.Srv.Store.Job().Save(job))
+ defer th.App.Srv.Store.Job().Delete(job.Id)
}
received, resp := th.SystemAdminClient.GetJobs(0, 2)
@@ -151,8 +150,8 @@ func TestGetJobsByType(t *testing.T) {
}
for _, job := range jobs {
- store.Must(app.Srv.Store.Job().Save(job))
- defer app.Srv.Store.Job().Delete(job.Id)
+ store.Must(th.App.Srv.Store.Job().Save(job))
+ defer th.App.Srv.Store.Job().Delete(job.Id)
}
received, resp := th.SystemAdminClient.GetJobsByType(jobType, 0, 2)
@@ -208,8 +207,8 @@ func TestCancelJob(t *testing.T) {
}
for _, job := range jobs {
- store.Must(app.Srv.Store.Job().Save(job))
- defer app.Srv.Store.Job().Delete(job.Id)
+ store.Must(th.App.Srv.Store.Job().Save(job))
+ defer th.App.Srv.Store.Job().Delete(job.Id)
}
_, resp := th.Client.CancelJob(jobs[0].Id)
diff --git a/api4/oauth.go b/api4/oauth.go
index ae5035fdc..0cd0f5ab9 100644
--- a/api4/oauth.go
+++ b/api4/oauth.go
@@ -59,7 +59,7 @@ func createOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
oauthApp.CreatorId = c.Session.UserId
- rapp, err := app.CreateOAuthApp(oauthApp)
+ rapp, err := c.App.CreateOAuthApp(oauthApp)
if err != nil {
c.Err = err
return
@@ -79,9 +79,9 @@ func getOAuthApps(c *Context, w http.ResponseWriter, r *http.Request) {
var apps []*model.OAuthApp
var err *model.AppError
if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) {
- apps, err = app.GetOAuthApps(c.Params.Page, c.Params.PerPage)
+ apps, err = c.App.GetOAuthApps(c.Params.Page, c.Params.PerPage)
} else if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_OAUTH) {
- apps, err = app.GetOAuthAppsByCreator(c.Session.UserId, c.Params.Page, c.Params.PerPage)
+ apps, err = c.App.GetOAuthAppsByCreator(c.Session.UserId, c.Params.Page, c.Params.PerPage)
} else {
c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH)
return
@@ -106,7 +106,7 @@ func getOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oauthApp, err := app.GetOAuthApp(c.Params.AppId)
+ oauthApp, err := c.App.GetOAuthApp(c.Params.AppId)
if err != nil {
c.Err = err
return
@@ -126,7 +126,7 @@ func getOAuthAppInfo(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oauthApp, err := app.GetOAuthApp(c.Params.AppId)
+ oauthApp, err := c.App.GetOAuthApp(c.Params.AppId)
if err != nil {
c.Err = err
return
@@ -149,7 +149,7 @@ func deleteOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oauthApp, err := app.GetOAuthApp(c.Params.AppId)
+ oauthApp, err := c.App.GetOAuthApp(c.Params.AppId)
if err != nil {
c.Err = err
return
@@ -160,7 +160,7 @@ func deleteOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.DeleteOAuthApp(oauthApp.Id)
+ err = c.App.DeleteOAuthApp(oauthApp.Id)
if err != nil {
c.Err = err
return
@@ -181,7 +181,7 @@ func regenerateOAuthAppSecret(c *Context, w http.ResponseWriter, r *http.Request
return
}
- oauthApp, err := app.GetOAuthApp(c.Params.AppId)
+ oauthApp, err := c.App.GetOAuthApp(c.Params.AppId)
if err != nil {
c.Err = err
return
@@ -192,7 +192,7 @@ func regenerateOAuthAppSecret(c *Context, w http.ResponseWriter, r *http.Request
return
}
- oauthApp, err = app.RegenerateOAuthAppSecret(oauthApp)
+ oauthApp, err = c.App.RegenerateOAuthAppSecret(oauthApp)
if err != nil {
c.Err = err
return
@@ -213,7 +213,7 @@ func getAuthorizedOAuthApps(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- apps, err := app.GetAuthorizedAppsForUser(c.Params.UserId, c.Params.Page, c.Params.PerPage)
+ apps, err := c.App.GetAuthorizedAppsForUser(c.Params.UserId, c.Params.Page, c.Params.PerPage)
if err != nil {
c.Err = err
return
@@ -235,7 +235,7 @@ func authorizeOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- redirectUrl, err := app.AllowOAuthAppAccessToUser(c.Session.UserId, authRequest)
+ redirectUrl, err := c.App.AllowOAuthAppAccessToUser(c.Session.UserId, authRequest)
if err != nil {
c.Err = err
@@ -256,7 +256,7 @@ func deauthorizeOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.DeauthorizeOAuthAppForUser(c.Session.UserId, clientId)
+ err := c.App.DeauthorizeOAuthAppForUser(c.Session.UserId, clientId)
if err != nil {
c.Err = err
return
@@ -286,7 +286,7 @@ func authorizeOAuthPage(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oauthApp, err := app.GetOAuthApp(authRequest.ClientId)
+ oauthApp, err := c.App.GetOAuthApp(authRequest.ClientId)
if err != nil {
utils.RenderWebError(err, w, r)
return
@@ -300,7 +300,7 @@ func authorizeOAuthPage(c *Context, w http.ResponseWriter, r *http.Request) {
isAuthorized := false
- if _, err := app.GetPreferenceByCategoryAndNameForUser(c.Session.UserId, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, authRequest.ClientId); err == nil {
+ if _, err := c.App.GetPreferenceByCategoryAndNameForUser(c.Session.UserId, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, authRequest.ClientId); err == nil {
// when we support scopes we should check if the scopes match
isAuthorized = true
}
@@ -308,7 +308,7 @@ func authorizeOAuthPage(c *Context, w http.ResponseWriter, r *http.Request) {
// Automatically allow if the app is trusted
if oauthApp.IsTrusted || isAuthorized {
authRequest.ResponseType = model.AUTHCODE_RESPONSE_TYPE
- redirectUrl, err := app.AllowOAuthAppAccessToUser(c.Session.UserId, authRequest)
+ redirectUrl, err := c.App.AllowOAuthAppAccessToUser(c.Session.UserId, authRequest)
if err != nil {
utils.RenderWebError(err, w, r)
@@ -367,7 +367,7 @@ func getAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- accessRsp, err := app.GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refreshToken)
+ accessRsp, err := c.App.GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refreshToken)
if err != nil {
c.Err = err
return
@@ -400,7 +400,7 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
uri := c.GetSiteURLHeader() + "/signup/" + service + "/complete"
- body, teamId, props, err := app.AuthorizeOAuthUser(w, r, service, code, state, uri)
+ body, teamId, props, err := c.App.AuthorizeOAuthUser(w, r, service, code, state, uri)
action := ""
if props != nil {
@@ -418,7 +418,7 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- user, err := app.CompleteOAuth(service, body, teamId, props)
+ user, err := c.App.CompleteOAuth(service, body, teamId, props)
if err != nil {
err.Translate(c.T)
l4g.Error(err.Error())
@@ -437,7 +437,7 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
redirectUrl = app.GetProtocol(r) + "://" + r.Host + "/claim?email=" + url.QueryEscape(props["email"])
} else {
- session, err := app.DoLogin(w, r, user, "")
+ session, err := c.App.DoLogin(w, r, user, "")
if err != nil {
err.Translate(c.T)
c.Err = err
@@ -469,13 +469,13 @@ func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
loginHint := r.URL.Query().Get("login_hint")
redirectTo := r.URL.Query().Get("redirect_to")
- teamId, err := app.GetTeamIdFromQuery(r.URL.Query())
+ teamId, err := c.App.GetTeamIdFromQuery(r.URL.Query())
if err != nil {
c.Err = err
return
}
- if authUrl, err := app.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_LOGIN, redirectTo, loginHint); err != nil {
+ if authUrl, err := c.App.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_LOGIN, redirectTo, loginHint); err != nil {
c.Err = err
return
} else {
@@ -489,13 +489,13 @@ func mobileLoginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- teamId, err := app.GetTeamIdFromQuery(r.URL.Query())
+ teamId, err := c.App.GetTeamIdFromQuery(r.URL.Query())
if err != nil {
c.Err = err
return
}
- if authUrl, err := app.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_MOBILE, "", ""); err != nil {
+ if authUrl, err := c.App.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_MOBILE, "", ""); err != nil {
c.Err = err
return
} else {
@@ -514,13 +514,13 @@ func signupWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- teamId, err := app.GetTeamIdFromQuery(r.URL.Query())
+ teamId, err := c.App.GetTeamIdFromQuery(r.URL.Query())
if err != nil {
c.Err = err
return
}
- if authUrl, err := app.GetOAuthSignupEndpoint(w, r, c.Params.Service, teamId); err != nil {
+ if authUrl, err := c.App.GetOAuthSignupEndpoint(w, r, c.Params.Service, teamId); err != nil {
c.Err = err
return
} else {
diff --git a/api4/plugin.go b/api4/plugin.go
index 109695174..7c7b595ed 100644
--- a/api4/plugin.go
+++ b/api4/plugin.go
@@ -63,7 +63,7 @@ func uploadPlugin(c *Context, w http.ResponseWriter, r *http.Request) {
}
defer file.Close()
- manifest, unpackErr := app.UnpackAndActivatePlugin(file)
+ manifest, unpackErr := c.App.UnpackAndActivatePlugin(file)
if unpackErr != nil {
c.Err = unpackErr
@@ -85,7 +85,7 @@ func getPlugins(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- manifests, err := app.GetActivePluginManifests()
+ manifests, err := c.App.GetActivePluginManifests()
if err != nil {
c.Err = err
return
@@ -110,7 +110,7 @@ func removePlugin(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.RemovePlugin(c.Params.PluginId)
+ err := c.App.RemovePlugin(c.Params.PluginId)
if err != nil {
c.Err = err
return
diff --git a/api4/plugin_test.go b/api4/plugin_test.go
index c1d6c987c..caaeeef6b 100644
--- a/api4/plugin_test.go
+++ b/api4/plugin_test.go
@@ -9,7 +9,6 @@ import (
"os"
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/utils"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -30,7 +29,7 @@ func TestPlugin(t *testing.T) {
th := Setup().InitBasic().InitSystemAdmin()
defer TearDown()
- app.StartupPlugins(pluginDir, webappDir)
+ th.App.StartupPlugins(pluginDir, webappDir)
enablePlugins := *utils.Cfg.PluginSettings.Enable
defer func() {
@@ -111,5 +110,5 @@ func TestPlugin(t *testing.T) {
_, resp = th.SystemAdminClient.RemovePlugin("bad.id")
CheckNotFoundStatus(t, resp)
- app.Srv.PluginEnv = nil
+ th.App.Srv.PluginEnv = nil
}
diff --git a/api4/post.go b/api4/post.go
index ea23e098b..eaa910502 100644
--- a/api4/post.go
+++ b/api4/post.go
@@ -42,9 +42,9 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
post.UserId = c.Session.UserId
hasPermission := false
- if app.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_CREATE_POST) {
+ if c.App.SessionHasPermissionToChannel(c.Session, post.ChannelId, model.PERMISSION_CREATE_POST) {
hasPermission = true
- } else if channel, err := app.GetChannel(post.ChannelId); err == nil {
+ } else if channel, err := c.App.GetChannel(post.ChannelId); err == nil {
// Temporary permission check method until advanced permissions, please do not copy
if channel.Type == model.CHANNEL_OPEN && app.SessionHasPermissionToTeam(c.Session, channel.TeamId, model.PERMISSION_CREATE_POST_PUBLIC) {
hasPermission = true
@@ -60,13 +60,13 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
post.CreateAt = 0
}
- rp, err := app.CreatePostAsUser(post)
+ rp, err := c.App.CreatePostAsUser(post)
if err != nil {
c.Err = err
return
}
- app.SetStatusOnline(c.Session.UserId, c.Session.Id, false)
+ c.App.SetStatusOnline(c.Session.UserId, c.Session.Id, false)
w.WriteHeader(http.StatusCreated)
w.Write([]byte(rp.ToJson()))
@@ -93,7 +93,7 @@ func getPostsForChannel(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if !app.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -103,31 +103,31 @@ func getPostsForChannel(c *Context, w http.ResponseWriter, r *http.Request) {
etag := ""
if since > 0 {
- list, err = app.GetPostsSince(c.Params.ChannelId, since)
+ list, err = c.App.GetPostsSince(c.Params.ChannelId, since)
} else if len(afterPost) > 0 {
- etag = app.GetPostsEtag(c.Params.ChannelId)
+ etag = c.App.GetPostsEtag(c.Params.ChannelId)
if HandleEtag(etag, "Get Posts After", w, r) {
return
}
- list, err = app.GetPostsAfterPost(c.Params.ChannelId, afterPost, c.Params.Page, c.Params.PerPage)
+ list, err = c.App.GetPostsAfterPost(c.Params.ChannelId, afterPost, c.Params.Page, c.Params.PerPage)
} else if len(beforePost) > 0 {
- etag = app.GetPostsEtag(c.Params.ChannelId)
+ etag = c.App.GetPostsEtag(c.Params.ChannelId)
if HandleEtag(etag, "Get Posts Before", w, r) {
return
}
- list, err = app.GetPostsBeforePost(c.Params.ChannelId, beforePost, c.Params.Page, c.Params.PerPage)
+ list, err = c.App.GetPostsBeforePost(c.Params.ChannelId, beforePost, c.Params.Page, c.Params.PerPage)
} else {
- etag = app.GetPostsEtag(c.Params.ChannelId)
+ etag = c.App.GetPostsEtag(c.Params.ChannelId)
if HandleEtag(etag, "Get Posts", w, r) {
return
}
- list, err = app.GetPostsPage(c.Params.ChannelId, c.Params.Page, c.Params.PerPage)
+ list, err = c.App.GetPostsPage(c.Params.ChannelId, c.Params.Page, c.Params.PerPage)
}
if err != nil {
@@ -159,11 +159,11 @@ func getFlaggedPostsForUser(c *Context, w http.ResponseWriter, r *http.Request)
var err *model.AppError
if len(channelId) > 0 {
- posts, err = app.GetFlaggedPostsForChannel(c.Params.UserId, channelId, c.Params.Page, c.Params.PerPage)
+ posts, err = c.App.GetFlaggedPostsForChannel(c.Params.UserId, channelId, c.Params.Page, c.Params.PerPage)
} else if len(teamId) > 0 {
- posts, err = app.GetFlaggedPostsForTeam(c.Params.UserId, teamId, c.Params.Page, c.Params.PerPage)
+ posts, err = c.App.GetFlaggedPostsForTeam(c.Params.UserId, teamId, c.Params.Page, c.Params.PerPage)
} else {
- posts, err = app.GetFlaggedPosts(c.Params.UserId, c.Params.Page, c.Params.PerPage)
+ posts, err = c.App.GetFlaggedPosts(c.Params.UserId, c.Params.Page, c.Params.PerPage)
}
if err != nil {
@@ -182,18 +182,18 @@ func getPost(c *Context, w http.ResponseWriter, r *http.Request) {
var post *model.Post
var err *model.AppError
- if post, err = app.GetSinglePost(c.Params.PostId); err != nil {
+ if post, err = c.App.GetSinglePost(c.Params.PostId); err != nil {
c.Err = err
return
}
var channel *model.Channel
- if channel, err = app.GetChannel(post.ChannelId); err != nil {
+ if channel, err = c.App.GetChannel(post.ChannelId); err != nil {
c.Err = err
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
if channel.Type == model.CHANNEL_OPEN {
if !app.SessionHasPermissionToTeam(c.Session, channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL)
@@ -219,12 +219,12 @@ func deletePost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToPost(c.Session, c.Params.PostId, model.PERMISSION_DELETE_OTHERS_POSTS) {
+ if !c.App.SessionHasPermissionToPost(c.Session, c.Params.PostId, model.PERMISSION_DELETE_OTHERS_POSTS) {
c.SetPermissionError(model.PERMISSION_DELETE_OTHERS_POSTS)
return
}
- if _, err := app.DeletePost(c.Params.PostId); err != nil {
+ if _, err := c.App.DeletePost(c.Params.PostId); err != nil {
c.Err = err
return
}
@@ -240,7 +240,7 @@ func getPostThread(c *Context, w http.ResponseWriter, r *http.Request) {
var list *model.PostList
var err *model.AppError
- if list, err = app.GetPostThread(c.Params.PostId); err != nil {
+ if list, err = c.App.GetPostThread(c.Params.PostId); err != nil {
c.Err = err
return
}
@@ -254,12 +254,12 @@ func getPostThread(c *Context, w http.ResponseWriter, r *http.Request) {
}
var channel *model.Channel
- if channel, err = app.GetChannel(post.ChannelId); err != nil {
+ if channel, err = c.App.GetChannel(post.ChannelId); err != nil {
c.Err = err
return
}
- if !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
if channel.Type == model.CHANNEL_OPEN {
if !app.SessionHasPermissionToTeam(c.Session, channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL)
@@ -299,7 +299,7 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
isOrSearch, _ := props["is_or_search"].(bool)
- posts, err := app.SearchPostsInTeam(terms, c.Session.UserId, c.Params.TeamId, isOrSearch)
+ posts, err := c.App.SearchPostsInTeam(terms, c.Session.UserId, c.Params.TeamId, isOrSearch)
if err != nil {
c.Err = err
return
@@ -322,19 +322,19 @@ func updatePost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_POST) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_POST) {
c.SetPermissionError(model.PERMISSION_EDIT_POST)
return
}
- if !app.SessionHasPermissionToPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) {
+ if !c.App.SessionHasPermissionToPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHERS_POSTS)
return
}
post.Id = c.Params.PostId
- rpost, err := app.UpdatePost(post, false)
+ rpost, err := c.App.UpdatePost(post, false)
if err != nil {
c.Err = err
return
@@ -356,17 +356,17 @@ func patchPost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_POST) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_POST) {
c.SetPermissionError(model.PERMISSION_EDIT_POST)
return
}
- if !app.SessionHasPermissionToPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) {
+ if !c.App.SessionHasPermissionToPost(c.Session, c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHERS_POSTS)
return
}
- patchedPost, err := app.PatchPost(c.Params.PostId, post)
+ patchedPost, err := c.App.PatchPost(c.Params.PostId, post)
if err != nil {
c.Err = err
return
@@ -381,7 +381,7 @@ func saveIsPinnedPost(c *Context, w http.ResponseWriter, r *http.Request, isPinn
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -390,7 +390,7 @@ func saveIsPinnedPost(c *Context, w http.ResponseWriter, r *http.Request, isPinn
patch.IsPinned = new(bool)
*patch.IsPinned = isPinned
- _, err := app.PatchPost(c.Params.PostId, patch)
+ _, err := c.App.PatchPost(c.Params.PostId, patch)
if err != nil {
c.Err = err
return
@@ -413,12 +413,12 @@ func getFileInfosForPost(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if infos, err := app.GetFileInfosForPost(c.Params.PostId, false); err != nil {
+ if infos, err := c.App.GetFileInfosForPost(c.Params.PostId, false); err != nil {
c.Err = err
return
} else if HandleEtag(model.GetEtagForFileInfos(infos), "Get File Infos For Post", w, r) {
@@ -436,12 +436,12 @@ func doPostAction(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if err := app.DoPostAction(c.Params.PostId, c.Params.ActionId, c.Session.UserId); err != nil {
+ if err := c.App.DoPostAction(c.Params.PostId, c.Params.ActionId, c.Session.UserId); err != nil {
c.Err = err
return
}
diff --git a/api4/post_test.go b/api4/post_test.go
index c09cb77d1..36ebf26ab 100644
--- a/api4/post_test.go
+++ b/api4/post_test.go
@@ -277,8 +277,8 @@ func TestCreatePostPublic(t *testing.T) {
_, resp = Client.CreatePost(post)
CheckForbiddenStatus(t, resp)
- app.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_POST_ALL_PUBLIC.Id)
- app.InvalidateAllCaches()
+ th.App.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_POST_ALL_PUBLIC.Id)
+ th.App.InvalidateAllCaches()
Client.Login(user.Email, user.Password)
@@ -289,10 +289,10 @@ func TestCreatePostPublic(t *testing.T) {
_, resp = Client.CreatePost(post)
CheckForbiddenStatus(t, resp)
- app.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id)
- app.JoinUserToTeam(th.BasicTeam, ruser, "")
- app.UpdateTeamMemberRoles(th.BasicTeam.Id, ruser.Id, model.ROLE_TEAM_USER.Id+" "+model.ROLE_TEAM_POST_ALL_PUBLIC.Id)
- app.InvalidateAllCaches()
+ th.App.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id)
+ th.App.JoinUserToTeam(th.BasicTeam, ruser, "")
+ th.App.UpdateTeamMemberRoles(th.BasicTeam.Id, ruser.Id, model.ROLE_TEAM_USER.Id+" "+model.ROLE_TEAM_POST_ALL_PUBLIC.Id)
+ th.App.InvalidateAllCaches()
Client.Login(user.Email, user.Password)
@@ -314,7 +314,7 @@ func TestCreatePostAll(t *testing.T) {
user := model.User{Email: GenerateTestEmail(), Nickname: "Joram Wilander", Password: "hello1", Username: GenerateTestUsername(), Roles: model.ROLE_SYSTEM_USER.Id}
- directChannel, _ := app.CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id)
+ directChannel, _ := th.App.CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id)
ruser, resp := Client.CreateUser(&user)
CheckNoError(t, resp)
@@ -324,8 +324,8 @@ func TestCreatePostAll(t *testing.T) {
_, resp = Client.CreatePost(post)
CheckForbiddenStatus(t, resp)
- app.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_POST_ALL.Id)
- app.InvalidateAllCaches()
+ th.App.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_POST_ALL.Id)
+ th.App.InvalidateAllCaches()
Client.Login(user.Email, user.Password)
@@ -340,10 +340,10 @@ func TestCreatePostAll(t *testing.T) {
_, resp = Client.CreatePost(post)
CheckNoError(t, resp)
- app.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id)
- app.JoinUserToTeam(th.BasicTeam, ruser, "")
- app.UpdateTeamMemberRoles(th.BasicTeam.Id, ruser.Id, model.ROLE_TEAM_USER.Id+" "+model.ROLE_TEAM_POST_ALL.Id)
- app.InvalidateAllCaches()
+ th.App.UpdateUserRoles(ruser.Id, model.ROLE_SYSTEM_USER.Id)
+ th.App.JoinUserToTeam(th.BasicTeam, ruser, "")
+ th.App.UpdateTeamMemberRoles(th.BasicTeam.Id, ruser.Id, model.ROLE_TEAM_USER.Id+" "+model.ROLE_TEAM_POST_ALL.Id)
+ th.App.InvalidateAllCaches()
Client.Login(user.Email, user.Password)
@@ -557,7 +557,7 @@ func TestPinPost(t *testing.T) {
t.Fatal("should have passed")
}
- if rpost, err := app.GetSinglePost(post.Id); err != nil && rpost.IsPinned != true {
+ if rpost, err := th.App.GetSinglePost(post.Id); err != nil && rpost.IsPinned != true {
t.Fatal("failed to pin post")
}
@@ -592,7 +592,7 @@ func TestUnpinPost(t *testing.T) {
t.Fatal("should have passed")
}
- if rpost, err := app.GetSinglePost(pinnedPost.Id); err != nil && rpost.IsPinned != false {
+ if rpost, err := th.App.GetSinglePost(pinnedPost.Id); err != nil && rpost.IsPinned != false {
t.Fatal("failed to pin post")
}
@@ -1297,8 +1297,8 @@ func TestSearchPostsFromUser(t *testing.T) {
th.LoginTeamAdmin()
user := th.CreateUser()
LinkUserToTeam(user, th.BasicTeam)
- app.AddUserToChannel(user, th.BasicChannel)
- app.AddUserToChannel(user, th.BasicChannel2)
+ th.App.AddUserToChannel(user, th.BasicChannel)
+ th.App.AddUserToChannel(user, th.BasicChannel2)
message := "sgtitlereview with space"
_ = th.CreateMessagePost(message)
diff --git a/api4/preference.go b/api4/preference.go
index 371f8054b..355c06ec5 100644
--- a/api4/preference.go
+++ b/api4/preference.go
@@ -33,7 +33,7 @@ func getPreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if preferences, err := app.GetPreferencesForUser(c.Params.UserId); err != nil {
+ if preferences, err := c.App.GetPreferencesForUser(c.Params.UserId); err != nil {
c.Err = err
return
} else {
@@ -53,7 +53,7 @@ func getPreferencesByCategory(c *Context, w http.ResponseWriter, r *http.Request
return
}
- if preferences, err := app.GetPreferenceByCategoryForUser(c.Params.UserId, c.Params.Category); err != nil {
+ if preferences, err := c.App.GetPreferenceByCategoryForUser(c.Params.UserId, c.Params.Category); err != nil {
c.Err = err
return
} else {
@@ -73,7 +73,7 @@ func getPreferenceByCategoryAndName(c *Context, w http.ResponseWriter, r *http.R
return
}
- if preferences, err := app.GetPreferenceByCategoryAndNameForUser(c.Params.UserId, c.Params.Category, c.Params.PreferenceName); err != nil {
+ if preferences, err := c.App.GetPreferenceByCategoryAndNameForUser(c.Params.UserId, c.Params.Category, c.Params.PreferenceName); err != nil {
c.Err = err
return
} else {
@@ -99,7 +99,7 @@ func updatePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.UpdatePreferences(c.Params.UserId, preferences); err != nil {
+ if err := c.App.UpdatePreferences(c.Params.UserId, preferences); err != nil {
c.Err = err
return
}
@@ -124,7 +124,7 @@ func deletePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.DeletePreferences(c.Params.UserId, preferences); err != nil {
+ if err := c.App.DeletePreferences(c.Params.UserId, preferences); err != nil {
c.Err = err
return
}
diff --git a/api4/reaction.go b/api4/reaction.go
index 7f161d7fe..41f794639 100644
--- a/api4/reaction.go
+++ b/api4/reaction.go
@@ -37,12 +37,12 @@ func saveReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, reaction.PostId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, reaction.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if reaction, err := app.SaveReactionForPost(reaction); err != nil {
+ if reaction, err := c.App.SaveReactionForPost(reaction); err != nil {
c.Err = err
return
} else {
@@ -57,12 +57,12 @@ func getReactions(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if reactions, err := app.GetReactionsForPost(c.Params.PostId); err != nil {
+ if reactions, err := c.App.GetReactionsForPost(c.Params.PostId); err != nil {
c.Err = err
return
} else {
@@ -87,7 +87,7 @@ func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannelByPost(c.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -103,7 +103,7 @@ func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
EmojiName: c.Params.EmojiName,
}
- err := app.DeleteReactionForPost(reaction)
+ err := c.App.DeleteReactionForPost(reaction)
if err != nil {
c.Err = err
return
diff --git a/api4/reaction_test.go b/api4/reaction_test.go
index c973c9a13..ca8335206 100644
--- a/api4/reaction_test.go
+++ b/api4/reaction_test.go
@@ -9,7 +9,6 @@ import (
"reflect"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
)
@@ -45,7 +44,7 @@ func TestSaveReaction(t *testing.T) {
t.Fatal("CreateAt should exist")
}
- if reactions, err := app.GetReactionsForPost(postId); err != nil && len(reactions) != 1 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil && len(reactions) != 1 {
t.Fatal("didn't save reaction correctly")
}
@@ -53,7 +52,7 @@ func TestSaveReaction(t *testing.T) {
rr, resp = Client.SaveReaction(reaction)
CheckNoError(t, resp)
- if reactions, err := app.GetReactionsForPost(postId); err != nil && len(reactions) != 1 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil && len(reactions) != 1 {
t.Fatal("should have not save duplicated reaction")
}
@@ -66,7 +65,7 @@ func TestSaveReaction(t *testing.T) {
t.Fatal("EmojiName did not match")
}
- if reactions, err := app.GetReactionsForPost(postId); err != nil && len(reactions) != 2 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil && len(reactions) != 2 {
t.Fatal("should have save multiple reactions")
}
@@ -80,7 +79,7 @@ func TestSaveReaction(t *testing.T) {
t.Fatal("EmojiName did not match")
}
- if reactions, err := app.GetReactionsForPost(postId); err != nil && len(reactions) != 3 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil && len(reactions) != 3 {
t.Fatal("should have save multiple reactions")
}
@@ -171,7 +170,7 @@ func TestGetReactions(t *testing.T) {
var reactions []*model.Reaction
for _, userReaction := range userReactions {
- if result := <-app.Srv.Store.Reaction().Save(userReaction); result.Err != nil {
+ if result := <-th.App.Srv.Store.Reaction().Save(userReaction); result.Err != nil {
t.Fatal(result.Err)
} else {
reactions = append(reactions, result.Data.(*model.Reaction))
@@ -222,8 +221,8 @@ func TestDeleteReaction(t *testing.T) {
EmojiName: "smile",
}
- app.SaveReactionForPost(r1)
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 1 {
+ th.App.SaveReactionForPost(r1)
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 1 {
t.Fatal("didn't save reaction correctly")
}
@@ -234,7 +233,7 @@ func TestDeleteReaction(t *testing.T) {
t.Fatal("should have returned true")
}
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 0 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 0 {
t.Fatal("should have deleted reaction")
}
@@ -245,16 +244,16 @@ func TestDeleteReaction(t *testing.T) {
EmojiName: "smile-",
}
- app.SaveReactionForPost(r1)
- app.SaveReactionForPost(r2)
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
+ th.App.SaveReactionForPost(r1)
+ th.App.SaveReactionForPost(r2)
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
t.Fatal("didn't save reactions correctly")
}
_, resp = Client.DeleteReaction(r2)
CheckNoError(t, resp)
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 1 || *reactions[0] != *r1 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 1 || *reactions[0] != *r1 {
t.Fatal("should have deleted 1 reaction only")
}
@@ -265,15 +264,15 @@ func TestDeleteReaction(t *testing.T) {
EmojiName: "+1",
}
- app.SaveReactionForPost(r3)
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
+ th.App.SaveReactionForPost(r3)
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
t.Fatal("didn't save reactions correctly")
}
_, resp = Client.DeleteReaction(r3)
CheckNoError(t, resp)
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 1 || *reactions[0] != *r1 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 1 || *reactions[0] != *r1 {
t.Fatal("should have deleted 1 reaction only")
}
@@ -285,8 +284,8 @@ func TestDeleteReaction(t *testing.T) {
}
th.LoginBasic2()
- app.SaveReactionForPost(r4)
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
+ th.App.SaveReactionForPost(r4)
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
t.Fatal("didn't save reaction correctly")
}
@@ -299,7 +298,7 @@ func TestDeleteReaction(t *testing.T) {
t.Fatal("should have returned false")
}
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 2 {
t.Fatal("should have not deleted a reaction")
}
@@ -346,7 +345,7 @@ func TestDeleteReaction(t *testing.T) {
_, resp = th.SystemAdminClient.DeleteReaction(r4)
CheckNoError(t, resp)
- if reactions, err := app.GetReactionsForPost(postId); err != nil || len(reactions) != 0 {
+ if reactions, err := th.App.GetReactionsForPost(postId); err != nil || len(reactions) != 0 {
t.Fatal("should have deleted both reactions")
}
}
diff --git a/api4/status.go b/api4/status.go
index 3a2c5c762..4e8b1852e 100644
--- a/api4/status.go
+++ b/api4/status.go
@@ -29,7 +29,7 @@ func getUserStatus(c *Context, w http.ResponseWriter, r *http.Request) {
// No permission check required
- if statusMap, err := app.GetUserStatusesByIds([]string{c.Params.UserId}); err != nil {
+ if statusMap, err := c.App.GetUserStatusesByIds([]string{c.Params.UserId}); err != nil {
c.Err = err
return
} else {
@@ -52,7 +52,7 @@ func getUserStatusesByIds(c *Context, w http.ResponseWriter, r *http.Request) {
// No permission check required
- if statusMap, err := app.GetUserStatusesByIds(userIds); err != nil {
+ if statusMap, err := c.App.GetUserStatusesByIds(userIds); err != nil {
c.Err = err
return
} else {
@@ -79,11 +79,11 @@ func updateUserStatus(c *Context, w http.ResponseWriter, r *http.Request) {
switch status.Status {
case "online":
- app.SetStatusOnline(c.Params.UserId, "", true)
+ c.App.SetStatusOnline(c.Params.UserId, "", true)
case "offline":
- app.SetStatusOffline(c.Params.UserId, true)
+ c.App.SetStatusOffline(c.Params.UserId, true)
case "away":
- app.SetStatusAwayIfNeeded(c.Params.UserId, true)
+ c.App.SetStatusAwayIfNeeded(c.Params.UserId, true)
default:
c.SetInvalidParam("status")
return
diff --git a/api4/status_test.go b/api4/status_test.go
index c8277b3de..6d9b6c98e 100644
--- a/api4/status_test.go
+++ b/api4/status_test.go
@@ -3,7 +3,6 @@ package api4
import (
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
)
@@ -18,21 +17,21 @@ func TestGetUserStatus(t *testing.T) {
t.Fatal("Should return offline status")
}
- app.SetStatusOnline(th.BasicUser.Id, "", true)
+ th.App.SetStatusOnline(th.BasicUser.Id, "", true)
userStatus, resp = Client.GetUserStatus(th.BasicUser.Id, "")
CheckNoError(t, resp)
if userStatus.Status != "online" {
t.Fatal("Should return online status")
}
- app.SetStatusAwayIfNeeded(th.BasicUser.Id, true)
+ th.App.SetStatusAwayIfNeeded(th.BasicUser.Id, true)
userStatus, resp = Client.GetUserStatus(th.BasicUser.Id, "")
CheckNoError(t, resp)
if userStatus.Status != "away" {
t.Fatal("Should return away status")
}
- app.SetStatusOffline(th.BasicUser.Id, true)
+ th.App.SetStatusOffline(th.BasicUser.Id, true)
userStatus, resp = Client.GetUserStatus(th.BasicUser.Id, "")
CheckNoError(t, resp)
if userStatus.Status != "offline" {
@@ -70,8 +69,8 @@ func TestGetUsersStatusesByIds(t *testing.T) {
}
}
- app.SetStatusOnline(th.BasicUser.Id, "", true)
- app.SetStatusOnline(th.BasicUser2.Id, "", true)
+ th.App.SetStatusOnline(th.BasicUser.Id, "", true)
+ th.App.SetStatusOnline(th.BasicUser2.Id, "", true)
usersStatuses, resp = Client.GetUsersStatusesByIds(usersIds)
CheckNoError(t, resp)
for _, userStatus := range usersStatuses {
@@ -80,8 +79,8 @@ func TestGetUsersStatusesByIds(t *testing.T) {
}
}
- app.SetStatusAwayIfNeeded(th.BasicUser.Id, true)
- app.SetStatusAwayIfNeeded(th.BasicUser2.Id, true)
+ th.App.SetStatusAwayIfNeeded(th.BasicUser.Id, true)
+ th.App.SetStatusAwayIfNeeded(th.BasicUser2.Id, true)
usersStatuses, resp = Client.GetUsersStatusesByIds(usersIds)
CheckNoError(t, resp)
for _, userStatus := range usersStatuses {
diff --git a/api4/system.go b/api4/system.go
index 8f98afedb..f92dd22f8 100644
--- a/api4/system.go
+++ b/api4/system.go
@@ -79,7 +79,7 @@ func testEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.TestEmail(c.Session.UserId, cfg)
+ err := c.App.TestEmail(c.Session.UserId, cfg)
if err != nil {
c.Err = err
return
@@ -144,7 +144,7 @@ func getAudits(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- audits, err := app.GetAuditsPage("", c.Params.Page, c.Params.PerPage)
+ audits, err := c.App.GetAuditsPage("", c.Params.Page, c.Params.PerPage)
if err != nil {
c.Err = err
@@ -161,7 +161,7 @@ func databaseRecycle(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- app.RecycleDatabaseConnection()
+ c.App.RecycleDatabaseConnection()
ReturnStatusOK(w)
}
@@ -172,7 +172,7 @@ func invalidateCaches(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.InvalidateAllCaches()
+ err := c.App.InvalidateAllCaches()
if err != nil {
c.Err = err
return
@@ -243,8 +243,8 @@ func getClientConfig(c *Context, w http.ResponseWriter, r *http.Request) {
respCfg[k] = v
}
- respCfg["NoAccounts"] = strconv.FormatBool(app.IsFirstUserAccount())
- respCfg["Plugins"] = app.GetPluginsForClientConfig()
+ respCfg["NoAccounts"] = strconv.FormatBool(c.App.IsFirstUserAccount())
+ respCfg["Plugins"] = c.App.GetPluginsForClientConfig()
w.Write([]byte(model.MapToJson(respCfg)))
}
@@ -318,7 +318,7 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
buf := bytes.NewBuffer(nil)
io.Copy(buf, file)
- if license, err := app.SaveLicense(buf.Bytes()); err != nil {
+ if license, err := c.App.SaveLicense(buf.Bytes()); err != nil {
if err.Id == model.EXPIRED_LICENSE_ERROR {
c.LogAudit("failed - expired or non-started license")
} else if err.Id == model.INVALID_LICENSE_ERROR {
@@ -342,7 +342,7 @@ func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.RemoveLicense(); err != nil {
+ if err := c.App.RemoveLicense(); err != nil {
c.Err = err
return
}
@@ -364,7 +364,7 @@ func getAnalytics(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rows, err := app.GetAnalytics(name, teamId)
+ rows, err := c.App.GetAnalytics(name, teamId)
if err != nil {
c.Err = err
return
diff --git a/api4/team.go b/api4/team.go
index 656c4dbbc..5b0054bb8 100644
--- a/api4/team.go
+++ b/api4/team.go
@@ -65,7 +65,7 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rteam, err := app.CreateTeamWithUser(team, c.Session.UserId)
+ rteam, err := c.App.CreateTeamWithUser(team, c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -81,7 +81,7 @@ func getTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if team, err := app.GetTeam(c.Params.TeamId); err != nil {
+ if team, err := c.App.GetTeam(c.Params.TeamId); err != nil {
c.Err = err
return
} else {
@@ -101,7 +101,7 @@ func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if team, err := app.GetTeamByName(c.Params.TeamName); err != nil {
+ if team, err := c.App.GetTeamByName(c.Params.TeamName); err != nil {
c.Err = err
return
} else {
@@ -135,7 +135,7 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- updatedTeam, err := app.UpdateTeam(team)
+ updatedTeam, err := c.App.UpdateTeam(team)
if err != nil {
c.Err = err
@@ -163,7 +163,7 @@ func patchTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- patchedTeam, err := app.PatchTeam(c.Params.TeamId, team)
+ patchedTeam, err := c.App.PatchTeam(c.Params.TeamId, team)
if err != nil {
c.Err = err
@@ -187,9 +187,9 @@ func deleteTeam(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError
if c.Params.Permanent {
- err = app.PermanentDeleteTeamId(c.Params.TeamId)
+ err = c.App.PermanentDeleteTeamId(c.Params.TeamId)
} else {
- err = app.SoftDeleteTeam(c.Params.TeamId)
+ err = c.App.SoftDeleteTeam(c.Params.TeamId)
}
if err != nil {
@@ -211,7 +211,7 @@ func getTeamsForUser(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if teams, err := app.GetTeamsForUser(c.Params.UserId); err != nil {
+ if teams, err := c.App.GetTeamsForUser(c.Params.UserId); err != nil {
c.Err = err
return
} else {
@@ -233,7 +233,7 @@ func getTeamsUnreadForUser(c *Context, w http.ResponseWriter, r *http.Request) {
// optional team id to be excluded from the result
teamId := r.URL.Query().Get("exclude_team")
- unreadTeamsList, err := app.GetTeamsUnreadForUser(teamId, c.Params.UserId)
+ unreadTeamsList, err := c.App.GetTeamsUnreadForUser(teamId, c.Params.UserId)
if err != nil {
c.Err = err
return
@@ -253,7 +253,7 @@ func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if team, err := app.GetTeamMember(c.Params.TeamId, c.Params.UserId); err != nil {
+ if team, err := c.App.GetTeamMember(c.Params.TeamId, c.Params.UserId); err != nil {
c.Err = err
return
} else {
@@ -273,7 +273,7 @@ func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if members, err := app.GetTeamMembers(c.Params.TeamId, c.Params.Page, c.Params.PerPage); err != nil {
+ if members, err := c.App.GetTeamMembers(c.Params.TeamId, c.Params.Page, c.Params.PerPage); err != nil {
c.Err = err
return
} else {
@@ -293,7 +293,7 @@ func getTeamMembersForUser(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- members, err := app.GetTeamMembersForUser(c.Params.UserId)
+ members, err := c.App.GetTeamMembersForUser(c.Params.UserId)
if err != nil {
c.Err = err
return
@@ -320,7 +320,7 @@ func getTeamMembersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- members, err := app.GetTeamMembersByIds(c.Params.TeamId, userIds)
+ members, err := c.App.GetTeamMembersByIds(c.Params.TeamId, userIds)
if err != nil {
c.Err = err
return
@@ -352,7 +352,7 @@ func addTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- member, err = app.AddTeamMember(member.TeamId, member.UserId)
+ member, err = c.App.AddTeamMember(member.TeamId, member.UserId)
if err != nil {
c.Err = err
@@ -372,9 +372,9 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request)
var err *model.AppError
if len(hash) > 0 && len(data) > 0 {
- member, err = app.AddTeamMemberByHash(c.Session.UserId, hash, data)
+ member, err = c.App.AddTeamMemberByHash(c.Session.UserId, hash, data)
} else if len(inviteId) > 0 {
- member, err = app.AddTeamMemberByInviteId(inviteId, c.Session.UserId)
+ member, err = c.App.AddTeamMemberByInviteId(inviteId, c.Session.UserId)
} else {
err = model.NewAppError("addTeamMember", "api.team.add_user_to_team.missing_parameter.app_error", nil, "", http.StatusBadRequest)
}
@@ -422,7 +422,7 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- members, err = app.AddTeamMembers(c.Params.TeamId, userIds, c.Session.UserId)
+ members, err = c.App.AddTeamMembers(c.Params.TeamId, userIds, c.Session.UserId)
if err != nil {
c.Err = err
@@ -446,7 +446,7 @@ func removeTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if err := app.RemoveUserFromTeam(c.Params.TeamId, c.Params.UserId); err != nil {
+ if err := c.App.RemoveUserFromTeam(c.Params.TeamId, c.Params.UserId); err != nil {
c.Err = err
return
}
@@ -470,7 +470,7 @@ func getTeamUnread(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- unreadTeam, err := app.GetTeamUnread(c.Params.TeamId, c.Params.UserId)
+ unreadTeam, err := c.App.GetTeamUnread(c.Params.TeamId, c.Params.UserId)
if err != nil {
c.Err = err
return
@@ -490,7 +490,7 @@ func getTeamStats(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if stats, err := app.GetTeamStats(c.Params.TeamId); err != nil {
+ if stats, err := c.App.GetTeamStats(c.Params.TeamId); err != nil {
c.Err = err
return
} else {
@@ -518,7 +518,7 @@ func updateTeamMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if _, err := app.UpdateTeamMemberRoles(c.Params.TeamId, c.Params.UserId, newRoles); err != nil {
+ if _, err := c.App.UpdateTeamMemberRoles(c.Params.TeamId, c.Params.UserId, newRoles); err != nil {
c.Err = err
return
}
@@ -531,9 +531,9 @@ func getAllTeams(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError
if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
- teams, err = app.GetAllTeamsPage(c.Params.Page, c.Params.PerPage)
+ teams, err = c.App.GetAllTeamsPage(c.Params.Page, c.Params.PerPage)
} else {
- teams, err = app.GetAllOpenTeamsPage(c.Params.Page, c.Params.PerPage)
+ teams, err = c.App.GetAllOpenTeamsPage(c.Params.Page, c.Params.PerPage)
}
if err != nil {
@@ -560,9 +560,9 @@ func searchTeams(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError
if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
- teams, err = app.SearchAllTeams(props.Term)
+ teams, err = c.App.SearchAllTeams(props.Term)
} else {
- teams, err = app.SearchOpenTeams(props.Term)
+ teams, err = c.App.SearchOpenTeams(props.Term)
}
if err != nil {
@@ -581,7 +581,7 @@ func teamExists(c *Context, w http.ResponseWriter, r *http.Request) {
resp := make(map[string]bool)
- if _, err := app.GetTeamByName(c.Params.TeamName); err != nil {
+ if _, err := c.App.GetTeamByName(c.Params.TeamName); err != nil {
resp["exists"] = false
} else {
resp["exists"] = true
@@ -646,7 +646,7 @@ func importTeam(c *Context, w http.ResponseWriter, r *http.Request) {
switch importFrom {
case "slack":
var err *model.AppError
- if err, log = app.SlackImport(fileData, fileSize, c.Params.TeamId); err != nil {
+ if err, log = c.App.SlackImport(fileData, fileSize, c.Params.TeamId); err != nil {
c.Err = err
c.Err.StatusCode = http.StatusBadRequest
}
@@ -683,7 +683,7 @@ func inviteUsersToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.InviteNewUsersToTeam(emailList, c.Params.TeamId, c.Session.UserId)
+ err := c.App.InviteNewUsersToTeam(emailList, c.Params.TeamId, c.Session.UserId)
if err != nil {
c.Err = err
return
@@ -698,7 +698,7 @@ func getInviteInfo(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if team, err := app.GetTeamByInviteId(c.Params.InviteId); err != nil {
+ if team, err := c.App.GetTeamByInviteId(c.Params.InviteId); err != nil {
c.Err = err
return
} else {
diff --git a/api4/team_test.go b/api4/team_test.go
index 1f9772113..22fbb8a6f 100644
--- a/api4/team_test.go
+++ b/api4/team_test.go
@@ -14,7 +14,6 @@ import (
"encoding/base64"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
)
@@ -346,7 +345,7 @@ func TestSoftDeleteTeam(t *testing.T) {
t.Fatal("should have returned true")
}
- rteam, err := app.GetTeam(team.Id)
+ rteam, err := th.App.GetTeam(team.Id)
if err != nil {
t.Fatal("should have returned archived team")
}
@@ -390,7 +389,7 @@ func TestPermanentDeleteTeam(t *testing.T) {
// The team is deleted in the background, its only soft deleted at this
// time
- rteam, err := app.GetTeam(team.Id)
+ rteam, err := th.App.GetTeam(team.Id)
if err != nil {
t.Fatal("should have returned archived team")
}
@@ -515,7 +514,7 @@ func TestSearchAllTeams(t *testing.T) {
oTeam := th.BasicTeam
oTeam.AllowOpenInvite = true
- updatedTeam, _ := app.UpdateTeam(oTeam)
+ updatedTeam, _ := th.App.UpdateTeam(oTeam)
oTeam.UpdateAt = updatedTeam.UpdateAt
pTeam := &model.Team{DisplayName: "PName", Name: GenerateTestTeamName(), Email: GenerateTestEmail(), Type: model.TEAM_INVITE}
@@ -803,7 +802,7 @@ func TestAddTeamMember(t *testing.T) {
team := th.BasicTeam
otherUser := th.CreateUser()
- if err := app.RemoveUserFromTeam(th.BasicTeam.Id, th.BasicUser2.Id); err != nil {
+ if err := th.App.RemoveUserFromTeam(th.BasicTeam.Id, th.BasicUser2.Id); err != nil {
t.Fatalf(err.Error())
}
@@ -887,7 +886,7 @@ func TestAddTeamMember(t *testing.T) {
// Update user to team admin
UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
*utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
@@ -913,7 +912,7 @@ func TestAddTeamMember(t *testing.T) {
// Change permission level to All
UpdateUserToNonTeamAdmin(th.BasicUser, th.BasicTeam)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
*utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_ALL
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
@@ -1019,7 +1018,7 @@ func TestAddTeamMembers(t *testing.T) {
otherUser.Id,
}
- if err := app.RemoveUserFromTeam(th.BasicTeam.Id, th.BasicUser2.Id); err != nil {
+ if err := th.App.RemoveUserFromTeam(th.BasicTeam.Id, th.BasicUser2.Id); err != nil {
t.Fatalf(err.Error())
}
@@ -1101,7 +1100,7 @@ func TestAddTeamMembers(t *testing.T) {
// Update user to team admin
UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
*utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
@@ -1127,7 +1126,7 @@ func TestAddTeamMembers(t *testing.T) {
// Change permission level to All
UpdateUserToNonTeamAdmin(th.BasicUser, th.BasicTeam)
- app.InvalidateAllCaches()
+ th.App.InvalidateAllCaches()
*utils.Cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_ALL
utils.SetIsLicensed(true)
utils.SetLicense(&model.License{Features: &model.Features{}})
@@ -1493,7 +1492,7 @@ func TestInviteUsersToTeam(t *testing.T) {
}()
utils.Cfg.TeamSettings.RestrictCreationToDomains = "@example.com"
- err := app.InviteNewUsersToTeam(emailList, th.BasicTeam.Id, th.BasicUser.Id)
+ err := th.App.InviteNewUsersToTeam(emailList, th.BasicTeam.Id, th.BasicUser.Id)
if err == nil {
t.Fatal("Adding users with non-restricted domains was allowed")
diff --git a/api4/user.go b/api4/user.go
index 805ec4241..ec9663208 100644
--- a/api4/user.go
+++ b/api4/user.go
@@ -77,13 +77,13 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
var ruser *model.User
var err *model.AppError
if len(hash) > 0 {
- ruser, err = app.CreateUserWithHash(user, hash, r.URL.Query().Get("d"))
+ ruser, err = c.App.CreateUserWithHash(user, hash, r.URL.Query().Get("d"))
} else if len(inviteId) > 0 {
- ruser, err = app.CreateUserWithInviteId(user, inviteId)
+ ruser, err = c.App.CreateUserWithInviteId(user, inviteId)
} else if c.IsSystemAdmin() {
- ruser, err = app.CreateUserAsAdmin(user)
+ ruser, err = c.App.CreateUserAsAdmin(user)
} else {
- ruser, err = app.CreateUserFromSignup(user)
+ ruser, err = c.App.CreateUserFromSignup(user)
}
if err != nil {
@@ -106,7 +106,7 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
var user *model.User
var err *model.AppError
- if user, err = app.GetUser(c.Params.UserId); err != nil {
+ if user, err = c.App.GetUser(c.Params.UserId); err != nil {
c.Err = err
return
}
@@ -138,7 +138,7 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
var user *model.User
var err *model.AppError
- if user, err = app.GetUserByUsername(c.Params.Username); err != nil {
+ if user, err = c.App.GetUserByUsername(c.Params.Username); err != nil {
c.Err = err
return
}
@@ -166,7 +166,7 @@ func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
var user *model.User
var err *model.AppError
- if user, err = app.GetUserByEmail(c.Params.Email); err != nil {
+ if user, err = c.App.GetUserByEmail(c.Params.Email); err != nil {
c.Err = err
return
}
@@ -189,7 +189,7 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if users, err := app.GetUsersByIds([]string{c.Params.UserId}, c.IsSystemAdmin()); err != nil {
+ if users, err := c.App.GetUsersByIds([]string{c.Params.UserId}, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -263,7 +263,7 @@ func setProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
imageData := imageArray[0]
- if err := app.SetProfileImage(c.Params.UserId, imageData); err != nil {
+ if err := c.App.SetProfileImage(c.Params.UserId, imageData); err != nil {
c.Err = err
return
}
@@ -307,26 +307,26 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- profiles, err = app.GetUsersWithoutTeamPage(c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetUsersWithoutTeamPage(c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
} else if len(notInChannelId) > 0 {
- if !app.SessionHasPermissionToChannel(c.Session, notInChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, notInChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- profiles, err = app.GetUsersNotInChannelPage(inTeamId, notInChannelId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetUsersNotInChannelPage(inTeamId, notInChannelId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
} else if len(notInTeamId) > 0 {
if !app.SessionHasPermissionToTeam(c.Session, notInTeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return
}
- etag = app.GetUsersNotInTeamEtag(inTeamId)
+ etag = c.App.GetUsersNotInTeamEtag(inTeamId)
if HandleEtag(etag, "Get Users Not in Team", w, r) {
return
}
- profiles, err = app.GetUsersNotInTeamPage(notInTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetUsersNotInTeamPage(notInTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
} else if len(inTeamId) > 0 {
if !app.SessionHasPermissionToTeam(c.Session, inTeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
@@ -334,32 +334,32 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
}
if sort == "last_activity_at" {
- profiles, err = app.GetRecentlyActiveUsersForTeamPage(inTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetRecentlyActiveUsersForTeamPage(inTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
} else if sort == "create_at" {
- profiles, err = app.GetNewUsersForTeamPage(inTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetNewUsersForTeamPage(inTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
} else {
- etag = app.GetUsersInTeamEtag(inTeamId)
+ etag = c.App.GetUsersInTeamEtag(inTeamId)
if HandleEtag(etag, "Get Users in Team", w, r) {
return
}
- profiles, err = app.GetUsersInTeamPage(inTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetUsersInTeamPage(inTeamId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
}
} else if len(inChannelId) > 0 {
- if !app.SessionHasPermissionToChannel(c.Session, inChannelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, inChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- profiles, err = app.GetUsersInChannelPage(inChannelId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetUsersInChannelPage(inChannelId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
} else {
// No permission check required
- etag = app.GetUsersEtag()
+ etag = c.App.GetUsersEtag()
if HandleEtag(etag, "Get Users", w, r) {
return
}
- profiles, err = app.GetUsersPage(c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
+ profiles, err = c.App.GetUsersPage(c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
}
if err != nil {
@@ -383,7 +383,7 @@ func getUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
// No permission check required
- if users, err := app.GetUsersByIds(userIds, c.IsSystemAdmin()); err != nil {
+ if users, err := c.App.GetUsersByIds(userIds, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -401,7 +401,7 @@ func getUsersByNames(c *Context, w http.ResponseWriter, r *http.Request) {
// No permission check required
- if users, err := app.GetUsersByUsernames(usernames, c.IsSystemAdmin()); err != nil {
+ if users, err := c.App.GetUsersByUsernames(usernames, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -426,12 +426,12 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if props.InChannelId != "" && !app.SessionHasPermissionToChannel(c.Session, props.InChannelId, model.PERMISSION_READ_CHANNEL) {
+ if props.InChannelId != "" && !c.App.SessionHasPermissionToChannel(c.Session, props.InChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if props.NotInChannelId != "" && !app.SessionHasPermissionToChannel(c.Session, props.NotInChannelId, model.PERMISSION_READ_CHANNEL) {
+ if props.NotInChannelId != "" && !c.App.SessionHasPermissionToChannel(c.Session, props.NotInChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
@@ -462,7 +462,7 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
- if profiles, err := app.SearchUsers(props, searchOptions, c.IsSystemAdmin()); err != nil {
+ if profiles, err := c.App.SearchUsers(props, searchOptions, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -488,12 +488,12 @@ func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
}
if len(channelId) > 0 {
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- result, _ := app.AutocompleteUsersInChannel(teamId, channelId, name, searchOptions, c.IsSystemAdmin())
+ result, _ := c.App.AutocompleteUsersInChannel(teamId, channelId, name, searchOptions, c.IsSystemAdmin())
autocomplete.Users = result.InChannel
autocomplete.OutOfChannel = result.OutOfChannel
} else if len(teamId) > 0 {
@@ -502,11 +502,11 @@ func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- result, _ := app.AutocompleteUsersInTeam(teamId, name, searchOptions, c.IsSystemAdmin())
+ result, _ := c.App.AutocompleteUsersInTeam(teamId, name, searchOptions, c.IsSystemAdmin())
autocomplete.Users = result.InTeam
} else {
// No permission check required
- result, _ := app.SearchUsersInTeam("", name, searchOptions, c.IsSystemAdmin())
+ result, _ := c.App.SearchUsersInTeam("", name, searchOptions, c.IsSystemAdmin())
autocomplete.Users = result
}
@@ -535,7 +535,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if ruser, err := app.UpdateUserAsUser(user, c.IsSystemAdmin()); err != nil {
+ if ruser, err := c.App.UpdateUserAsUser(user, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -561,7 +561,7 @@ func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if ruser, err := app.PatchUser(c.Params.UserId, patch, c.IsSystemAdmin()); err != nil {
+ if ruser, err := c.App.PatchUser(c.Params.UserId, patch, c.IsSystemAdmin()); err != nil {
c.Err = err
return
} else {
@@ -586,12 +586,12 @@ func deleteUser(c *Context, w http.ResponseWriter, r *http.Request) {
var user *model.User
var err *model.AppError
- if user, err = app.GetUser(userId); err != nil {
+ if user, err = c.App.GetUser(userId); err != nil {
c.Err = err
return
}
- if _, err := app.UpdateActive(user, false); err != nil {
+ if _, err := c.App.UpdateActive(user, false); err != nil {
c.Err = err
return
}
@@ -618,7 +618,7 @@ func updateUserRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if _, err := app.UpdateUserRoles(c.Params.UserId, newRoles); err != nil {
+ if _, err := c.App.UpdateUserRoles(c.Params.UserId, newRoles); err != nil {
c.Err = err
return
} else {
@@ -650,7 +650,7 @@ func updateUserActive(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if ruser, err := app.UpdateActiveNoLdap(c.Params.UserId, active); err != nil {
+ if ruser, err := c.App.UpdateActiveNoLdap(c.Params.UserId, active); err != nil {
c.Err = err
} else {
c.LogAuditWithUserId(ruser.Id, fmt.Sprintf("active=%v", active))
@@ -675,7 +675,7 @@ func checkUserMfa(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if user, err := app.GetUserForLogin(loginId, false); err == nil {
+ if user, err := c.App.GetUserForLogin(loginId, false); err == nil {
resp["mfa_required"] = user.MfaActive
}
@@ -712,7 +712,7 @@ func updateUserMfa(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- if err := app.UpdateMfa(activate, c.Params.UserId, code); err != nil {
+ if err := c.App.UpdateMfa(activate, c.Params.UserId, code); err != nil {
c.Err = err
return
}
@@ -732,7 +732,7 @@ func generateMfaSecret(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- secret, err := app.GenerateMfaSecret(c.Params.UserId)
+ secret, err := c.App.GenerateMfaSecret(c.Params.UserId)
if err != nil {
c.Err = err
return
@@ -764,9 +764,9 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.UpdatePasswordAsUser(c.Params.UserId, currentPassword, newPassword)
+ err = c.App.UpdatePasswordAsUser(c.Params.UserId, currentPassword, newPassword)
} else if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
- err = app.UpdatePasswordByUserIdSendEmail(c.Params.UserId, newPassword, c.T("api.user.reset_password.method"))
+ err = c.App.UpdatePasswordByUserIdSendEmail(c.Params.UserId, newPassword, c.T("api.user.reset_password.method"))
} else {
err = model.NewAppError("updatePassword", "api.user.update_password.context.app_error", nil, "", http.StatusForbidden)
}
@@ -794,7 +794,7 @@ func resetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt - token=" + token)
- if err := app.ResetPasswordFromToken(token, newPassword); err != nil {
+ if err := c.App.ResetPasswordFromToken(token, newPassword); err != nil {
c.LogAudit("fail - token=" + token)
c.Err = err
return
@@ -814,7 +814,7 @@ func sendPasswordReset(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sent, err := app.SendPasswordReset(email, utils.GetSiteURL()); err != nil {
+ if sent, err := c.App.SendPasswordReset(email, utils.GetSiteURL()); err != nil {
c.Err = err
return
} else if sent {
@@ -835,7 +835,7 @@ func login(c *Context, w http.ResponseWriter, r *http.Request) {
ldapOnly := props["ldap_only"] == "true"
c.LogAuditWithUserId(id, "attempt - login_id="+loginId)
- user, err := app.AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId, ldapOnly)
+ user, err := c.App.AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId, ldapOnly)
if err != nil {
c.LogAuditWithUserId(id, "failure - login_id="+loginId)
c.Err = err
@@ -845,7 +845,7 @@ func login(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAuditWithUserId(user.Id, "authenticated")
var session *model.Session
- session, err = app.DoLogin(w, r, user, deviceId)
+ session, err = c.App.DoLogin(w, r, user, deviceId)
if err != nil {
c.Err = err
return
@@ -872,7 +872,7 @@ func Logout(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("")
c.RemoveSessionCookie(w, r)
if c.Session.Id != "" {
- if err := app.RevokeSessionById(c.Session.Id); err != nil {
+ if err := c.App.RevokeSessionById(c.Session.Id); err != nil {
c.Err = err
return
}
@@ -892,7 +892,7 @@ func getSessions(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if sessions, err := app.GetSessions(c.Params.UserId); err != nil {
+ if sessions, err := c.App.GetSessions(c.Params.UserId); err != nil {
c.Err = err
return
} else {
@@ -924,7 +924,7 @@ func revokeSession(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.RevokeSessionById(sessionId); err != nil {
+ if err := c.App.RevokeSessionById(sessionId); err != nil {
c.Err = err
return
}
@@ -942,7 +942,7 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) {
}
// A special case where we logout of all other sessions with the same device id
- if err := app.RevokeSessionsForDeviceId(c.Session.UserId, deviceId, c.Session.Id); err != nil {
+ if err := c.App.RevokeSessionsForDeviceId(c.Session.UserId, deviceId, c.Session.Id); err != nil {
c.Err = err
return
}
@@ -970,7 +970,7 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) {
http.SetCookie(w, sessionCookie)
- if err := app.AttachDeviceId(c.Session.Id, deviceId, c.Session.ExpiresAt); err != nil {
+ if err := c.App.AttachDeviceId(c.Session.Id, deviceId, c.Session.ExpiresAt); err != nil {
c.Err = err
return
}
@@ -990,7 +990,7 @@ func getUserAudits(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if audits, err := app.GetAuditsPage(c.Params.UserId, c.Params.Page, c.Params.PerPage); err != nil {
+ if audits, err := c.App.GetAuditsPage(c.Params.UserId, c.Params.Page, c.Params.PerPage); err != nil {
c.Err = err
return
} else {
@@ -1008,7 +1008,7 @@ func verifyUserEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.VerifyEmailFromToken(token); err != nil {
+ if err := c.App.VerifyEmailFromToken(token); err != nil {
c.Err = model.NewAppError("verifyUserEmail", "api.user.verify_email.bad_link.app_error", nil, err.Error(), http.StatusBadRequest)
return
} else {
@@ -1027,14 +1027,14 @@ func sendVerificationEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- user, err := app.GetUserForLogin(email, false)
+ user, err := c.App.GetUserForLogin(email, false)
if err != nil {
// Don't want to leak whether the email is valid or not
ReturnStatusOK(w)
return
}
- err = app.SendEmailVerification(user)
+ err = c.App.SendEmailVerification(user)
if err != nil {
// Don't want to leak whether the email is valid or not
l4g.Error(err.Error())
@@ -1056,18 +1056,18 @@ func switchAccountType(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError
if switchRequest.EmailToOAuth() {
- link, err = app.SwitchEmailToOAuth(w, r, switchRequest.Email, switchRequest.Password, switchRequest.MfaCode, switchRequest.NewService)
+ link, err = c.App.SwitchEmailToOAuth(w, r, switchRequest.Email, switchRequest.Password, switchRequest.MfaCode, switchRequest.NewService)
} else if switchRequest.OAuthToEmail() {
c.SessionRequired()
if c.Err != nil {
return
}
- link, err = app.SwitchOAuthToEmail(switchRequest.Email, switchRequest.NewPassword, c.Session.UserId)
+ link, err = c.App.SwitchOAuthToEmail(switchRequest.Email, switchRequest.NewPassword, c.Session.UserId)
} else if switchRequest.EmailToLdap() {
- link, err = app.SwitchEmailToLdap(switchRequest.Email, switchRequest.Password, switchRequest.MfaCode, switchRequest.LdapId, switchRequest.NewPassword)
+ link, err = c.App.SwitchEmailToLdap(switchRequest.Email, switchRequest.Password, switchRequest.MfaCode, switchRequest.LdapId, switchRequest.NewPassword)
} else if switchRequest.LdapToEmail() {
- link, err = app.SwitchLdapToEmail(switchRequest.Password, switchRequest.MfaCode, switchRequest.Email, switchRequest.NewPassword)
+ link, err = c.App.SwitchLdapToEmail(switchRequest.Password, switchRequest.MfaCode, switchRequest.Email, switchRequest.NewPassword)
} else {
c.SetInvalidParam("switch_request")
return
@@ -1115,7 +1115,7 @@ func createUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
accessToken.Token = ""
var err *model.AppError
- accessToken, err = app.CreateUserAccessToken(accessToken)
+ accessToken, err = c.App.CreateUserAccessToken(accessToken)
if err != nil {
c.Err = err
return
@@ -1141,7 +1141,7 @@ func getUserAccessTokens(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- accessTokens, err := app.GetUserAccessTokensForUser(c.Params.UserId, c.Params.Page, c.Params.PerPage)
+ accessTokens, err := c.App.GetUserAccessTokensForUser(c.Params.UserId, c.Params.Page, c.Params.PerPage)
if err != nil {
c.Err = err
return
@@ -1161,7 +1161,7 @@ func getUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- accessToken, err := app.GetUserAccessToken(c.Params.TokenId, true)
+ accessToken, err := c.App.GetUserAccessToken(c.Params.TokenId, true)
if err != nil {
c.Err = err
return
@@ -1190,7 +1190,7 @@ func revokeUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- accessToken, err := app.GetUserAccessToken(tokenId, false)
+ accessToken, err := c.App.GetUserAccessToken(tokenId, false)
if err != nil {
c.Err = err
return
@@ -1201,7 +1201,7 @@ func revokeUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err = app.RevokeUserAccessToken(accessToken)
+ err = c.App.RevokeUserAccessToken(accessToken)
if err != nil {
c.Err = err
return
diff --git a/api4/user_test.go b/api4/user_test.go
index b80053f9f..3d7fc1630 100644
--- a/api4/user_test.go
+++ b/api4/user_test.go
@@ -11,7 +11,6 @@ import (
"testing"
"time"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
"github.com/stretchr/testify/assert"
@@ -553,7 +552,7 @@ func TestSearchUsers(t *testing.T) {
t.Fatal("should have found user")
}
- _, err := app.UpdateActiveNoLdap(th.BasicUser2.Id, false)
+ _, err := th.App.UpdateActiveNoLdap(th.BasicUser2.Id, false)
if err != nil {
t.Fatal(err)
}
@@ -676,7 +675,7 @@ func TestSearchUsers(t *testing.T) {
utils.Cfg.PrivacySettings.ShowEmailAddress = false
utils.Cfg.PrivacySettings.ShowFullName = false
- _, err = app.UpdateActiveNoLdap(th.BasicUser2.Id, true)
+ _, err = th.App.UpdateActiveNoLdap(th.BasicUser2.Id, true)
if err != nil {
t.Fatal(err)
}
@@ -1261,7 +1260,7 @@ func TestGetRecentlyActiveUsersInTeam(t *testing.T) {
Client := th.Client
teamId := th.BasicTeam.Id
- app.SetStatusOnline(th.BasicUser.Id, "", true)
+ th.App.SetStatusOnline(th.BasicUser.Id, "", true)
rusers, resp := Client.GetRecentlyActiveUsersInTeam(teamId, 0, 60, "")
CheckNoError(t, resp)
@@ -1303,7 +1302,7 @@ func TestGetUsersWithoutTeam(t *testing.T) {
})
CheckNoError(t, resp)
LinkUserToTeam(user, th.BasicTeam)
- defer app.Srv.Store.User().PermanentDelete(user.Id)
+ defer th.App.Srv.Store.User().PermanentDelete(user.Id)
user2, resp := Client.CreateUser(&model.User{
Username: "a000000001" + model.NewId(),
@@ -1311,7 +1310,7 @@ func TestGetUsersWithoutTeam(t *testing.T) {
Password: "Password1",
})
CheckNoError(t, resp)
- defer app.Srv.Store.User().PermanentDelete(user2.Id)
+ defer th.App.Srv.Store.User().PermanentDelete(user2.Id)
rusers, resp := SystemAdminClient.GetUsersWithoutTeam(0, 100, "")
CheckNoError(t, resp)
@@ -1761,7 +1760,7 @@ func TestResetPassword(t *testing.T) {
}
var recoveryToken *model.Token
- if result := <-app.Srv.Store.Token().GetByToken(recoveryTokenString); result.Err != nil {
+ if result := <-th.App.Srv.Store.Token().GetByToken(recoveryTokenString); result.Err != nil {
t.Log(recoveryTokenString)
t.Fatal(result.Err)
} else {
@@ -1917,7 +1916,7 @@ func TestAttachDeviceId(t *testing.T) {
t.Fatal("should have passed")
}
- if sessions, err := app.GetSessions(th.BasicUser.Id); err != nil {
+ if sessions, err := th.App.GetSessions(th.BasicUser.Id); err != nil {
t.Fatal(err)
} else {
if sessions[0].DeviceId != deviceId {
@@ -1968,7 +1967,7 @@ func TestVerifyUserEmail(t *testing.T) {
ruser, resp := Client.CreateUser(&user)
- token, err := app.CreateVerifyEmailToken(ruser.Id)
+ token, err := th.App.CreateVerifyEmailToken(ruser.Id)
if err != nil {
t.Fatal("Unable to create email verify token")
}
@@ -2042,13 +2041,13 @@ func TestSetProfileImage(t *testing.T) {
t.Fatal("Should have failed either forbidden or unauthorized")
}
- buser, err := app.GetUser(user.Id)
+ buser, err := th.App.GetUser(user.Id)
require.Nil(t, err)
_, resp = th.SystemAdminClient.SetProfileImage(user.Id, data)
CheckNoError(t, resp)
- ruser, err := app.GetUser(user.Id)
+ ruser, err := th.App.GetUser(user.Id)
require.Nil(t, err)
assert.True(t, buser.LastPictureUpdate < ruser.LastPictureUpdate, "Picture should have updated for user")
@@ -2088,7 +2087,7 @@ func TestSwitchAccount(t *testing.T) {
th.LoginBasic()
fakeAuthData := model.NewId()
- if result := <-app.Srv.Store.User().UpdateAuthData(th.BasicUser.Id, model.USER_AUTH_SERVICE_GITLAB, &fakeAuthData, th.BasicUser.Email, true); result.Err != nil {
+ if result := <-th.App.Srv.Store.User().UpdateAuthData(th.BasicUser.Id, model.USER_AUTH_SERVICE_GITLAB, &fakeAuthData, th.BasicUser.Email, true); result.Err != nil {
t.Fatal(result.Err)
}
@@ -2172,7 +2171,7 @@ func TestCreateUserAccessToken(t *testing.T) {
_, resp = Client.CreateUserAccessToken(th.BasicUser.Id, "")
CheckBadRequestStatus(t, resp)
- app.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
+ th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
*utils.Cfg.ServiceSettings.EnableUserAccessTokens = false
_, resp = Client.CreateUserAccessToken(th.BasicUser.Id, testDescription)
@@ -2243,7 +2242,7 @@ func TestGetUserAccessToken(t *testing.T) {
_, resp = Client.GetUserAccessToken(model.NewId())
CheckForbiddenStatus(t, resp)
- app.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
+ th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
token, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription)
CheckNoError(t, resp)
@@ -2308,7 +2307,7 @@ func TestRevokeUserAccessToken(t *testing.T) {
}()
*utils.Cfg.ServiceSettings.EnableUserAccessTokens = true
- app.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
+ th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
token, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription)
CheckNoError(t, resp)
@@ -2355,7 +2354,7 @@ func TestUserAccessTokenInactiveUser(t *testing.T) {
}()
*utils.Cfg.ServiceSettings.EnableUserAccessTokens = true
- app.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
+ th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
token, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription)
CheckNoError(t, resp)
@@ -2363,7 +2362,7 @@ func TestUserAccessTokenInactiveUser(t *testing.T) {
_, resp = Client.GetMe("")
CheckNoError(t, resp)
- app.UpdateActive(th.BasicUser, false)
+ th.App.UpdateActive(th.BasicUser, false)
_, resp = Client.GetMe("")
CheckUnauthorizedStatus(t, resp)
@@ -2382,7 +2381,7 @@ func TestUserAccessTokenDisableConfig(t *testing.T) {
}()
*utils.Cfg.ServiceSettings.EnableUserAccessTokens = true
- app.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
+ th.App.UpdateUserRoles(th.BasicUser.Id, model.ROLE_SYSTEM_USER.Id+" "+model.ROLE_SYSTEM_USER_ACCESS_TOKEN.Id)
token, resp := Client.CreateUserAccessToken(th.BasicUser.Id, testDescription)
CheckNoError(t, resp)
diff --git a/api4/webhook.go b/api4/webhook.go
index 6d332e8fc..b98e054df 100644
--- a/api4/webhook.go
+++ b/api4/webhook.go
@@ -45,7 +45,7 @@ func createIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- channel, err := app.GetChannel(hook.ChannelId)
+ channel, err := c.App.GetChannel(hook.ChannelId)
if err != nil {
c.Err = err
return
@@ -58,13 +58,13 @@ func createIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if channel.Type != model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.LogAudit("fail - bad channel permissions")
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if incomingHook, err := app.CreateIncomingWebhookForChannel(c.Session.UserId, channel, hook); err != nil {
+ if incomingHook, err := c.App.CreateIncomingWebhookForChannel(c.Session.UserId, channel, hook); err != nil {
c.Err = err
return
} else {
@@ -90,7 +90,7 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
- oldHook, err := app.GetIncomingWebhook(hookId)
+ oldHook, err := c.App.GetIncomingWebhook(hookId)
if err != nil {
c.Err = err
return
@@ -116,19 +116,19 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- channel, err := app.GetChannel(updatedHook.ChannelId)
+ channel, err := c.App.GetChannel(updatedHook.ChannelId)
if err != nil {
c.Err = err
return
}
- if channel.Type != model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_READ_CHANNEL) {
c.LogAudit("fail - bad channel permissions")
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
- if incomingHook, err := app.UpdateIncomingWebhook(oldHook, updatedHook); err != nil {
+ if incomingHook, err := c.App.UpdateIncomingWebhook(oldHook, updatedHook); err != nil {
c.Err = err
return
} else {
@@ -150,14 +150,14 @@ func getIncomingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- hooks, err = app.GetIncomingWebhooksForTeamPage(teamId, c.Params.Page, c.Params.PerPage)
+ hooks, err = c.App.GetIncomingWebhooksForTeamPage(teamId, c.Params.Page, c.Params.PerPage)
} else {
if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
return
}
- hooks, err = app.GetIncomingWebhooksPage(c.Params.Page, c.Params.PerPage)
+ hooks, err = c.App.GetIncomingWebhooksPage(c.Params.Page, c.Params.PerPage)
}
if err != nil {
@@ -180,18 +180,18 @@ func getIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
var hook *model.IncomingWebhook
var channel *model.Channel
- if hook, err = app.GetIncomingWebhook(hookId); err != nil {
+ if hook, err = c.App.GetIncomingWebhook(hookId); err != nil {
c.Err = err
return
} else {
- channel, err = app.GetChannel(hook.ChannelId)
+ channel, err = c.App.GetChannel(hook.ChannelId)
if err != nil {
c.Err = err
return
}
if !app.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_WEBHOOKS) ||
- (channel.Type != model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
+ (channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
c.LogAudit("fail - bad permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
return
@@ -214,23 +214,23 @@ func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
var hook *model.IncomingWebhook
var channel *model.Channel
- if hook, err = app.GetIncomingWebhook(hookId); err != nil {
+ if hook, err = c.App.GetIncomingWebhook(hookId); err != nil {
c.Err = err
return
} else {
- channel, err = app.GetChannel(hook.ChannelId)
+ channel, err = c.App.GetChannel(hook.ChannelId)
if err != nil {
c.Err = err
return
}
if !app.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_WEBHOOKS) ||
- (channel.Type != model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
+ (channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
c.LogAudit("fail - bad permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
return
} else {
- if err = app.DeleteIncomingWebhook(hookId); err != nil {
+ if err = c.App.DeleteIncomingWebhook(hookId); err != nil {
c.Err = err
return
}
@@ -261,7 +261,7 @@ func updateOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- oldHook, err := app.GetOutgoingWebhook(toUpdateHook.Id)
+ oldHook, err := c.App.GetOutgoingWebhook(toUpdateHook.Id)
if err != nil {
c.Err = err
return
@@ -273,7 +273,7 @@ func updateOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- rhook, err := app.UpdateOutgoingWebhook(oldHook, toUpdateHook)
+ rhook, err := c.App.UpdateOutgoingWebhook(oldHook, toUpdateHook)
if err != nil {
c.Err = err
return
@@ -299,7 +299,7 @@ func createOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if rhook, err := app.CreateOutgoingWebhook(hook); err != nil {
+ if rhook, err := c.App.CreateOutgoingWebhook(hook); err != nil {
c.LogAudit("fail")
c.Err = err
return
@@ -318,26 +318,26 @@ func getOutgoingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError
if len(channelId) > 0 {
- if !app.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_MANAGE_WEBHOOKS) {
+ if !c.App.SessionHasPermissionToChannel(c.Session, channelId, model.PERMISSION_MANAGE_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
return
}
- hooks, err = app.GetOutgoingWebhooksForChannelPage(channelId, c.Params.Page, c.Params.PerPage)
+ hooks, err = c.App.GetOutgoingWebhooksForChannelPage(channelId, c.Params.Page, c.Params.PerPage)
} else if len(teamId) > 0 {
if !app.SessionHasPermissionToTeam(c.Session, teamId, model.PERMISSION_MANAGE_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
return
}
- hooks, err = app.GetOutgoingWebhooksForTeamPage(teamId, c.Params.Page, c.Params.PerPage)
+ hooks, err = c.App.GetOutgoingWebhooksForTeamPage(teamId, c.Params.Page, c.Params.PerPage)
} else {
if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
return
}
- hooks, err = app.GetOutgoingWebhooksPage(c.Params.Page, c.Params.PerPage)
+ hooks, err = c.App.GetOutgoingWebhooksPage(c.Params.Page, c.Params.PerPage)
}
if err != nil {
@@ -354,7 +354,7 @@ func getOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- hook, err := app.GetOutgoingWebhook(c.Params.HookId)
+ hook, err := c.App.GetOutgoingWebhook(c.Params.HookId)
if err != nil {
c.Err = err
return
@@ -383,7 +383,7 @@ func regenOutgoingHookToken(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- hook, err := app.GetOutgoingWebhook(c.Params.HookId)
+ hook, err := c.App.GetOutgoingWebhook(c.Params.HookId)
if err != nil {
c.Err = err
return
@@ -402,7 +402,7 @@ func regenOutgoingHookToken(c *Context, w http.ResponseWriter, r *http.Request)
return
}
- if rhook, err := app.RegenOutgoingWebhookToken(hook); err != nil {
+ if rhook, err := c.App.RegenOutgoingWebhookToken(hook); err != nil {
c.Err = err
return
} else {
@@ -416,7 +416,7 @@ func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- hook, err := app.GetOutgoingWebhook(c.Params.HookId)
+ hook, err := c.App.GetOutgoingWebhook(c.Params.HookId)
if err != nil {
c.Err = err
return
@@ -435,7 +435,7 @@ func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if err := app.DeleteOutgoingWebhook(hook.Id); err != nil {
+ if err := c.App.DeleteOutgoingWebhook(hook.Id); err != nil {
c.LogAudit("fail")
c.Err = err
return
@@ -478,7 +478,7 @@ func incomingWebhook(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- err := app.HandleIncomingWebhook(id, parsedRequest)
+ err := c.App.HandleIncomingWebhook(id, parsedRequest)
if err != nil {
c.Err = err
return
@@ -494,7 +494,7 @@ func commandWebhook(c *Context, w http.ResponseWriter, r *http.Request) {
response := model.CommandResponseFromHTTPBody(r.Header.Get("Content-Type"), r.Body)
- err := app.HandleCommandWebhook(id, response)
+ err := c.App.HandleCommandWebhook(id, response)
if err != nil {
c.Err = err
return
diff --git a/api4/webhook_test.go b/api4/webhook_test.go
index 8cab85c99..28b98bf42 100644
--- a/api4/webhook_test.go
+++ b/api4/webhook_test.go
@@ -8,7 +8,6 @@ import (
"net/http"
"testing"
- "github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
)
@@ -914,7 +913,7 @@ func TestCommandWebhooks(t *testing.T) {
UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id,
}
- hook, err := app.CreateCommandWebhook(cmd.Id, args)
+ hook, err := th.App.CreateCommandWebhook(cmd.Id, args)
if err != nil {
t.Fatal(err)
}
diff --git a/api4/websocket.go b/api4/websocket.go
index fade548cb..08bb2e709 100644
--- a/api4/websocket.go
+++ b/api4/websocket.go
@@ -35,7 +35,7 @@ func connectWebSocket(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- wc := app.NewWebConn(ws, c.Session, c.T, "")
+ wc := c.App.NewWebConn(ws, c.Session, c.T, "")
if len(c.Session.UserId) > 0 {
app.HubRegister(wc)
diff --git a/app/admin.go b/app/admin.go
index 609e37c96..577121915 100644
--- a/app/admin.go
+++ b/app/admin.go
@@ -11,13 +11,14 @@ import (
"runtime/debug"
+ "net/http"
+
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/einterfaces"
"github.com/mattermost/platform/jobs"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/store"
"github.com/mattermost/platform/utils"
- "net/http"
)
func GetLogs(page, perPage int) ([]string, *model.AppError) {
@@ -95,9 +96,9 @@ func GetClusterStatus() []*model.ClusterInfo {
return infos
}
-func InvalidateAllCaches() *model.AppError {
+func (a *App) InvalidateAllCaches() *model.AppError {
debug.FreeOSMemory()
- InvalidateAllCachesSkipSend()
+ a.InvalidateAllCachesSkipSend()
if einterfaces.GetClusterInterface() != nil {
@@ -113,7 +114,7 @@ func InvalidateAllCaches() *model.AppError {
return nil
}
-func InvalidateAllCachesSkipSend() {
+func (a *App) InvalidateAllCachesSkipSend() {
l4g.Info(utils.T("api.context.invalidate_all_caches"))
sessionCache.Purge()
ClearStatusCache()
@@ -121,7 +122,7 @@ func InvalidateAllCachesSkipSend() {
store.ClearUserCaches()
store.ClearPostCaches()
store.ClearWebhookCaches()
- LoadLicense()
+ a.LoadLicense()
}
func GetConfig() *model.Config {
@@ -183,13 +184,13 @@ func SaveConfig(cfg *model.Config, sendConfigChangeClusterMessage bool) *model.A
return nil
}
-func RecycleDatabaseConnection() {
- oldStore := Srv.Store
+func (a *App) RecycleDatabaseConnection() {
+ oldStore := a.Srv.Store
l4g.Warn(utils.T("api.admin.recycle_db_start.warn"))
- Srv.Store = store.NewLayeredStore()
+ a.Srv.Store = store.NewLayeredStore()
- jobs.Srv.Store = Srv.Store
+ jobs.Srv.Store = a.Srv.Store
time.Sleep(20 * time.Second)
oldStore.Close()
@@ -197,7 +198,7 @@ func RecycleDatabaseConnection() {
l4g.Warn(utils.T("api.admin.recycle_db_end.warn"))
}
-func TestEmail(userId string, cfg *model.Config) *model.AppError {
+func (a *App) TestEmail(userId string, cfg *model.Config) *model.AppError {
if len(cfg.EmailSettings.SMTPServer) == 0 {
return model.NewAppError("testEmail", "api.admin.test_email.missing_server", nil, utils.T("api.context.invalid_param.app_error", map[string]interface{}{"Name": "SMTPServer"}), http.StatusBadRequest)
}
@@ -213,7 +214,7 @@ func TestEmail(userId string, cfg *model.Config) *model.AppError {
return model.NewAppError("testEmail", "api.admin.test_email.reenter_password", nil, "", http.StatusBadRequest)
}
}
- if user, err := GetUser(userId); err != nil {
+ if user, err := a.GetUser(userId); err != nil {
return err
} else {
T := utils.GetUserTranslations(user.Locale)
diff --git a/app/analytics.go b/app/analytics.go
index 35fbddd89..939abb71b 100644
--- a/app/analytics.go
+++ b/app/analytics.go
@@ -16,10 +16,10 @@ const (
MONTH_MILLISECONDS = 31 * DAY_MILLISECONDS
)
-func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppError) {
+func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppError) {
skipIntensiveQueries := false
var systemUserCount int64
- if r := <-Srv.Store.User().AnalyticsUniqueUserCount(""); r.Err != nil {
+ if r := <-a.Srv.Store.User().AnalyticsUniqueUserCount(""); r.Err != nil {
return nil, r.Err
} else {
systemUserCount = r.Data.(int64)
@@ -42,22 +42,22 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
rows[8] = &model.AnalyticsRow{Name: "daily_active_users", Value: 0}
rows[9] = &model.AnalyticsRow{Name: "monthly_active_users", Value: 0}
- openChan := Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_OPEN)
- privateChan := Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_PRIVATE)
- teamChan := Srv.Store.Team().AnalyticsTeamCount()
+ openChan := a.Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_OPEN)
+ privateChan := a.Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_PRIVATE)
+ teamChan := a.Srv.Store.Team().AnalyticsTeamCount()
var userChan store.StoreChannel
if teamId != "" {
- userChan = Srv.Store.User().AnalyticsUniqueUserCount(teamId)
+ userChan = a.Srv.Store.User().AnalyticsUniqueUserCount(teamId)
}
var postChan store.StoreChannel
if !skipIntensiveQueries {
- postChan = Srv.Store.Post().AnalyticsPostCount(teamId, false, false)
+ postChan = a.Srv.Store.Post().AnalyticsPostCount(teamId, false, false)
}
- dailyActiveChan := Srv.Store.User().AnalyticsActiveCount(DAY_MILLISECONDS)
- monthlyActiveChan := Srv.Store.User().AnalyticsActiveCount(MONTH_MILLISECONDS)
+ dailyActiveChan := a.Srv.Store.User().AnalyticsActiveCount(DAY_MILLISECONDS)
+ monthlyActiveChan := a.Srv.Store.User().AnalyticsActiveCount(MONTH_MILLISECONDS)
if r := <-openChan; r.Err != nil {
return nil, r.Err
@@ -105,8 +105,8 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
}
totalSockets := TotalWebsocketConnections()
- totalMasterDb := Srv.Store.TotalMasterDbConnections()
- totalReadDb := Srv.Store.TotalReadDbConnections()
+ totalMasterDb := a.Srv.Store.TotalMasterDbConnections()
+ totalReadDb := a.Srv.Store.TotalReadDbConnections()
for _, stat := range stats {
totalSockets = totalSockets + stat.TotalWebsocketConnections
@@ -120,8 +120,8 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
} else {
rows[5].Value = float64(TotalWebsocketConnections())
- rows[6].Value = float64(Srv.Store.TotalMasterDbConnections())
- rows[7].Value = float64(Srv.Store.TotalReadDbConnections())
+ rows[6].Value = float64(a.Srv.Store.TotalMasterDbConnections())
+ rows[7].Value = float64(a.Srv.Store.TotalReadDbConnections())
}
if r := <-dailyActiveChan; r.Err != nil {
@@ -143,7 +143,7 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
return rows, nil
}
- if r := <-Srv.Store.Post().AnalyticsPostCountsByDay(teamId); r.Err != nil {
+ if r := <-a.Srv.Store.Post().AnalyticsPostCountsByDay(teamId); r.Err != nil {
return nil, r.Err
} else {
return r.Data.(model.AnalyticsRows), nil
@@ -154,7 +154,7 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
return rows, nil
}
- if r := <-Srv.Store.Post().AnalyticsUserCountsWithPostsByDay(teamId); r.Err != nil {
+ if r := <-a.Srv.Store.Post().AnalyticsUserCountsWithPostsByDay(teamId); r.Err != nil {
return nil, r.Err
} else {
return r.Data.(model.AnalyticsRows), nil
@@ -168,16 +168,16 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
rows[4] = &model.AnalyticsRow{Name: "command_count", Value: 0}
rows[5] = &model.AnalyticsRow{Name: "session_count", Value: 0}
- iHookChan := Srv.Store.Webhook().AnalyticsIncomingCount(teamId)
- oHookChan := Srv.Store.Webhook().AnalyticsOutgoingCount(teamId)
- commandChan := Srv.Store.Command().AnalyticsCommandCount(teamId)
- sessionChan := Srv.Store.Session().AnalyticsSessionCount()
+ iHookChan := a.Srv.Store.Webhook().AnalyticsIncomingCount(teamId)
+ oHookChan := a.Srv.Store.Webhook().AnalyticsOutgoingCount(teamId)
+ commandChan := a.Srv.Store.Command().AnalyticsCommandCount(teamId)
+ sessionChan := a.Srv.Store.Session().AnalyticsSessionCount()
var fileChan store.StoreChannel
var hashtagChan store.StoreChannel
if !skipIntensiveQueries {
- fileChan = Srv.Store.Post().AnalyticsPostCount(teamId, true, false)
- hashtagChan = Srv.Store.Post().AnalyticsPostCount(teamId, false, true)
+ fileChan = a.Srv.Store.Post().AnalyticsPostCount(teamId, true, false)
+ hashtagChan = a.Srv.Store.Post().AnalyticsPostCount(teamId, false, true)
}
if fileChan == nil {
@@ -230,8 +230,8 @@ func GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppEr
return nil, nil
}
-func GetRecentlyActiveUsersForTeam(teamId string) (map[string]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetRecentlyActiveUsersForTeam(teamId, 0, 100); result.Err != nil {
+func (a *App) GetRecentlyActiveUsersForTeam(teamId string) (map[string]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetRecentlyActiveUsersForTeam(teamId, 0, 100); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -245,9 +245,9 @@ func GetRecentlyActiveUsersForTeam(teamId string) (map[string]*model.User, *mode
}
}
-func GetRecentlyActiveUsersForTeamPage(teamId string, page, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+func (a *App) GetRecentlyActiveUsersForTeamPage(teamId string, page, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
var users []*model.User
- if result := <-Srv.Store.User().GetRecentlyActiveUsersForTeam(teamId, page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetRecentlyActiveUsersForTeam(teamId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
users = result.Data.([]*model.User)
@@ -256,9 +256,9 @@ func GetRecentlyActiveUsersForTeamPage(teamId string, page, perPage int, asAdmin
return sanitizeProfiles(users, asAdmin), nil
}
-func GetNewUsersForTeamPage(teamId string, page, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+func (a *App) GetNewUsersForTeamPage(teamId string, page, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
var users []*model.User
- if result := <-Srv.Store.User().GetNewUsersForTeam(teamId, page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetNewUsersForTeam(teamId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
users = result.Data.([]*model.User)
diff --git a/app/app.go b/app/app.go
index 2758add0e..ce812ed16 100644
--- a/app/app.go
+++ b/app/app.go
@@ -8,6 +8,16 @@ import (
"net/http"
)
+type App struct {
+ Srv *Server
+}
+
+var globalApp App
+
+func Global() *App {
+ return &globalApp
+}
+
func CloseBody(r *http.Response) {
if r.Body != nil {
ioutil.ReadAll(r.Body)
diff --git a/app/apptestlib.go b/app/apptestlib.go
index 47fd6c727..1f84fa933 100644
--- a/app/apptestlib.go
+++ b/app/apptestlib.go
@@ -20,8 +20,8 @@ type TestHelper struct {
BasicPost *model.Post
}
-func SetupEnterprise() *TestHelper {
- if Srv == nil {
+func (a *App) SetupEnterprise() *TestHelper {
+ if a.Srv == nil {
utils.TranslationsPreInit()
utils.LoadConfig("config.json")
utils.InitTranslations(utils.Cfg.LocalizationSettings)
@@ -29,12 +29,12 @@ func SetupEnterprise() *TestHelper {
*utils.Cfg.RateLimitSettings.Enable = false
utils.DisableDebugLogForTest()
utils.License().Features.SetDefaults()
- NewServer()
- InitStores()
- StartServer()
+ a.NewServer()
+ a.InitStores()
+ a.StartServer()
utils.InitHTML()
utils.EnableDebugLogForTest()
- Srv.Store.MarkSystemRanUnitTests()
+ a.Srv.Store.MarkSystemRanUnitTests()
*utils.Cfg.TeamSettings.EnableOpenServer = true
}
@@ -42,20 +42,20 @@ func SetupEnterprise() *TestHelper {
return &TestHelper{}
}
-func Setup() *TestHelper {
- if Srv == nil {
+func (a *App) Setup() *TestHelper {
+ if a.Srv == nil {
utils.TranslationsPreInit()
utils.LoadConfig("config.json")
utils.InitTranslations(utils.Cfg.LocalizationSettings)
*utils.Cfg.TeamSettings.MaxUsersPerTeam = 50
*utils.Cfg.RateLimitSettings.Enable = false
utils.DisableDebugLogForTest()
- NewServer()
- InitStores()
- StartServer()
+ a.NewServer()
+ a.InitStores()
+ a.StartServer()
utils.InitHTML()
utils.EnableDebugLogForTest()
- Srv.Store.MarkSystemRanUnitTests()
+ a.Srv.Store.MarkSystemRanUnitTests()
*utils.Cfg.TeamSettings.EnableOpenServer = true
}
@@ -66,9 +66,9 @@ func Setup() *TestHelper {
func (me *TestHelper) InitBasic() *TestHelper {
me.BasicTeam = me.CreateTeam()
me.BasicUser = me.CreateUser()
- LinkUserToTeam(me.BasicUser, me.BasicTeam)
+ Global().LinkUserToTeam(me.BasicUser, me.BasicTeam)
me.BasicUser2 = me.CreateUser()
- LinkUserToTeam(me.BasicUser2, me.BasicTeam)
+ Global().LinkUserToTeam(me.BasicUser2, me.BasicTeam)
me.BasicChannel = me.CreateChannel(me.BasicTeam)
me.BasicPost = me.CreatePost(me.BasicChannel)
@@ -94,7 +94,7 @@ func (me *TestHelper) CreateTeam() *model.Team {
utils.DisableDebugLogForTest()
var err *model.AppError
- if team, err = CreateTeam(team); err != nil {
+ if team, err = Global().CreateTeam(team); err != nil {
l4g.Error(err.Error())
l4g.Close()
time.Sleep(time.Second)
@@ -117,7 +117,7 @@ func (me *TestHelper) CreateUser() *model.User {
utils.DisableDebugLogForTest()
var err *model.AppError
- if user, err = CreateUser(user); err != nil {
+ if user, err = Global().CreateUser(user); err != nil {
l4g.Error(err.Error())
l4g.Close()
time.Sleep(time.Second)
@@ -148,7 +148,7 @@ func (me *TestHelper) createChannel(team *model.Team, channelType string) *model
utils.DisableDebugLogForTest()
var err *model.AppError
- if channel, err = CreateChannel(channel, true); err != nil {
+ if channel, err = Global().CreateChannel(channel, true); err != nil {
l4g.Error(err.Error())
l4g.Close()
time.Sleep(time.Second)
@@ -169,7 +169,7 @@ func (me *TestHelper) CreatePost(channel *model.Channel) *model.Post {
utils.DisableDebugLogForTest()
var err *model.AppError
- if post, err = CreatePost(post, channel, false); err != nil {
+ if post, err = Global().CreatePost(post, channel, false); err != nil {
l4g.Error(err.Error())
l4g.Close()
time.Sleep(time.Second)
@@ -179,10 +179,10 @@ func (me *TestHelper) CreatePost(channel *model.Channel) *model.Post {
return post
}
-func LinkUserToTeam(user *model.User, team *model.Team) {
+func (a *App) LinkUserToTeam(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest()
- err := JoinUserToTeam(team, user, "")
+ err := a.JoinUserToTeam(team, user, "")
if err != nil {
l4g.Error(err.Error())
l4g.Close()
@@ -193,8 +193,8 @@ func LinkUserToTeam(user *model.User, team *model.Team) {
utils.EnableDebugLogForTest()
}
-func TearDown() {
- if Srv != nil {
- StopServer()
+func (a *App) TearDown() {
+ if a.Srv != nil {
+ a.StopServer()
}
}
diff --git a/app/audit.go b/app/audit.go
index fdd152719..044aac9cb 100644
--- a/app/audit.go
+++ b/app/audit.go
@@ -7,16 +7,16 @@ import (
"github.com/mattermost/platform/model"
)
-func GetAudits(userId string, limit int) (model.Audits, *model.AppError) {
- if result := <-Srv.Store.Audit().Get(userId, 0, limit); result.Err != nil {
+func (a *App) GetAudits(userId string, limit int) (model.Audits, *model.AppError) {
+ if result := <-a.Srv.Store.Audit().Get(userId, 0, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(model.Audits), nil
}
}
-func GetAuditsPage(userId string, page int, perPage int) (model.Audits, *model.AppError) {
- if result := <-Srv.Store.Audit().Get(userId, page*perPage, perPage); result.Err != nil {
+func (a *App) GetAuditsPage(userId string, page int, perPage int) (model.Audits, *model.AppError) {
+ if result := <-a.Srv.Store.Audit().Get(userId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(model.Audits), nil
diff --git a/app/authentication.go b/app/authentication.go
index 5319e54e0..81aceaabb 100644
--- a/app/authentication.go
+++ b/app/authentication.go
@@ -12,12 +12,12 @@ import (
"github.com/mattermost/platform/utils"
)
-func CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError {
+func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError {
if err := CheckUserAdditionalAuthenticationCriteria(user, mfaToken); err != nil {
return err
}
- if err := checkUserPassword(user, password); err != nil {
+ if err := a.checkUserPassword(user, password); err != nil {
return err
}
@@ -25,27 +25,27 @@ func CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken str
}
// This to be used for places we check the users password when they are already logged in
-func doubleCheckPassword(user *model.User, password string) *model.AppError {
+func (a *App) doubleCheckPassword(user *model.User, password string) *model.AppError {
if err := checkUserLoginAttempts(user); err != nil {
return err
}
- if err := checkUserPassword(user, password); err != nil {
+ if err := a.checkUserPassword(user, password); err != nil {
return err
}
return nil
}
-func checkUserPassword(user *model.User, password string) *model.AppError {
+func (a *App) checkUserPassword(user *model.User, password string) *model.AppError {
if !model.ComparePassword(user.Password, password) {
- if result := <-Srv.Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); result.Err != nil {
+ if result := <-a.Srv.Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); result.Err != nil {
return result.Err
}
return model.NewAppError("checkUserPassword", "api.user.check_user_password.invalid.app_error", nil, "user_id="+user.Id, http.StatusUnauthorized)
} else {
- if result := <-Srv.Store.User().UpdateFailedPasswordAttempts(user.Id, 0); result.Err != nil {
+ if result := <-a.Srv.Store.User().UpdateFailedPasswordAttempts(user.Id, 0); result.Err != nil {
return result.Err
}
@@ -142,7 +142,7 @@ func checkUserNotDisabled(user *model.User) *model.AppError {
return nil
}
-func authenticateUser(user *model.User, password, mfaToken string) (*model.User, *model.AppError) {
+func (a *App) authenticateUser(user *model.User, password, mfaToken string) (*model.User, *model.AppError) {
ldapAvailable := *utils.Cfg.LdapSettings.Enable && einterfaces.GetLdapInterface() != nil && utils.IsLicensed() && *utils.License().Features.LDAP
if user.AuthService == model.USER_AUTH_SERVICE_LDAP {
@@ -164,7 +164,7 @@ func authenticateUser(user *model.User, password, mfaToken string) (*model.User,
err := model.NewAppError("login", "api.user.login.use_auth_service.app_error", map[string]interface{}{"AuthService": authService}, "", http.StatusBadRequest)
return user, err
} else {
- if err := CheckPasswordAndAllCriteria(user, password, mfaToken); err != nil {
+ if err := a.CheckPasswordAndAllCriteria(user, password, mfaToken); err != nil {
err.StatusCode = http.StatusUnauthorized
return user, err
} else {
diff --git a/app/authorization.go b/app/authorization.go
index 28f968f68..90b9331f9 100644
--- a/app/authorization.go
+++ b/app/authorization.go
@@ -29,12 +29,12 @@ func SessionHasPermissionToTeam(session model.Session, teamId string, permission
return SessionHasPermissionTo(session, permission)
}
-func SessionHasPermissionToChannel(session model.Session, channelId string, permission *model.Permission) bool {
+func (a *App) SessionHasPermissionToChannel(session model.Session, channelId string, permission *model.Permission) bool {
if channelId == "" {
return false
}
- cmc := Srv.Store.Channel().GetAllChannelMembersForUser(session.UserId, true)
+ cmc := a.Srv.Store.Channel().GetAllChannelMembersForUser(session.UserId, true)
var channelRoles []string
if cmcresult := <-cmc; cmcresult.Err == nil {
@@ -47,7 +47,7 @@ func SessionHasPermissionToChannel(session model.Session, channelId string, perm
}
}
- channel, err := GetChannel(channelId)
+ channel, err := a.GetChannel(channelId)
if err == nil && channel.TeamId != "" {
return SessionHasPermissionToTeam(session, channel.TeamId, permission)
}
@@ -55,9 +55,9 @@ func SessionHasPermissionToChannel(session model.Session, channelId string, perm
return SessionHasPermissionTo(session, permission)
}
-func SessionHasPermissionToChannelByPost(session model.Session, postId string, permission *model.Permission) bool {
+func (a *App) SessionHasPermissionToChannelByPost(session model.Session, postId string, permission *model.Permission) bool {
var channelMember *model.ChannelMember
- if result := <-Srv.Store.Channel().GetMemberForPost(postId, session.UserId); result.Err == nil {
+ if result := <-a.Srv.Store.Channel().GetMemberForPost(postId, session.UserId); result.Err == nil {
channelMember = result.Data.(*model.ChannelMember)
if CheckIfRolesGrantPermission(channelMember.GetRoles(), permission.Id) {
@@ -65,7 +65,7 @@ func SessionHasPermissionToChannelByPost(session model.Session, postId string, p
}
}
- if result := <-Srv.Store.Channel().GetForPost(postId); result.Err == nil {
+ if result := <-a.Srv.Store.Channel().GetForPost(postId); result.Err == nil {
channel := result.Data.(*model.Channel)
return SessionHasPermissionToTeam(session, channel.TeamId, permission)
}
@@ -89,8 +89,8 @@ func SessionHasPermissionToUser(session model.Session, userId string) bool {
return false
}
-func SessionHasPermissionToPost(session model.Session, postId string, permission *model.Permission) bool {
- post, err := GetSinglePost(postId)
+func (a *App) SessionHasPermissionToPost(session model.Session, postId string, permission *model.Permission) bool {
+ post, err := a.GetSinglePost(postId)
if err != nil {
return false
}
@@ -99,11 +99,11 @@ func SessionHasPermissionToPost(session model.Session, postId string, permission
return true
}
- return SessionHasPermissionToChannel(session, post.ChannelId, permission)
+ return a.SessionHasPermissionToChannel(session, post.ChannelId, permission)
}
-func HasPermissionTo(askingUserId string, permission *model.Permission) bool {
- user, err := GetUser(askingUserId)
+func (a *App) HasPermissionTo(askingUserId string, permission *model.Permission) bool {
+ user, err := a.GetUser(askingUserId)
if err != nil {
return false
}
@@ -113,12 +113,12 @@ func HasPermissionTo(askingUserId string, permission *model.Permission) bool {
return CheckIfRolesGrantPermission(roles, permission.Id)
}
-func HasPermissionToTeam(askingUserId string, teamId string, permission *model.Permission) bool {
+func (a *App) HasPermissionToTeam(askingUserId string, teamId string, permission *model.Permission) bool {
if teamId == "" || askingUserId == "" {
return false
}
- teamMember, err := GetTeamMember(teamId, askingUserId)
+ teamMember, err := a.GetTeamMember(teamId, askingUserId)
if err != nil {
return false
}
@@ -129,15 +129,15 @@ func HasPermissionToTeam(askingUserId string, teamId string, permission *model.P
return true
}
- return HasPermissionTo(askingUserId, permission)
+ return a.HasPermissionTo(askingUserId, permission)
}
-func HasPermissionToChannel(askingUserId string, channelId string, permission *model.Permission) bool {
+func (a *App) HasPermissionToChannel(askingUserId string, channelId string, permission *model.Permission) bool {
if channelId == "" || askingUserId == "" {
return false
}
- channelMember, err := GetChannelMember(channelId, askingUserId)
+ channelMember, err := a.GetChannelMember(channelId, askingUserId)
if err == nil {
roles := channelMember.GetRoles()
if CheckIfRolesGrantPermission(roles, permission.Id) {
@@ -146,17 +146,17 @@ func HasPermissionToChannel(askingUserId string, channelId string, permission *m
}
var channel *model.Channel
- channel, err = GetChannel(channelId)
+ channel, err = a.GetChannel(channelId)
if err == nil {
- return HasPermissionToTeam(askingUserId, channel.TeamId, permission)
+ return a.HasPermissionToTeam(askingUserId, channel.TeamId, permission)
}
- return HasPermissionTo(askingUserId, permission)
+ return a.HasPermissionTo(askingUserId, permission)
}
-func HasPermissionToChannelByPost(askingUserId string, postId string, permission *model.Permission) bool {
+func (a *App) HasPermissionToChannelByPost(askingUserId string, postId string, permission *model.Permission) bool {
var channelMember *model.ChannelMember
- if result := <-Srv.Store.Channel().GetMemberForPost(postId, askingUserId); result.Err == nil {
+ if result := <-a.Srv.Store.Channel().GetMemberForPost(postId, askingUserId); result.Err == nil {
channelMember = result.Data.(*model.ChannelMember)
if CheckIfRolesGrantPermission(channelMember.GetRoles(), permission.Id) {
@@ -164,20 +164,20 @@ func HasPermissionToChannelByPost(askingUserId string, postId string, permission
}
}
- if result := <-Srv.Store.Channel().GetForPost(postId); result.Err == nil {
+ if result := <-a.Srv.Store.Channel().GetForPost(postId); result.Err == nil {
channel := result.Data.(*model.Channel)
- return HasPermissionToTeam(askingUserId, channel.TeamId, permission)
+ return a.HasPermissionToTeam(askingUserId, channel.TeamId, permission)
}
- return HasPermissionTo(askingUserId, permission)
+ return a.HasPermissionTo(askingUserId, permission)
}
-func HasPermissionToUser(askingUserId string, userId string) bool {
+func (a *App) HasPermissionToUser(askingUserId string, userId string) bool {
if askingUserId == userId {
return true
}
- if HasPermissionTo(askingUserId, model.PERMISSION_EDIT_OTHER_USERS) {
+ if a.HasPermissionTo(askingUserId, model.PERMISSION_EDIT_OTHER_USERS) {
return true
}
diff --git a/app/authorization_test.go b/app/authorization_test.go
index 4d2fdd5a0..c090526c4 100644
--- a/app/authorization_test.go
+++ b/app/authorization_test.go
@@ -10,7 +10,8 @@ import (
)
func TestCheckIfRolesGrantPermission(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
cases := []struct {
roles []string
diff --git a/app/auto_environment.go b/app/auto_environment.go
index 8827ddf87..5d6baa728 100644
--- a/app/auto_environment.go
+++ b/app/auto_environment.go
@@ -4,10 +4,11 @@
package app
import (
- "github.com/mattermost/platform/model"
- "github.com/mattermost/platform/utils"
"math/rand"
"time"
+
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
)
type TestEnvironment struct {
diff --git a/app/auto_posts.go b/app/auto_posts.go
index 6a2a15908..8818a94f9 100644
--- a/app/auto_posts.go
+++ b/app/auto_posts.go
@@ -5,10 +5,11 @@ package app
import (
"bytes"
- "github.com/mattermost/platform/model"
- "github.com/mattermost/platform/utils"
"io"
"os"
+
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
)
type AutoPostCreator struct {
diff --git a/app/auto_users.go b/app/auto_users.go
index c96321846..770d12172 100644
--- a/app/auto_users.go
+++ b/app/auto_users.go
@@ -34,7 +34,7 @@ func NewAutoUserCreator(client *model.Client, team *model.Team) *AutoUserCreator
}
// Basic test team and user so you always know one
-func CreateBasicUser(client *model.Client) *model.AppError {
+func (a *App) CreateBasicUser(client *model.Client) *model.AppError {
result, _ := client.FindTeamByName(BTEST_TEAM_NAME)
if result.Data.(bool) == false {
newteam := &model.Team{DisplayName: BTEST_TEAM_DISPLAY_NAME, Name: BTEST_TEAM_NAME, Email: BTEST_TEAM_EMAIL, Type: BTEST_TEAM_TYPE}
@@ -49,8 +49,8 @@ func CreateBasicUser(client *model.Client) *model.AppError {
return err
}
ruser := result.Data.(*model.User)
- store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
- store.Must(Srv.Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id}))
+ store.Must(a.Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(a.Srv.Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id}))
}
return nil
}
@@ -81,14 +81,14 @@ func (cfg *AutoUserCreator) createRandomUser() (*model.User, bool) {
ruser := result.Data.(*model.User)
status := &model.Status{UserId: ruser.Id, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
- if result := <-Srv.Store.Status().SaveOrUpdate(status); result.Err != nil {
+ if result := <-Global().Srv.Store.Status().SaveOrUpdate(status); result.Err != nil {
result.Err.Translate(utils.T)
l4g.Error(result.Err.Error())
return nil, false
}
// We need to cheat to verify the user's email
- store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
+ store.Must(Global().Srv.Store.User().VerifyEmail(ruser.Id))
return result.Data.(*model.User), true
}
diff --git a/app/channel.go b/app/channel.go
index 8da0ca61c..cb46d6a27 100644
--- a/app/channel.go
+++ b/app/channel.go
@@ -15,16 +15,16 @@ import (
"github.com/mattermost/platform/utils"
)
-func CreateDefaultChannels(teamId string) ([]*model.Channel, *model.AppError) {
+func (a *App) CreateDefaultChannels(teamId string) ([]*model.Channel, *model.AppError) {
townSquare := &model.Channel{DisplayName: utils.T("api.channel.create_default_channels.town_square"), Name: "town-square", Type: model.CHANNEL_OPEN, TeamId: teamId}
- if _, err := CreateChannel(townSquare, false); err != nil {
+ if _, err := a.CreateChannel(townSquare, false); err != nil {
return nil, err
}
offTopic := &model.Channel{DisplayName: utils.T("api.channel.create_default_channels.off_topic"), Name: "off-topic", Type: model.CHANNEL_OPEN, TeamId: teamId}
- if _, err := CreateChannel(offTopic, false); err != nil {
+ if _, err := a.CreateChannel(offTopic, false); err != nil {
return nil, err
}
@@ -32,19 +32,19 @@ func CreateDefaultChannels(teamId string) ([]*model.Channel, *model.AppError) {
return channels, nil
}
-func JoinDefaultChannels(teamId string, user *model.User, channelRole string, userRequestorId string) *model.AppError {
+func (a *App) JoinDefaultChannels(teamId string, user *model.User, channelRole string, userRequestorId string) *model.AppError {
var err *model.AppError = nil
var requestor *model.User
if userRequestorId != "" {
- if u := <-Srv.Store.User().Get(userRequestorId); u.Err != nil {
+ if u := <-a.Srv.Store.User().Get(userRequestorId); u.Err != nil {
return u.Err
} else {
requestor = u.Data.(*model.User)
}
}
- if result := <-Srv.Store.Channel().GetByName(teamId, "town-square", true); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().GetByName(teamId, "town-square", true); result.Err != nil {
err = result.Err
} else {
townSquare := result.Data.(*model.Channel)
@@ -52,24 +52,24 @@ func JoinDefaultChannels(teamId string, user *model.User, channelRole string, us
cm := &model.ChannelMember{ChannelId: townSquare.Id, UserId: user.Id,
Roles: channelRole, NotifyProps: model.GetDefaultChannelNotifyProps()}
- if cmResult := <-Srv.Store.Channel().SaveMember(cm); cmResult.Err != nil {
+ if cmResult := <-a.Srv.Store.Channel().SaveMember(cm); cmResult.Err != nil {
err = cmResult.Err
}
if requestor == nil {
- if err := postJoinChannelMessage(user, townSquare); err != nil {
+ if err := a.postJoinChannelMessage(user, townSquare); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
}
} else {
- if err := PostAddToChannelMessage(requestor, user, townSquare); err != nil {
+ if err := a.PostAddToChannelMessage(requestor, user, townSquare); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
}
}
- InvalidateCacheForChannelMembers(result.Data.(*model.Channel).Id)
+ a.InvalidateCacheForChannelMembers(result.Data.(*model.Channel).Id)
}
- if result := <-Srv.Store.Channel().GetByName(teamId, "off-topic", true); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().GetByName(teamId, "off-topic", true); result.Err != nil {
err = result.Err
} else {
offTopic := result.Data.(*model.Channel)
@@ -77,27 +77,27 @@ func JoinDefaultChannels(teamId string, user *model.User, channelRole string, us
cm := &model.ChannelMember{ChannelId: offTopic.Id, UserId: user.Id,
Roles: channelRole, NotifyProps: model.GetDefaultChannelNotifyProps()}
- if cmResult := <-Srv.Store.Channel().SaveMember(cm); cmResult.Err != nil {
+ if cmResult := <-a.Srv.Store.Channel().SaveMember(cm); cmResult.Err != nil {
err = cmResult.Err
}
if requestor == nil {
- if err := postJoinChannelMessage(user, offTopic); err != nil {
+ if err := a.postJoinChannelMessage(user, offTopic); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
}
} else {
- if err := PostAddToChannelMessage(requestor, user, offTopic); err != nil {
+ if err := a.PostAddToChannelMessage(requestor, user, offTopic); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
}
}
- InvalidateCacheForChannelMembers(result.Data.(*model.Channel).Id)
+ a.InvalidateCacheForChannelMembers(result.Data.(*model.Channel).Id)
}
return err
}
-func CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channel, *model.AppError) {
+func (a *App) CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channel, *model.AppError) {
if channel.IsGroupOrDirect() {
return nil, model.NewAppError("CreateChannelWithUser", "api.channel.create_channel.direct_channel.app_error", nil, "", http.StatusBadRequest)
}
@@ -111,7 +111,7 @@ func CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channe
}
// Get total number of channels on current team
- if count, err := GetNumberOfChannelsOnTeam(channel.TeamId); err != nil {
+ if count, err := a.GetNumberOfChannelsOnTeam(channel.TeamId); err != nil {
return nil, err
} else {
if int64(count+1) > *utils.Cfg.TeamSettings.MaxChannelsPerTeam {
@@ -121,17 +121,17 @@ func CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channe
channel.CreatorId = userId
- rchannel, err := CreateChannel(channel, true)
+ rchannel, err := a.CreateChannel(channel, true)
if err != nil {
return nil, err
}
var user *model.User
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return nil, err
}
- postJoinChannelMessage(user, channel)
+ a.postJoinChannelMessage(user, channel)
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_CREATED, "", "", userId, nil)
message.Add("channel_id", channel.Id)
@@ -141,8 +141,8 @@ func CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channe
return rchannel, nil
}
-func CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *model.AppError) {
- if result := <-Srv.Store.Channel().Save(channel); result.Err != nil {
+func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().Save(channel); result.Err != nil {
return nil, result.Err
} else {
sc := result.Data.(*model.Channel)
@@ -155,29 +155,29 @@ func CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *mod
NotifyProps: model.GetDefaultChannelNotifyProps(),
}
- if cmresult := <-Srv.Store.Channel().SaveMember(cm); cmresult.Err != nil {
+ if cmresult := <-a.Srv.Store.Channel().SaveMember(cm); cmresult.Err != nil {
return nil, cmresult.Err
}
- InvalidateCacheForUser(channel.CreatorId)
+ a.InvalidateCacheForUser(channel.CreatorId)
}
return sc, nil
}
}
-func CreateDirectChannel(userId string, otherUserId string) (*model.Channel, *model.AppError) {
- if channel, err := createDirectChannel(userId, otherUserId); err != nil {
+func (a *App) CreateDirectChannel(userId string, otherUserId string) (*model.Channel, *model.AppError) {
+ if channel, err := a.createDirectChannel(userId, otherUserId); err != nil {
if err.Id == store.CHANNEL_EXISTS_ERROR {
return channel, nil
} else {
return nil, err
}
} else {
- WaitForChannelMembership(channel.Id, userId)
+ a.WaitForChannelMembership(channel.Id, userId)
- InvalidateCacheForUser(userId)
- InvalidateCacheForUser(otherUserId)
+ a.InvalidateCacheForUser(userId)
+ a.InvalidateCacheForUser(otherUserId)
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_DIRECT_ADDED, "", channel.Id, "", nil)
message.Add("teammate_id", otherUserId)
@@ -187,9 +187,9 @@ func CreateDirectChannel(userId string, otherUserId string) (*model.Channel, *mo
}
}
-func createDirectChannel(userId string, otherUserId string) (*model.Channel, *model.AppError) {
- uc1 := Srv.Store.User().Get(userId)
- uc2 := Srv.Store.User().Get(otherUserId)
+func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Channel, *model.AppError) {
+ uc1 := a.Srv.Store.User().Get(userId)
+ uc2 := a.Srv.Store.User().Get(otherUserId)
if result := <-uc1; result.Err != nil {
return nil, model.NewAppError("CreateDirectChannel", "api.channel.create_direct_channel.invalid_user.app_error", nil, userId, http.StatusBadRequest)
@@ -199,7 +199,7 @@ func createDirectChannel(userId string, otherUserId string) (*model.Channel, *mo
return nil, model.NewAppError("CreateDirectChannel", "api.channel.create_direct_channel.invalid_user.app_error", nil, otherUserId, http.StatusBadRequest)
}
- if result := <-Srv.Store.Channel().CreateDirectChannel(userId, otherUserId); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().CreateDirectChannel(userId, otherUserId); result.Err != nil {
if result.Err.Id == store.CHANNEL_EXISTS_ERROR {
return result.Data.(*model.Channel), result.Err
} else {
@@ -211,7 +211,7 @@ func createDirectChannel(userId string, otherUserId string) (*model.Channel, *mo
}
}
-func WaitForChannelMembership(channelId string, userId string) {
+func (a *App) WaitForChannelMembership(channelId string, userId string) {
if len(utils.Cfg.SqlSettings.DataSourceReplicas) > 0 {
now := model.GetMillis()
@@ -219,7 +219,7 @@ func WaitForChannelMembership(channelId string, userId string) {
time.Sleep(100 * time.Millisecond)
- result := <-Srv.Store.Channel().GetMember(channelId, userId)
+ result := <-a.Srv.Store.Channel().GetMember(channelId, userId)
// If the membership was found then return
if result.Err == nil {
@@ -236,8 +236,8 @@ func WaitForChannelMembership(channelId string, userId string) {
}
}
-func CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError) {
- if channel, err := createGroupChannel(userIds, creatorId); err != nil {
+func (a *App) CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError) {
+ if channel, err := a.createGroupChannel(userIds, creatorId); err != nil {
if err.Id == store.CHANNEL_EXISTS_ERROR {
return channel, nil
} else {
@@ -246,10 +246,10 @@ func CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *mo
} else {
for _, userId := range userIds {
if userId == creatorId {
- WaitForChannelMembership(channel.Id, creatorId)
+ a.WaitForChannelMembership(channel.Id, creatorId)
}
- InvalidateCacheForUser(userId)
+ a.InvalidateCacheForUser(userId)
}
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_GROUP_ADDED, "", channel.Id, "", nil)
@@ -260,13 +260,13 @@ func CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *mo
}
}
-func createGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError) {
+func (a *App) createGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError) {
if len(userIds) > model.CHANNEL_GROUP_MAX_USERS || len(userIds) < model.CHANNEL_GROUP_MIN_USERS {
return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest)
}
var users []*model.User
- if result := <-Srv.Store.User().GetProfileByIds(userIds, true); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetProfileByIds(userIds, true); result.Err != nil {
return nil, result.Err
} else {
users = result.Data.([]*model.User)
@@ -282,7 +282,7 @@ func createGroupChannel(userIds []string, creatorId string) (*model.Channel, *mo
Type: model.CHANNEL_GROUP,
}
- if result := <-Srv.Store.Channel().Save(group); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().Save(group); result.Err != nil {
if result.Err.Id == store.CHANNEL_EXISTS_ERROR {
return result.Data.(*model.Channel), result.Err
} else {
@@ -299,7 +299,7 @@ func createGroupChannel(userIds []string, creatorId string) (*model.Channel, *mo
Roles: model.ROLE_CHANNEL_USER.Id,
}
- if result := <-Srv.Store.Channel().SaveMember(cm); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().SaveMember(cm); result.Err != nil {
return nil, result.Err
}
}
@@ -308,11 +308,11 @@ func createGroupChannel(userIds []string, creatorId string) (*model.Channel, *mo
}
}
-func UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
- if result := <-Srv.Store.Channel().Update(channel); result.Err != nil {
+func (a *App) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().Update(channel); result.Err != nil {
return nil, result.Err
} else {
- InvalidateCacheForChannel(channel)
+ a.InvalidateCacheForChannel(channel)
messageWs := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_UPDATED, "", channel.Id, "", nil)
messageWs.Add("channel", channel.ToJson())
@@ -322,39 +322,39 @@ func UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
}
}
-func RestoreChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
- if result := <-Srv.Store.Channel().Restore(channel.Id, model.GetMillis()); result.Err != nil {
+func (a *App) RestoreChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().Restore(channel.Id, model.GetMillis()); result.Err != nil {
return nil, result.Err
} else {
return channel, nil
}
}
-func PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userId string) (*model.Channel, *model.AppError) {
+func (a *App) PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userId string) (*model.Channel, *model.AppError) {
oldChannelDisplayName := channel.DisplayName
oldChannelHeader := channel.Header
oldChannelPurpose := channel.Purpose
channel.Patch(patch)
- channel, err := UpdateChannel(channel)
+ channel, err := a.UpdateChannel(channel)
if err != nil {
return nil, err
}
if oldChannelDisplayName != channel.DisplayName {
- if err := PostUpdateChannelDisplayNameMessage(userId, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
+ if err := a.PostUpdateChannelDisplayNameMessage(userId, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
l4g.Error(err.Error())
}
}
if channel.Header != oldChannelHeader {
- if err := PostUpdateChannelHeaderMessage(userId, channel, oldChannelHeader, channel.Header); err != nil {
+ if err := a.PostUpdateChannelHeaderMessage(userId, channel, oldChannelHeader, channel.Header); err != nil {
l4g.Error(err.Error())
}
}
if channel.Purpose != oldChannelPurpose {
- if err := PostUpdateChannelPurposeMessage(userId, channel, oldChannelPurpose, channel.Purpose); err != nil {
+ if err := a.PostUpdateChannelPurposeMessage(userId, channel, oldChannelPurpose, channel.Purpose); err != nil {
l4g.Error(err.Error())
}
}
@@ -362,27 +362,27 @@ func PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userId stri
return channel, err
}
-func UpdateChannelMemberRoles(channelId string, userId string, newRoles string) (*model.ChannelMember, *model.AppError) {
+func (a *App) UpdateChannelMemberRoles(channelId string, userId string, newRoles string) (*model.ChannelMember, *model.AppError) {
var member *model.ChannelMember
var err *model.AppError
- if member, err = GetChannelMember(channelId, userId); err != nil {
+ if member, err = a.GetChannelMember(channelId, userId); err != nil {
return nil, err
}
member.Roles = newRoles
- if result := <-Srv.Store.Channel().UpdateMember(member); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().UpdateMember(member); result.Err != nil {
return nil, result.Err
}
- InvalidateCacheForUser(userId)
+ a.InvalidateCacheForUser(userId)
return member, nil
}
-func UpdateChannelMemberNotifyProps(data map[string]string, channelId string, userId string) (*model.ChannelMember, *model.AppError) {
+func (a *App) UpdateChannelMemberNotifyProps(data map[string]string, channelId string, userId string) (*model.ChannelMember, *model.AppError) {
var member *model.ChannelMember
var err *model.AppError
- if member, err = GetChannelMember(channelId, userId); err != nil {
+ if member, err = a.GetChannelMember(channelId, userId); err != nil {
return nil, err
}
@@ -403,19 +403,19 @@ func UpdateChannelMemberNotifyProps(data map[string]string, channelId string, us
member.NotifyProps[model.PUSH_NOTIFY_PROP] = push
}
- if result := <-Srv.Store.Channel().UpdateMember(member); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().UpdateMember(member); result.Err != nil {
return nil, result.Err
} else {
- InvalidateCacheForUser(userId)
- InvalidateCacheForChannelMembersNotifyProps(channelId)
+ a.InvalidateCacheForUser(userId)
+ a.InvalidateCacheForChannelMembersNotifyProps(channelId)
return member, nil
}
}
-func DeleteChannel(channel *model.Channel, userId string) *model.AppError {
- uc := Srv.Store.User().Get(userId)
- ihc := Srv.Store.Webhook().GetIncomingByChannel(channel.Id)
- ohc := Srv.Store.Webhook().GetOutgoingByChannel(channel.Id, -1, -1)
+func (a *App) DeleteChannel(channel *model.Channel, userId string) *model.AppError {
+ uc := a.Srv.Store.User().Get(userId)
+ ihc := a.Srv.Store.Webhook().GetIncomingByChannel(channel.Id)
+ ohc := a.Srv.Store.Webhook().GetOutgoingByChannel(channel.Id, -1, -1)
if uresult := <-uc; uresult.Err != nil {
return uresult.Err
@@ -450,28 +450,28 @@ func DeleteChannel(channel *model.Channel, userId string) *model.AppError {
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
l4g.Error(utils.T("api.channel.delete_channel.failed_post.error"), err)
}
now := model.GetMillis()
for _, hook := range incomingHooks {
- if result := <-Srv.Store.Webhook().DeleteIncoming(hook.Id, now); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().DeleteIncoming(hook.Id, now); result.Err != nil {
l4g.Error(utils.T("api.channel.delete_channel.incoming_webhook.error"), hook.Id)
}
- InvalidateCacheForWebhook(hook.Id)
+ a.InvalidateCacheForWebhook(hook.Id)
}
for _, hook := range outgoingHooks {
- if result := <-Srv.Store.Webhook().DeleteOutgoing(hook.Id, now); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().DeleteOutgoing(hook.Id, now); result.Err != nil {
l4g.Error(utils.T("api.channel.delete_channel.outgoing_webhook.error"), hook.Id)
}
}
- if dresult := <-Srv.Store.Channel().Delete(channel.Id, model.GetMillis()); dresult.Err != nil {
+ if dresult := <-a.Srv.Store.Channel().Delete(channel.Id, model.GetMillis()); dresult.Err != nil {
return dresult.Err
}
- InvalidateCacheForChannel(channel)
+ a.InvalidateCacheForChannel(channel)
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_DELETED, channel.TeamId, "", "", nil)
message.Add("channel_id", channel.Id)
@@ -482,7 +482,7 @@ func DeleteChannel(channel *model.Channel, userId string) *model.AppError {
return nil
}
-func addUserToChannel(user *model.User, channel *model.Channel, teamMember *model.TeamMember) (*model.ChannelMember, *model.AppError) {
+func (a *App) addUserToChannel(user *model.User, channel *model.Channel, teamMember *model.TeamMember) (*model.ChannelMember, *model.AppError) {
if channel.DeleteAt > 0 {
return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user_to_channel.deleted.app_error", nil, "", http.StatusBadRequest)
}
@@ -491,7 +491,7 @@ func addUserToChannel(user *model.User, channel *model.Channel, teamMember *mode
return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user_to_channel.type.app_error", nil, "", http.StatusBadRequest)
}
- cmchan := Srv.Store.Channel().GetMember(channel.Id, user.Id)
+ cmchan := a.Srv.Store.Channel().GetMember(channel.Id, user.Id)
if result := <-cmchan; result.Err != nil {
if result.Err.Id != store.MISSING_CHANNEL_MEMBER_ERROR {
@@ -508,21 +508,21 @@ func addUserToChannel(user *model.User, channel *model.Channel, teamMember *mode
NotifyProps: model.GetDefaultChannelNotifyProps(),
Roles: model.ROLE_CHANNEL_USER.Id,
}
- if result := <-Srv.Store.Channel().SaveMember(newMember); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().SaveMember(newMember); result.Err != nil {
l4g.Error("Failed to add member user_id=%v channel_id=%v err=%v", user.Id, channel.Id, result.Err)
return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user.to.channel.failed.app_error", nil, "", http.StatusInternalServerError)
}
- WaitForChannelMembership(channel.Id, user.Id)
+ a.WaitForChannelMembership(channel.Id, user.Id)
- InvalidateCacheForUser(user.Id)
- InvalidateCacheForChannelMembers(channel.Id)
+ a.InvalidateCacheForUser(user.Id)
+ a.InvalidateCacheForChannelMembers(channel.Id)
return newMember, nil
}
-func AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError) {
- tmchan := Srv.Store.Team().GetMember(channel.TeamId, user.Id)
+func (a *App) AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError) {
+ tmchan := a.Srv.Store.Team().GetMember(channel.TeamId, user.Id)
var teamMember *model.TeamMember
if result := <-tmchan; result.Err != nil {
@@ -534,7 +534,7 @@ func AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelM
}
}
- newMember, err := addUserToChannel(user, channel, teamMember)
+ newMember, err := a.addUserToChannel(user, channel, teamMember)
if err != nil {
return nil, err
}
@@ -547,8 +547,8 @@ func AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelM
return newMember, nil
}
-func AddChannelMember(userId string, channel *model.Channel, userRequestorId string) (*model.ChannelMember, *model.AppError) {
- if result := <-Srv.Store.Channel().GetMember(channel.Id, userId); result.Err != nil {
+func (a *App) AddChannelMember(userId string, channel *model.Channel, userRequestorId string) (*model.ChannelMember, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetMember(channel.Id, userId); result.Err != nil {
if result.Err.Id != store.MISSING_CHANNEL_MEMBER_ERROR {
return nil, result.Err
}
@@ -559,34 +559,34 @@ func AddChannelMember(userId string, channel *model.Channel, userRequestorId str
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return nil, err
}
var userRequestor *model.User
- if userRequestor, err = GetUser(userRequestorId); err != nil {
+ if userRequestor, err = a.GetUser(userRequestorId); err != nil {
return nil, err
}
- cm, err := AddUserToChannel(user, channel)
+ cm, err := a.AddUserToChannel(user, channel)
if err != nil {
return nil, err
}
if userId == userRequestorId {
- postJoinChannelMessage(user, channel)
+ a.postJoinChannelMessage(user, channel)
} else {
- go PostAddToChannelMessage(userRequestor, user, channel)
+ go a.PostAddToChannelMessage(userRequestor, user, channel)
}
- UpdateChannelLastViewedAt([]string{channel.Id}, userRequestor.Id)
+ a.UpdateChannelLastViewedAt([]string{channel.Id}, userRequestor.Id)
return cm, nil
}
-func AddDirectChannels(teamId string, user *model.User) *model.AppError {
+func (a *App) AddDirectChannels(teamId string, user *model.User) *model.AppError {
var profiles []*model.User
- if result := <-Srv.Store.User().GetProfiles(teamId, 0, 100); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetProfiles(teamId, 0, 100); result.Err != nil {
return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": result.Err.Error()}, "", http.StatusInternalServerError)
} else {
profiles = result.Data.([]*model.User)
@@ -613,15 +613,15 @@ func AddDirectChannels(teamId string, user *model.User) *model.AppError {
}
}
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": result.Err.Error()}, "", http.StatusInternalServerError)
}
return nil
}
-func PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError {
- uc := Srv.Store.User().Get(userId)
+func (a *App) PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError {
+ uc := a.Srv.Store.User().Get(userId)
if uresult := <-uc; uresult.Err != nil {
return model.NewAppError("PostUpdateChannelHeaderMessage", "api.channel.post_update_channel_header_message_and_forget.retrieve_user.error", nil, uresult.Err.Error(), http.StatusBadRequest)
@@ -649,7 +649,7 @@ func PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldCh
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("", "api.channel.post_update_channel_header_message_and_forget.post.error", nil, err.Error(), http.StatusInternalServerError)
}
}
@@ -657,8 +657,8 @@ func PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldCh
return nil
}
-func PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError {
- uc := Srv.Store.User().Get(userId)
+func (a *App) PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError {
+ uc := a.Srv.Store.User().Get(userId)
if uresult := <-uc; uresult.Err != nil {
return model.NewAppError("PostUpdateChannelPurposeMessage", "app.channel.post_update_channel_purpose_message.retrieve_user.error", nil, uresult.Err.Error(), http.StatusBadRequest)
@@ -685,7 +685,7 @@ func PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldC
"new_purpose": newChannelPurpose,
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("", "app.channel.post_update_channel_purpose_message.post.error", nil, err.Error(), http.StatusInternalServerError)
}
}
@@ -693,8 +693,8 @@ func PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldC
return nil
}
-func PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError {
- uc := Srv.Store.User().Get(userId)
+func (a *App) PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError {
+ uc := a.Srv.Store.User().Get(userId)
if uresult := <-uc; uresult.Err != nil {
return model.NewAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.retrieve_user.error", nil, uresult.Err.Error(), http.StatusBadRequest)
@@ -715,7 +715,7 @@ func PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel,
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.create_post.error", nil, err.Error(), http.StatusInternalServerError)
}
}
@@ -723,8 +723,8 @@ func PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel,
return nil
}
-func GetChannel(channelId string) (*model.Channel, *model.AppError) {
- if result := <-Srv.Store.Channel().Get(channelId, true); result.Err != nil && result.Err.Id == "store.sql_channel.get.existing.app_error" {
+func (a *App) GetChannel(channelId string) (*model.Channel, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().Get(channelId, true); result.Err != nil && result.Err.Id == "store.sql_channel.get.existing.app_error" {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else if result.Err != nil {
@@ -735,8 +735,8 @@ func GetChannel(channelId string) (*model.Channel, *model.AppError) {
}
}
-func GetChannelByName(channelName, teamId string) (*model.Channel, *model.AppError) {
- if result := <-Srv.Store.Channel().GetByName(teamId, channelName, true); result.Err != nil && result.Err.Id == "store.sql_channel.get_by_name.missing.app_error" {
+func (a *App) GetChannelByName(channelName, teamId string) (*model.Channel, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetByName(teamId, channelName, true); result.Err != nil && result.Err.Id == "store.sql_channel.get_by_name.missing.app_error" {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else if result.Err != nil {
@@ -747,17 +747,17 @@ func GetChannelByName(channelName, teamId string) (*model.Channel, *model.AppErr
}
}
-func GetChannelByNameForTeamName(channelName, teamName string) (*model.Channel, *model.AppError) {
+func (a *App) GetChannelByNameForTeamName(channelName, teamName string) (*model.Channel, *model.AppError) {
var team *model.Team
- if result := <-Srv.Store.Team().GetByName(teamName); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetByName(teamName); result.Err != nil {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else {
team = result.Data.(*model.Team)
}
- if result := <-Srv.Store.Channel().GetByName(team.Id, channelName, true); result.Err != nil && result.Err.Id == "store.sql_channel.get_by_name.missing.app_error" {
+ if result := <-a.Srv.Store.Channel().GetByName(team.Id, channelName, true); result.Err != nil && result.Err.Id == "store.sql_channel.get_by_name.missing.app_error" {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else if result.Err != nil {
@@ -768,96 +768,96 @@ func GetChannelByNameForTeamName(channelName, teamName string) (*model.Channel,
}
}
-func GetChannelsForUser(teamId string, userId string) (*model.ChannelList, *model.AppError) {
- if result := <-Srv.Store.Channel().GetChannels(teamId, userId); result.Err != nil {
+func (a *App) GetChannelsForUser(teamId string, userId string) (*model.ChannelList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetChannels(teamId, userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelList), nil
}
}
-func GetDeletedChannels(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
- if result := <-Srv.Store.Channel().GetDeleted(teamId, offset, limit); result.Err != nil {
+func (a *App) GetDeletedChannels(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetDeleted(teamId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelList), nil
}
}
-func GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
- if result := <-Srv.Store.Channel().GetMoreChannels(teamId, userId, offset, limit); result.Err != nil {
+func (a *App) GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetMoreChannels(teamId, userId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelList), nil
}
}
-func GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) (*model.ChannelList, *model.AppError) {
- if result := <-Srv.Store.Channel().GetPublicChannelsByIdsForTeam(teamId, channelIds); result.Err != nil {
+func (a *App) GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) (*model.ChannelList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetPublicChannelsByIdsForTeam(teamId, channelIds); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelList), nil
}
}
-func GetPublicChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
- if result := <-Srv.Store.Channel().GetPublicChannelsForTeam(teamId, offset, limit); result.Err != nil {
+func (a *App) GetPublicChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetPublicChannelsForTeam(teamId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelList), nil
}
}
-func GetChannelMember(channelId string, userId string) (*model.ChannelMember, *model.AppError) {
- if result := <-Srv.Store.Channel().GetMember(channelId, userId); result.Err != nil {
+func (a *App) GetChannelMember(channelId string, userId string) (*model.ChannelMember, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetMember(channelId, userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelMember), nil
}
}
-func GetChannelMembersPage(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError) {
- if result := <-Srv.Store.Channel().GetMembers(channelId, page*perPage, perPage); result.Err != nil {
+func (a *App) GetChannelMembersPage(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetMembers(channelId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelMembers), nil
}
}
-func GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError) {
- if result := <-Srv.Store.Channel().GetMembersByIds(channelId, userIds); result.Err != nil {
+func (a *App) GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetMembersByIds(channelId, userIds); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelMembers), nil
}
}
-func GetChannelMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) {
- if result := <-Srv.Store.Channel().GetMembersForUser(teamId, userId); result.Err != nil {
+func (a *App) GetChannelMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetMembersForUser(teamId, userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelMembers), nil
}
}
-func GetChannelMemberCount(channelId string) (int64, *model.AppError) {
- if result := <-Srv.Store.Channel().GetMemberCount(channelId, true); result.Err != nil {
+func (a *App) GetChannelMemberCount(channelId string) (int64, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetMemberCount(channelId, true); result.Err != nil {
return 0, result.Err
} else {
return result.Data.(int64), nil
}
}
-func GetChannelCounts(teamId string, userId string) (*model.ChannelCounts, *model.AppError) {
- if result := <-Srv.Store.Channel().GetChannelCounts(teamId, userId); result.Err != nil {
+func (a *App) GetChannelCounts(teamId string, userId string) (*model.ChannelCounts, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetChannelCounts(teamId, userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelCounts), nil
}
}
-func GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.AppError) {
- result := <-Srv.Store.Channel().GetChannelUnread(channelId, userId)
+func (a *App) GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.AppError) {
+ result := <-a.Srv.Store.Channel().GetChannelUnread(channelId, userId)
if result.Err != nil {
return nil, result.Err
}
@@ -870,13 +870,13 @@ func GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.Ap
return channelUnread, nil
}
-func JoinChannel(channel *model.Channel, userId string) *model.AppError {
+func (a *App) JoinChannel(channel *model.Channel, userId string) *model.AppError {
if channel.DeleteAt > 0 {
return model.NewAppError("JoinChannel", "api.channel.join_channel.already_deleted.app_error", nil, "", http.StatusBadRequest)
}
- userChan := Srv.Store.User().Get(userId)
- memberChan := Srv.Store.Channel().GetMember(channel.Id, userId)
+ userChan := a.Srv.Store.User().Get(userId)
+ memberChan := a.Srv.Store.Channel().GetMember(channel.Id, userId)
if uresult := <-userChan; uresult.Err != nil {
return uresult.Err
@@ -887,11 +887,11 @@ func JoinChannel(channel *model.Channel, userId string) *model.AppError {
user := uresult.Data.(*model.User)
if channel.Type == model.CHANNEL_OPEN {
- if _, err := AddUserToChannel(user, channel); err != nil {
+ if _, err := a.AddUserToChannel(user, channel); err != nil {
return err
}
- if err := postJoinChannelMessage(user, channel); err != nil {
+ if err := a.postJoinChannelMessage(user, channel); err != nil {
return err
}
} else {
@@ -902,7 +902,7 @@ func JoinChannel(channel *model.Channel, userId string) *model.AppError {
return nil
}
-func postJoinChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
+func (a *App) postJoinChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{
ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.join_channel.post_and_forget"), user.Username),
@@ -913,17 +913,17 @@ func postJoinChannelMessage(user *model.User, channel *model.Channel) *model.App
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("postJoinChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}
-func LeaveChannel(channelId string, userId string) *model.AppError {
- sc := Srv.Store.Channel().Get(channelId, true)
- uc := Srv.Store.User().Get(userId)
- ccm := Srv.Store.Channel().GetMemberCount(channelId, false)
+func (a *App) LeaveChannel(channelId string, userId string) *model.AppError {
+ sc := a.Srv.Store.Channel().Get(channelId, true)
+ uc := a.Srv.Store.User().Get(userId)
+ ccm := a.Srv.Store.Channel().GetMemberCount(channelId, false)
if cresult := <-sc; cresult.Err != nil {
return cresult.Err
@@ -946,17 +946,17 @@ func LeaveChannel(channelId string, userId string) *model.AppError {
return err
}
- if err := removeUserFromChannel(userId, userId, channel); err != nil {
+ if err := a.removeUserFromChannel(userId, userId, channel); err != nil {
return err
}
- go postLeaveChannelMessage(user, channel)
+ go a.postLeaveChannelMessage(user, channel)
}
return nil
}
-func postLeaveChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
+func (a *App) postLeaveChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{
ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.leave.left"), user.Username),
@@ -967,14 +967,14 @@ func postLeaveChannelMessage(user *model.User, channel *model.Channel) *model.Ap
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("postLeaveChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}
-func PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel) *model.AppError {
+func (a *App) PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{
ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.add_member.added"), addedUser.Username, user.Username),
@@ -986,14 +986,14 @@ func PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *m
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("postAddToChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}
-func PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User, channel *model.Channel) *model.AppError {
+func (a *App) PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{
ChannelId: channel.Id,
Message: fmt.Sprintf(utils.T("api.channel.remove_member.removed"), removedUser.Username),
@@ -1004,14 +1004,14 @@ func PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User,
},
}
- if _, err := CreatePost(post, channel, false); err != nil {
+ if _, err := a.CreatePost(post, channel, false); err != nil {
return model.NewAppError("postRemoveFromChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}
-func removeUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
+func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
if channel.DeleteAt > 0 {
err := model.NewAppError("RemoveUserFromChannel", "api.channel.remove_user_from_channel.deleted.app_error", nil, "", http.StatusBadRequest)
return err
@@ -1021,12 +1021,12 @@ func removeUserFromChannel(userIdToRemove string, removerUserId string, channel
return model.NewAppError("RemoveUserFromChannel", "api.channel.remove.default.app_error", map[string]interface{}{"Channel": model.DEFAULT_CHANNEL}, "", http.StatusBadRequest)
}
- if cmresult := <-Srv.Store.Channel().RemoveMember(channel.Id, userIdToRemove); cmresult.Err != nil {
+ if cmresult := <-a.Srv.Store.Channel().RemoveMember(channel.Id, userIdToRemove); cmresult.Err != nil {
return cmresult.Err
}
- InvalidateCacheForUser(userIdToRemove)
- InvalidateCacheForChannelMembers(channel.Id)
+ a.InvalidateCacheForUser(userIdToRemove)
+ a.InvalidateCacheForChannelMembers(channel.Id)
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_REMOVED, "", channel.Id, "", nil)
message.Add("user_id", userIdToRemove)
@@ -1042,37 +1042,37 @@ func removeUserFromChannel(userIdToRemove string, removerUserId string, channel
return nil
}
-func RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
+func (a *App) RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
var err *model.AppError
- if err = removeUserFromChannel(userIdToRemove, removerUserId, channel); err != nil {
+ if err = a.removeUserFromChannel(userIdToRemove, removerUserId, channel); err != nil {
return err
}
var user *model.User
- if user, err = GetUser(userIdToRemove); err != nil {
+ if user, err = a.GetUser(userIdToRemove); err != nil {
return err
}
if userIdToRemove == removerUserId {
- postLeaveChannelMessage(user, channel)
+ a.postLeaveChannelMessage(user, channel)
} else {
- go PostRemoveFromChannelMessage(removerUserId, user, channel)
+ go a.PostRemoveFromChannelMessage(removerUserId, user, channel)
}
return nil
}
-func GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) {
+func (a *App) GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) {
// Get total number of channels on current team
- if result := <-Srv.Store.Channel().GetTeamChannels(teamId); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().GetTeamChannels(teamId); result.Err != nil {
return 0, result.Err
} else {
return len(*result.Data.(*model.ChannelList)), nil
}
}
-func SetActiveChannel(userId string, channelId string) *model.AppError {
- status, err := GetStatus(userId)
+func (a *App) SetActiveChannel(userId string, channelId string) *model.AppError {
+ status, err := a.GetStatus(userId)
oldStatus := model.STATUS_OFFLINE
@@ -1096,8 +1096,8 @@ func SetActiveChannel(userId string, channelId string) *model.AppError {
return nil
}
-func UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppError {
- if result := <-Srv.Store.Channel().UpdateLastViewedAt(channelIds, userId); result.Err != nil {
+func (a *App) UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppError {
+ if result := <-a.Srv.Store.Channel().UpdateLastViewedAt(channelIds, userId); result.Err != nil {
return result.Err
}
@@ -1112,24 +1112,24 @@ func UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppErr
return nil
}
-func SearchChannels(teamId string, term string) (*model.ChannelList, *model.AppError) {
- if result := <-Srv.Store.Channel().SearchInTeam(teamId, term); result.Err != nil {
+func (a *App) SearchChannels(teamId string, term string) (*model.ChannelList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().SearchInTeam(teamId, term); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelList), nil
}
}
-func SearchChannelsUserNotIn(teamId string, userId string, term string) (*model.ChannelList, *model.AppError) {
- if result := <-Srv.Store.Channel().SearchMore(userId, teamId, term); result.Err != nil {
+func (a *App) SearchChannelsUserNotIn(teamId string, userId string, term string) (*model.ChannelList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().SearchMore(userId, teamId, term); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.ChannelList), nil
}
}
-func ViewChannel(view *model.ChannelView, userId string, clearPushNotifications bool) *model.AppError {
- if err := SetActiveChannel(userId, view.ChannelId); err != nil {
+func (a *App) ViewChannel(view *model.ChannelView, userId string, clearPushNotifications bool) *model.AppError {
+ if err := a.SetActiveChannel(userId, view.ChannelId); err != nil {
return err
}
@@ -1144,7 +1144,7 @@ func ViewChannel(view *model.ChannelView, userId string, clearPushNotifications
channelIds = append(channelIds, view.PrevChannelId)
if *utils.Cfg.EmailSettings.SendPushNotifications && clearPushNotifications && len(view.ChannelId) > 0 {
- pchan = Srv.Store.User().GetUnreadCountForChannel(userId, view.ChannelId)
+ pchan = a.Srv.Store.User().GetUnreadCountForChannel(userId, view.ChannelId)
}
}
@@ -1152,14 +1152,14 @@ func ViewChannel(view *model.ChannelView, userId string, clearPushNotifications
return nil
}
- uchan := Srv.Store.Channel().UpdateLastViewedAt(channelIds, userId)
+ uchan := a.Srv.Store.Channel().UpdateLastViewedAt(channelIds, userId)
if pchan != nil {
if result := <-pchan; result.Err != nil {
return result.Err
} else {
if result.Data.(int64) > 0 {
- ClearPushNotification(userId, view.ChannelId)
+ a.ClearPushNotification(userId, view.ChannelId)
}
}
}
@@ -1177,24 +1177,24 @@ func ViewChannel(view *model.ChannelView, userId string, clearPushNotifications
return nil
}
-func PermanentDeleteChannel(channel *model.Channel) *model.AppError {
- if result := <-Srv.Store.Post().PermanentDeleteByChannel(channel.Id); result.Err != nil {
+func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError {
+ if result := <-a.Srv.Store.Post().PermanentDeleteByChannel(channel.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Channel().PermanentDeleteMembersByChannel(channel.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().PermanentDeleteMembersByChannel(channel.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Webhook().PermanentDeleteIncomingByChannel(channel.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().PermanentDeleteIncomingByChannel(channel.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Webhook().PermanentDeleteOutgoingByChannel(channel.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().PermanentDeleteOutgoingByChannel(channel.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Channel().PermanentDelete(channel.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().PermanentDelete(channel.Id); result.Err != nil {
return result.Err
}
@@ -1203,9 +1203,9 @@ func PermanentDeleteChannel(channel *model.Channel) *model.AppError {
// This function is intended for use from the CLI. It is not robust against people joining the channel while the move
// is in progress, and therefore should not be used from the API without first fixing this potential race condition.
-func MoveChannel(team *model.Team, channel *model.Channel) *model.AppError {
+func (a *App) MoveChannel(team *model.Team, channel *model.Channel) *model.AppError {
// Check that all channel members are in the destination team.
- if channelMembers, err := GetChannelMembersPage(channel.Id, 0, 10000000); err != nil {
+ if channelMembers, err := a.GetChannelMembersPage(channel.Id, 0, 10000000); err != nil {
return err
} else {
channelMemberIds := []string{}
@@ -1213,7 +1213,7 @@ func MoveChannel(team *model.Team, channel *model.Channel) *model.AppError {
channelMemberIds = append(channelMemberIds, channelMember.UserId)
}
- if teamMembers, err2 := GetTeamMembersByIds(team.Id, channelMemberIds); err != nil {
+ if teamMembers, err2 := a.GetTeamMembersByIds(team.Id, channelMemberIds); err != nil {
return err2
} else {
if len(teamMembers) != len(*channelMembers) {
@@ -1224,30 +1224,30 @@ func MoveChannel(team *model.Team, channel *model.Channel) *model.AppError {
// Change the Team ID of the channel.
channel.TeamId = team.Id
- if result := <-Srv.Store.Channel().Update(channel); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().Update(channel); result.Err != nil {
return result.Err
}
return nil
}
-func GetPinnedPosts(channelId string) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Channel().GetPinnedPosts(channelId); result.Err != nil {
+func (a *App) GetPinnedPosts(channelId string) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Channel().GetPinnedPosts(channelId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetDirectChannel(userId1, userId2 string) (*model.Channel, *model.AppError) {
- result := <-Srv.Store.Channel().GetByName("", model.GetDMNameFromIds(userId1, userId2), true)
+func (a *App) GetDirectChannel(userId1, userId2 string) (*model.Channel, *model.AppError) {
+ result := <-a.Srv.Store.Channel().GetByName("", model.GetDMNameFromIds(userId1, userId2), true)
if result.Err != nil && result.Err.Id == store.MISSING_CHANNEL_ERROR {
- result := <-Srv.Store.Channel().CreateDirectChannel(userId1, userId2)
+ result := <-a.Srv.Store.Channel().CreateDirectChannel(userId1, userId2)
if result.Err != nil {
return nil, model.NewAppError("GetOrCreateDMChannel", "web.incoming_webhook.channel.app_error", nil, "err="+result.Err.Message, http.StatusBadRequest)
}
- InvalidateCacheForUser(userId1)
- InvalidateCacheForUser(userId2)
+ a.InvalidateCacheForUser(userId1)
+ a.InvalidateCacheForUser(userId2)
return result.Data.(*model.Channel), nil
} else if result.Err != nil {
return nil, model.NewAppError("GetOrCreateDMChannel", "web.incoming_webhook.channel.app_error", nil, "err="+result.Err.Message, result.Err.StatusCode)
diff --git a/app/channel_test.go b/app/channel_test.go
index b43207b00..7eabafeb8 100644
--- a/app/channel_test.go
+++ b/app/channel_test.go
@@ -8,7 +8,8 @@ import (
)
func TestPermanentDeleteChannel(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
incomingWasEnabled := utils.Cfg.ServiceSettings.EnableIncomingWebhooks
outgoingWasEnabled := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks
@@ -19,25 +20,25 @@ func TestPermanentDeleteChannel(t *testing.T) {
utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = outgoingWasEnabled
}()
- channel, err := CreateChannel(&model.Channel{DisplayName: "deletion-test", Name: "deletion-test", Type: model.CHANNEL_OPEN, TeamId: th.BasicTeam.Id}, false)
+ channel, err := a.CreateChannel(&model.Channel{DisplayName: "deletion-test", Name: "deletion-test", Type: model.CHANNEL_OPEN, TeamId: th.BasicTeam.Id}, false)
if err != nil {
t.Fatal(err.Error())
}
defer func() {
- PermanentDeleteChannel(channel)
+ a.PermanentDeleteChannel(channel)
}()
- incoming, err := CreateIncomingWebhookForChannel(th.BasicUser.Id, channel, &model.IncomingWebhook{ChannelId: channel.Id})
+ incoming, err := a.CreateIncomingWebhookForChannel(th.BasicUser.Id, channel, &model.IncomingWebhook{ChannelId: channel.Id})
if err != nil {
t.Fatal(err.Error())
}
- defer DeleteIncomingWebhook(incoming.Id)
+ defer a.DeleteIncomingWebhook(incoming.Id)
- if incoming, err = GetIncomingWebhook(incoming.Id); incoming == nil || err != nil {
+ if incoming, err = a.GetIncomingWebhook(incoming.Id); incoming == nil || err != nil {
t.Fatal("unable to get new incoming webhook")
}
- outgoing, err := CreateOutgoingWebhook(&model.OutgoingWebhook{
+ outgoing, err := a.CreateOutgoingWebhook(&model.OutgoingWebhook{
ChannelId: channel.Id,
TeamId: channel.TeamId,
CreatorId: th.BasicUser.Id,
@@ -46,64 +47,65 @@ func TestPermanentDeleteChannel(t *testing.T) {
if err != nil {
t.Fatal(err.Error())
}
- defer DeleteOutgoingWebhook(outgoing.Id)
+ defer a.DeleteOutgoingWebhook(outgoing.Id)
- if outgoing, err = GetOutgoingWebhook(outgoing.Id); outgoing == nil || err != nil {
+ if outgoing, err = a.GetOutgoingWebhook(outgoing.Id); outgoing == nil || err != nil {
t.Fatal("unable to get new outgoing webhook")
}
- if err := PermanentDeleteChannel(channel); err != nil {
+ if err := a.PermanentDeleteChannel(channel); err != nil {
t.Fatal(err.Error())
}
- if incoming, err = GetIncomingWebhook(incoming.Id); incoming != nil || err == nil {
+ if incoming, err = a.GetIncomingWebhook(incoming.Id); incoming != nil || err == nil {
t.Error("incoming webhook wasn't deleted")
}
- if outgoing, err = GetOutgoingWebhook(outgoing.Id); outgoing != nil || err == nil {
+ if outgoing, err = a.GetOutgoingWebhook(outgoing.Id); outgoing != nil || err == nil {
t.Error("outgoing webhook wasn't deleted")
}
}
func TestMoveChannel(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
sourceTeam := th.CreateTeam()
targetTeam := th.CreateTeam()
channel1 := th.CreateChannel(sourceTeam)
defer func() {
- PermanentDeleteChannel(channel1)
- PermanentDeleteTeam(sourceTeam)
- PermanentDeleteTeam(targetTeam)
+ a.PermanentDeleteChannel(channel1)
+ a.PermanentDeleteTeam(sourceTeam)
+ a.PermanentDeleteTeam(targetTeam)
}()
- if _, err := AddUserToTeam(sourceTeam.Id, th.BasicUser.Id, ""); err != nil {
+ if _, err := a.AddUserToTeam(sourceTeam.Id, th.BasicUser.Id, ""); err != nil {
t.Fatal(err)
}
- if _, err := AddUserToTeam(sourceTeam.Id, th.BasicUser2.Id, ""); err != nil {
+ if _, err := a.AddUserToTeam(sourceTeam.Id, th.BasicUser2.Id, ""); err != nil {
t.Fatal(err)
}
- if _, err := AddUserToTeam(targetTeam.Id, th.BasicUser.Id, ""); err != nil {
+ if _, err := a.AddUserToTeam(targetTeam.Id, th.BasicUser.Id, ""); err != nil {
t.Fatal(err)
}
- if _, err := AddUserToChannel(th.BasicUser, channel1); err != nil {
+ if _, err := a.AddUserToChannel(th.BasicUser, channel1); err != nil {
t.Fatal(err)
}
- if _, err := AddUserToChannel(th.BasicUser2, channel1); err != nil {
+ if _, err := a.AddUserToChannel(th.BasicUser2, channel1); err != nil {
t.Fatal(err)
}
- if err := MoveChannel(targetTeam, channel1); err == nil {
+ if err := a.MoveChannel(targetTeam, channel1); err == nil {
t.Fatal("Should have failed due to mismatched members.")
}
- if _, err := AddUserToTeam(targetTeam.Id, th.BasicUser2.Id, ""); err != nil {
+ if _, err := a.AddUserToTeam(targetTeam.Id, th.BasicUser2.Id, ""); err != nil {
t.Fatal(err)
}
- if err := MoveChannel(targetTeam, channel1); err != nil {
+ if err := a.MoveChannel(targetTeam, channel1); err != nil {
t.Fatal(err)
}
}
diff --git a/app/cluster_discovery.go b/app/cluster_discovery.go
index 6584418f1..2d79aa7cc 100644
--- a/app/cluster_discovery.go
+++ b/app/cluster_discovery.go
@@ -31,19 +31,19 @@ func NewClusterDiscoveryService() *ClusterDiscoveryService {
func (me *ClusterDiscoveryService) Start() {
- <-Srv.Store.ClusterDiscovery().Cleanup()
+ <-Global().Srv.Store.ClusterDiscovery().Cleanup()
- if cresult := <-Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery); cresult.Err != nil {
+ if cresult := <-Global().Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery); cresult.Err != nil {
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to check if row exists for %v with err=%v", me.ClusterDiscovery.ToJson(), cresult.Err))
} else {
if cresult.Data.(bool) {
- if u := <-Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
+ if u := <-Global().Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to start clean for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
}
}
}
- if result := <-Srv.Store.ClusterDiscovery().Save(&me.ClusterDiscovery); result.Err != nil {
+ if result := <-Global().Srv.Store.ClusterDiscovery().Save(&me.ClusterDiscovery); result.Err != nil {
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to save for %v with err=%v", me.ClusterDiscovery.ToJson(), result.Err))
return
}
@@ -53,7 +53,7 @@ func (me *ClusterDiscoveryService) Start() {
ticker := time.NewTicker(DISCOVERY_SERVICE_WRITE_PING)
defer func() {
ticker.Stop()
- if u := <-Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
+ if u := <-Global().Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to cleanup for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
}
l4g.Debug(fmt.Sprintf("ClusterDiscoveryService ping writer stopped for %v", me.ClusterDiscovery.ToJson()))
@@ -62,7 +62,7 @@ func (me *ClusterDiscoveryService) Start() {
for {
select {
case <-ticker.C:
- if u := <-Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); u.Err != nil {
+ if u := <-Global().Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); u.Err != nil {
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to write ping for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
}
case <-me.stop:
diff --git a/app/cluster_discovery_test.go b/app/cluster_discovery_test.go
index ca5b1bfa4..3a5c7a3b1 100644
--- a/app/cluster_discovery_test.go
+++ b/app/cluster_discovery_test.go
@@ -12,7 +12,8 @@ import (
)
func TestClusterDiscoveryService(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
ds := NewClusterDiscoveryService()
ds.Type = model.CDS_TYPE_APP
diff --git a/app/cluster_handlers.go b/app/cluster_handlers.go
index 892bf00d3..f8bd8fe0e 100644
--- a/app/cluster_handlers.go
+++ b/app/cluster_handlers.go
@@ -10,17 +10,17 @@ import (
"github.com/mattermost/platform/model"
)
-func RegisterAllClusterMessageHandlers() {
+func (a *App) RegisterAllClusterMessageHandlers() {
einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_PUBLISH, ClusterPublishHandler)
einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_UPDATE_STATUS, ClusterUpdateStatusHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_ALL_CACHES, ClusterInvalidateAllCachesHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_WEBHOOK, ClusterInvalidateCacheForWebhookHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_POSTS, ClusterInvalidateCacheForChannelPostsHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS_NOTIFY_PROPS, ClusterInvalidateCacheForChannelMembersNotifyPropHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS, ClusterInvalidateCacheForChannelMembersHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_BY_NAME, ClusterInvalidateCacheForChannelByNameHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL, ClusterInvalidateCacheForChannelHandler)
- einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER, ClusterInvalidateCacheForUserHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_ALL_CACHES, a.ClusterInvalidateAllCachesHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_WEBHOOK, a.ClusterInvalidateCacheForWebhookHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_POSTS, a.ClusterInvalidateCacheForChannelPostsHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS_NOTIFY_PROPS, a.ClusterInvalidateCacheForChannelMembersNotifyPropHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS, a.ClusterInvalidateCacheForChannelMembersHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_BY_NAME, a.ClusterInvalidateCacheForChannelByNameHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL, a.ClusterInvalidateCacheForChannelHandler)
+ einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER, a.ClusterInvalidateCacheForUserHandler)
einterfaces.GetClusterInterface().RegisterClusterMessageHandler(model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_USER, ClusterClearSessionCacheForUserHandler)
}
@@ -35,36 +35,36 @@ func ClusterUpdateStatusHandler(msg *model.ClusterMessage) {
AddStatusCacheSkipClusterSend(status)
}
-func ClusterInvalidateAllCachesHandler(msg *model.ClusterMessage) {
- InvalidateAllCachesSkipSend()
+func (a *App) ClusterInvalidateAllCachesHandler(msg *model.ClusterMessage) {
+ a.InvalidateAllCachesSkipSend()
}
-func ClusterInvalidateCacheForWebhookHandler(msg *model.ClusterMessage) {
- InvalidateCacheForWebhookSkipClusterSend(msg.Data)
+func (a *App) ClusterInvalidateCacheForWebhookHandler(msg *model.ClusterMessage) {
+ a.InvalidateCacheForWebhookSkipClusterSend(msg.Data)
}
-func ClusterInvalidateCacheForChannelPostsHandler(msg *model.ClusterMessage) {
- InvalidateCacheForChannelPostsSkipClusterSend(msg.Data)
+func (a *App) ClusterInvalidateCacheForChannelPostsHandler(msg *model.ClusterMessage) {
+ a.InvalidateCacheForChannelPostsSkipClusterSend(msg.Data)
}
-func ClusterInvalidateCacheForChannelMembersNotifyPropHandler(msg *model.ClusterMessage) {
- InvalidateCacheForChannelMembersNotifyPropsSkipClusterSend(msg.Data)
+func (a *App) ClusterInvalidateCacheForChannelMembersNotifyPropHandler(msg *model.ClusterMessage) {
+ a.InvalidateCacheForChannelMembersNotifyPropsSkipClusterSend(msg.Data)
}
-func ClusterInvalidateCacheForChannelMembersHandler(msg *model.ClusterMessage) {
- InvalidateCacheForChannelMembersSkipClusterSend(msg.Data)
+func (a *App) ClusterInvalidateCacheForChannelMembersHandler(msg *model.ClusterMessage) {
+ a.InvalidateCacheForChannelMembersSkipClusterSend(msg.Data)
}
-func ClusterInvalidateCacheForChannelByNameHandler(msg *model.ClusterMessage) {
- InvalidateCacheForChannelByNameSkipClusterSend(msg.Props["id"], msg.Props["name"])
+func (a *App) ClusterInvalidateCacheForChannelByNameHandler(msg *model.ClusterMessage) {
+ a.InvalidateCacheForChannelByNameSkipClusterSend(msg.Props["id"], msg.Props["name"])
}
-func ClusterInvalidateCacheForChannelHandler(msg *model.ClusterMessage) {
- InvalidateCacheForChannelSkipClusterSend(msg.Data)
+func (a *App) ClusterInvalidateCacheForChannelHandler(msg *model.ClusterMessage) {
+ a.InvalidateCacheForChannelSkipClusterSend(msg.Data)
}
-func ClusterInvalidateCacheForUserHandler(msg *model.ClusterMessage) {
- InvalidateCacheForUserSkipClusterSend(msg.Data)
+func (a *App) ClusterInvalidateCacheForUserHandler(msg *model.ClusterMessage) {
+ a.InvalidateCacheForUserSkipClusterSend(msg.Data)
}
func ClusterClearSessionCacheForUserHandler(msg *model.ClusterMessage) {
diff --git a/app/command.go b/app/command.go
index a2e63a3d4..a69716f39 100644
--- a/app/command.go
+++ b/app/command.go
@@ -37,7 +37,7 @@ func GetCommandProvider(name string) CommandProvider {
return nil
}
-func CreateCommandPost(post *model.Post, teamId string, response *model.CommandResponse) (*model.Post, *model.AppError) {
+func (a *App) CreateCommandPost(post *model.Post, teamId string, response *model.CommandResponse) (*model.Post, *model.AppError) {
post.Message = parseSlackLinksToMarkdown(response.Text)
post.CreateAt = model.GetMillis()
@@ -46,7 +46,7 @@ func CreateCommandPost(post *model.Post, teamId string, response *model.CommandR
}
if response.ResponseType == model.COMMAND_RESPONSE_TYPE_IN_CHANNEL {
- return CreatePostMissingChannel(post, true)
+ return a.CreatePostMissingChannel(post, true)
} else if response.ResponseType == "" || response.ResponseType == model.COMMAND_RESPONSE_TYPE_EPHEMERAL {
if response.Text == "" {
return post, nil
@@ -60,7 +60,7 @@ func CreateCommandPost(post *model.Post, teamId string, response *model.CommandR
}
// previous ListCommands now ListAutocompleteCommands
-func ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) {
+func (a *App) ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) {
commands := make([]*model.Command, 0, 32)
seen := make(map[string]bool)
for _, value := range commandProviders {
@@ -73,7 +73,7 @@ func ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([]*model.C
}
if *utils.Cfg.ServiceSettings.EnableCommands {
- if result := <-Srv.Store.Command().GetByTeam(teamId); result.Err != nil {
+ if result := <-a.Srv.Store.Command().GetByTeam(teamId); result.Err != nil {
return nil, result.Err
} else {
teamCmds := result.Data.([]*model.Command)
@@ -90,19 +90,19 @@ func ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([]*model.C
return commands, nil
}
-func ListTeamCommands(teamId string) ([]*model.Command, *model.AppError) {
+func (a *App) ListTeamCommands(teamId string) ([]*model.Command, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableCommands {
return nil, model.NewAppError("ListTeamCommands", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Command().GetByTeam(teamId); result.Err != nil {
+ if result := <-a.Srv.Store.Command().GetByTeam(teamId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Command), nil
}
}
-func ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) {
+func (a *App) ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) {
commands := make([]*model.Command, 0, 32)
seen := make(map[string]bool)
for _, value := range commandProviders {
@@ -115,7 +115,7 @@ func ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *
}
if *utils.Cfg.ServiceSettings.EnableCommands {
- if result := <-Srv.Store.Command().GetByTeam(teamId); result.Err != nil {
+ if result := <-a.Srv.Store.Command().GetByTeam(teamId); result.Err != nil {
return nil, result.Err
} else {
teamCmds := result.Data.([]*model.Command)
@@ -132,7 +132,7 @@ func ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *
return commands, nil
}
-func ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
+func (a *App) ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
parts := strings.Split(args.Command, " ")
trigger := parts[0][1:]
trigger = strings.ToLower(trigger)
@@ -141,17 +141,17 @@ func ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.App
if provider != nil {
response := provider.DoCommand(args, message)
- return HandleCommandResponse(provider.GetCommand(args.T), args, response, true)
+ return a.HandleCommandResponse(provider.GetCommand(args.T), args, response, true)
} else {
if !*utils.Cfg.ServiceSettings.EnableCommands {
return nil, model.NewAppError("ExecuteCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- chanChan := Srv.Store.Channel().Get(args.ChannelId, true)
- teamChan := Srv.Store.Team().Get(args.TeamId)
- userChan := Srv.Store.User().Get(args.UserId)
+ chanChan := a.Srv.Store.Channel().Get(args.ChannelId, true)
+ teamChan := a.Srv.Store.Team().Get(args.TeamId)
+ userChan := a.Srv.Store.User().Get(args.UserId)
- if result := <-Srv.Store.Command().GetByTeam(args.TeamId); result.Err != nil {
+ if result := <-a.Srv.Store.Command().GetByTeam(args.TeamId); result.Err != nil {
return nil, result.Err
} else {
@@ -196,7 +196,7 @@ func ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.App
p.Set("command", "/"+trigger)
p.Set("text", message)
- if hook, err := CreateCommandWebhook(cmd.Id, args); err != nil {
+ if hook, err := a.CreateCommandWebhook(cmd.Id, args); err != nil {
return nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]interface{}{"Trigger": trigger}, err.Error(), http.StatusInternalServerError)
} else {
p.Set("response_url", args.SiteURL+"/hooks/commands/"+hook.Id)
@@ -221,7 +221,7 @@ func ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.App
if response == nil {
return nil, model.NewAppError("command", "api.command.execute_command.failed_empty.app_error", map[string]interface{}{"Trigger": trigger}, "", http.StatusInternalServerError)
} else {
- return HandleCommandResponse(cmd, args, response, false)
+ return a.HandleCommandResponse(cmd, args, response, false)
}
} else {
defer resp.Body.Close()
@@ -237,7 +237,7 @@ func ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.App
return nil, model.NewAppError("command", "api.command.execute_command.not_found.app_error", map[string]interface{}{"Trigger": trigger}, "", http.StatusNotFound)
}
-func HandleCommandResponse(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) {
+func (a *App) HandleCommandResponse(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) {
post := &model.Post{}
post.ChannelId = args.ChannelId
post.RootId = args.RootId
@@ -266,21 +266,21 @@ func HandleCommandResponse(command *model.Command, args *model.CommandArgs, resp
}
}
- if _, err := CreateCommandPost(post, args.TeamId, response); err != nil {
+ if _, err := a.CreateCommandPost(post, args.TeamId, response); err != nil {
l4g.Error(err.Error())
}
return response, nil
}
-func CreateCommand(cmd *model.Command) (*model.Command, *model.AppError) {
+func (a *App) CreateCommand(cmd *model.Command) (*model.Command, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableCommands {
return nil, model.NewAppError("CreateCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
}
cmd.Trigger = strings.ToLower(cmd.Trigger)
- if result := <-Srv.Store.Command().GetByTeam(cmd.TeamId); result.Err != nil {
+ if result := <-a.Srv.Store.Command().GetByTeam(cmd.TeamId); result.Err != nil {
return nil, result.Err
} else {
teamCmds := result.Data.([]*model.Command)
@@ -297,19 +297,19 @@ func CreateCommand(cmd *model.Command) (*model.Command, *model.AppError) {
}
}
- if result := <-Srv.Store.Command().Save(cmd); result.Err != nil {
+ if result := <-a.Srv.Store.Command().Save(cmd); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Command), nil
}
}
-func GetCommand(commandId string) (*model.Command, *model.AppError) {
+func (a *App) GetCommand(commandId string) (*model.Command, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableCommands {
return nil, model.NewAppError("GetCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Command().Get(commandId); result.Err != nil {
+ if result := <-a.Srv.Store.Command().Get(commandId); result.Err != nil {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else {
@@ -317,7 +317,7 @@ func GetCommand(commandId string) (*model.Command, *model.AppError) {
}
}
-func UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.AppError) {
+func (a *App) UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableCommands {
return nil, model.NewAppError("UpdateCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
}
@@ -331,33 +331,33 @@ func UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.Ap
updatedCmd.CreatorId = oldCmd.CreatorId
updatedCmd.TeamId = oldCmd.TeamId
- if result := <-Srv.Store.Command().Update(updatedCmd); result.Err != nil {
+ if result := <-a.Srv.Store.Command().Update(updatedCmd); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Command), nil
}
}
-func RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppError) {
+func (a *App) RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableCommands {
return nil, model.NewAppError("RegenCommandToken", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
}
cmd.Token = model.NewId()
- if result := <-Srv.Store.Command().Update(cmd); result.Err != nil {
+ if result := <-a.Srv.Store.Command().Update(cmd); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Command), nil
}
}
-func DeleteCommand(commandId string) *model.AppError {
+func (a *App) DeleteCommand(commandId string) *model.AppError {
if !*utils.Cfg.ServiceSettings.EnableCommands {
return model.NewAppError("DeleteCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if err := (<-Srv.Store.Command().Delete(commandId, model.GetMillis())).Err; err != nil {
+ if err := (<-a.Srv.Store.Command().Delete(commandId, model.GetMillis())).Err; err != nil {
return err
}
diff --git a/app/command_away.go b/app/command_away.go
index 77f5cc7f3..4bb53a425 100644
--- a/app/command_away.go
+++ b/app/command_away.go
@@ -33,7 +33,7 @@ func (me *AwayProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *AwayProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- SetStatusAwayIfNeeded(args.UserId, true)
+ Global().SetStatusAwayIfNeeded(args.UserId, true)
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command_away.success")}
}
diff --git a/app/command_channel_header.go b/app/command_channel_header.go
index e552f9282..02a31cd65 100644
--- a/app/command_channel_header.go
+++ b/app/command_channel_header.go
@@ -35,16 +35,16 @@ func (me *HeaderProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *HeaderProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- channel, err := GetChannel(args.ChannelId)
+ channel, err := Global().GetChannel(args.ChannelId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_channel_header.channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- if channel.Type == model.CHANNEL_OPEN && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_OPEN && !Global().SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
return &model.CommandResponse{Text: args.T("api.command_channel_header.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- if channel.Type == model.CHANNEL_PRIVATE && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_PRIVATE && !Global().SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
return &model.CommandResponse{Text: args.T("api.command_channel_header.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
@@ -57,7 +57,7 @@ func (me *HeaderProvider) DoCommand(args *model.CommandArgs, message string) *mo
}
*patch.Header = message
- _, err = PatchChannel(channel, patch, args.UserId)
+ _, err = Global().PatchChannel(channel, patch, args.UserId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_channel_header.update_channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
diff --git a/app/command_channel_purpose.go b/app/command_channel_purpose.go
index db3ab541a..563b96be7 100644
--- a/app/command_channel_purpose.go
+++ b/app/command_channel_purpose.go
@@ -34,16 +34,16 @@ func (me *PurposeProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *PurposeProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- channel, err := GetChannel(args.ChannelId)
+ channel, err := Global().GetChannel(args.ChannelId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_channel_purpose.channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- if channel.Type == model.CHANNEL_OPEN && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_OPEN && !Global().SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
return &model.CommandResponse{Text: args.T("api.command_channel_purpose.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- if channel.Type == model.CHANNEL_PRIVATE && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_PRIVATE && !Global().SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
return &model.CommandResponse{Text: args.T("api.command_channel_purpose.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
@@ -60,7 +60,7 @@ func (me *PurposeProvider) DoCommand(args *model.CommandArgs, message string) *m
}
*patch.Purpose = message
- _, err = PatchChannel(channel, patch, args.UserId)
+ _, err = Global().PatchChannel(channel, patch, args.UserId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_channel_purpose.update_channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
diff --git a/app/command_channel_rename.go b/app/command_channel_rename.go
index 596f8b38c..731b5d54a 100644
--- a/app/command_channel_rename.go
+++ b/app/command_channel_rename.go
@@ -34,16 +34,16 @@ func (me *RenameProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *RenameProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- channel, err := GetChannel(args.ChannelId)
+ channel, err := Global().GetChannel(args.ChannelId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_channel_rename.channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- if channel.Type == model.CHANNEL_OPEN && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_OPEN && !Global().SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
return &model.CommandResponse{Text: args.T("api.command_channel_rename.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- if channel.Type == model.CHANNEL_PRIVATE && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
+ if channel.Type == model.CHANNEL_PRIVATE && !Global().SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
return &model.CommandResponse{Text: args.T("api.command_channel_rename.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
@@ -64,7 +64,7 @@ func (me *RenameProvider) DoCommand(args *model.CommandArgs, message string) *mo
}
*patch.DisplayName = message
- _, err = PatchChannel(channel, patch, args.UserId)
+ _, err = Global().PatchChannel(channel, patch, args.UserId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_channel_rename.update_channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
diff --git a/app/command_channel_rename_test.go b/app/command_channel_rename_test.go
index 95a4f1500..94725ef3c 100644
--- a/app/command_channel_rename_test.go
+++ b/app/command_channel_rename_test.go
@@ -8,7 +8,8 @@ import (
)
func TestRenameProviderDoCommand(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
rp := RenameProvider{}
args := &model.CommandArgs{
diff --git a/app/command_echo.go b/app/command_echo.go
index 3ab5a7873..f89aab378 100644
--- a/app/command_echo.go
+++ b/app/command_echo.go
@@ -88,7 +88,7 @@ func (me *EchoProvider) DoCommand(args *model.CommandArgs, message string) *mode
time.Sleep(time.Duration(delay) * time.Second)
- if _, err := CreatePostMissingChannel(post, true); err != nil {
+ if _, err := Global().CreatePostMissingChannel(post, true); err != nil {
l4g.Error(args.T("api.command_echo.create.app_error"), err)
}
}()
diff --git a/app/command_expand_collapse.go b/app/command_expand_collapse.go
index 314a54b2a..7ea90cdb5 100644
--- a/app/command_expand_collapse.go
+++ b/app/command_expand_collapse.go
@@ -53,14 +53,14 @@ func (me *CollapseProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *ExpandProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- return setCollapsePreference(args, false)
+ return Global().setCollapsePreference(args, false)
}
func (me *CollapseProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- return setCollapsePreference(args, true)
+ return Global().setCollapsePreference(args, true)
}
-func setCollapsePreference(args *model.CommandArgs, isCollapse bool) *model.CommandResponse {
+func (a *App) setCollapsePreference(args *model.CommandArgs, isCollapse bool) *model.CommandResponse {
pref := model.Preference{
UserId: args.UserId,
Category: model.PREFERENCE_CATEGORY_DISPLAY_SETTINGS,
@@ -68,7 +68,7 @@ func setCollapsePreference(args *model.CommandArgs, isCollapse bool) *model.Comm
Value: strconv.FormatBool(isCollapse),
}
- if result := <-Srv.Store.Preference().Save(&model.Preferences{pref}); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&model.Preferences{pref}); result.Err != nil {
return &model.CommandResponse{Text: args.T("api.command_expand_collapse.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
diff --git a/app/command_invite_people.go b/app/command_invite_people.go
index 6f2bac445..01e3db4bc 100644
--- a/app/command_invite_people.go
+++ b/app/command_invite_people.go
@@ -63,7 +63,7 @@ func (me *InvitePeopleProvider) DoCommand(args *model.CommandArgs, message strin
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command.invite_people.no_email")}
}
- if err := InviteNewUsersToTeam(emailList, args.TeamId, args.UserId); err != nil {
+ if err := Global().InviteNewUsersToTeam(emailList, args.TeamId, args.UserId); err != nil {
l4g.Error(err.Error())
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command.invite_people.fail")}
}
diff --git a/app/command_join.go b/app/command_join.go
index 07ae391ae..7b79f77e9 100644
--- a/app/command_join.go
+++ b/app/command_join.go
@@ -34,14 +34,14 @@ func (me *JoinProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *JoinProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- if result := <-Srv.Store.Channel().GetByName(args.TeamId, message, true); result.Err != nil {
+ if result := <-Global().Srv.Store.Channel().GetByName(args.TeamId, message, true); result.Err != nil {
return &model.CommandResponse{Text: args.T("api.command_join.list.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} else {
channel := result.Data.(*model.Channel)
if channel.Name == message {
allowed := false
- if (channel.Type == model.CHANNEL_PRIVATE && SessionHasPermissionToChannel(args.Session, channel.Id, model.PERMISSION_READ_CHANNEL)) || channel.Type == model.CHANNEL_OPEN {
+ if (channel.Type == model.CHANNEL_PRIVATE && Global().SessionHasPermissionToChannel(args.Session, channel.Id, model.PERMISSION_READ_CHANNEL)) || channel.Type == model.CHANNEL_OPEN {
allowed = true
}
@@ -49,11 +49,11 @@ func (me *JoinProvider) DoCommand(args *model.CommandArgs, message string) *mode
return &model.CommandResponse{Text: args.T("api.command_join.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- if err := JoinChannel(channel, args.UserId); err != nil {
+ if err := Global().JoinChannel(channel, args.UserId); err != nil {
return &model.CommandResponse{Text: args.T("api.command_join.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- team, err := GetTeam(channel.TeamId)
+ team, err := Global().GetTeam(channel.TeamId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_join.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
diff --git a/app/command_leave.go b/app/command_leave.go
index 963172e86..f8f3fa013 100644
--- a/app/command_leave.go
+++ b/app/command_leave.go
@@ -35,18 +35,18 @@ func (me *LeaveProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
func (me *LeaveProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
var channel *model.Channel
var noChannelErr *model.AppError
- if channel, noChannelErr = GetChannel(args.ChannelId); noChannelErr != nil {
+ if channel, noChannelErr = Global().GetChannel(args.ChannelId); noChannelErr != nil {
return &model.CommandResponse{Text: args.T("api.command_leave.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
if channel.Name == model.DEFAULT_CHANNEL {
return &model.CommandResponse{Text: args.T("api.channel.leave.default.app_error", map[string]interface{}{"Channel": model.DEFAULT_CHANNEL}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- err := LeaveChannel(args.ChannelId, args.UserId)
+ err := Global().LeaveChannel(args.ChannelId, args.UserId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_leave.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- team, err := GetTeam(args.TeamId)
+ team, err := Global().GetTeam(args.TeamId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_leave.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
diff --git a/app/command_loadtest.go b/app/command_loadtest.go
index 8a37014fa..a07a16cf7 100644
--- a/app/command_loadtest.go
+++ b/app/command_loadtest.go
@@ -161,7 +161,7 @@ func (me *LoadTestProvider) SetupCommand(args *model.CommandArgs, message string
client := model.NewClient(args.SiteURL)
if doTeams {
- if err := CreateBasicUser(client); err != nil {
+ if err := Global().CreateBasicUser(client); err != nil {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
client.Login(BTEST_USER_EMAIL, BTEST_USER_PASSWORD)
@@ -184,7 +184,7 @@ func (me *LoadTestProvider) SetupCommand(args *model.CommandArgs, message string
} else {
var team *model.Team
- if tr := <-Srv.Store.Team().Get(args.TeamId); tr.Err != nil {
+ if tr := <-Global().Srv.Store.Team().Get(args.TeamId); tr.Err != nil {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} else {
team = tr.Data.(*model.Team)
@@ -219,7 +219,7 @@ func (me *LoadTestProvider) UsersCommand(args *model.CommandArgs, message string
}
var team *model.Team
- if tr := <-Srv.Store.Team().Get(args.TeamId); tr.Err != nil {
+ if tr := <-Global().Srv.Store.Team().Get(args.TeamId); tr.Err != nil {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} else {
team = tr.Data.(*model.Team)
@@ -249,7 +249,7 @@ func (me *LoadTestProvider) ChannelsCommand(args *model.CommandArgs, message str
}
var team *model.Team
- if tr := <-Srv.Store.Team().Get(args.TeamId); tr.Err != nil {
+ if tr := <-Global().Srv.Store.Team().Get(args.TeamId); tr.Err != nil {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} else {
team = tr.Data.(*model.Team)
@@ -288,7 +288,7 @@ func (me *LoadTestProvider) PostsCommand(args *model.CommandArgs, message string
}
var usernames []string
- if result := <-Srv.Store.User().GetProfiles(args.TeamId, 0, 1000); result.Err == nil {
+ if result := <-Global().Srv.Store.User().GetProfiles(args.TeamId, 0, 1000); result.Err == nil {
profileUsers := result.Data.([]*model.User)
usernames = make([]string, len(profileUsers))
i := 0
@@ -357,7 +357,7 @@ func (me *LoadTestProvider) UrlCommand(args *model.CommandArgs, message string)
post.ChannelId = args.ChannelId
post.UserId = args.UserId
- if _, err := CreatePostMissingChannel(post, false); err != nil {
+ if _, err := Global().CreatePostMissingChannel(post, false); err != nil {
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
}
@@ -396,7 +396,7 @@ func (me *LoadTestProvider) JsonCommand(args *model.CommandArgs, message string)
post.Message = message
}
- if _, err := CreatePostMissingChannel(post, false); err != nil {
+ if _, err := Global().CreatePostMissingChannel(post, false); err != nil {
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
diff --git a/app/command_logout.go b/app/command_logout.go
index cc59d2686..af28b9a16 100644
--- a/app/command_logout.go
+++ b/app/command_logout.go
@@ -39,7 +39,7 @@ func (me *LogoutProvider) DoCommand(args *model.CommandArgs, message string) *mo
// We can't actually remove the user's cookie from here so we just dump their session and let the browser figure it out
if args.Session.Id != "" {
- if err := RevokeSessionById(args.Session.Id); err != nil {
+ if err := Global().RevokeSessionById(args.Session.Id); err != nil {
return FAIL
}
return SUCCESS
diff --git a/app/command_msg.go b/app/command_msg.go
index 67bb425d2..1e5228a78 100644
--- a/app/command_msg.go
+++ b/app/command_msg.go
@@ -51,7 +51,7 @@ func (me *msgProvider) DoCommand(args *model.CommandArgs, message string) *model
targetUsername = strings.TrimPrefix(targetUsername, "@")
var userProfile *model.User
- if result := <-Srv.Store.User().GetByUsername(targetUsername); result.Err != nil {
+ if result := <-Global().Srv.Store.User().GetByUsername(targetUsername); result.Err != nil {
l4g.Error(result.Err.Error())
return &model.CommandResponse{Text: args.T("api.command_msg.missing.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} else {
@@ -66,9 +66,9 @@ func (me *msgProvider) DoCommand(args *model.CommandArgs, message string) *model
channelName := model.GetDMNameFromIds(args.UserId, userProfile.Id)
targetChannelId := ""
- if channel := <-Srv.Store.Channel().GetByName(args.TeamId, channelName, true); channel.Err != nil {
+ if channel := <-Global().Srv.Store.Channel().GetByName(args.TeamId, channelName, true); channel.Err != nil {
if channel.Err.Id == "store.sql_channel.get_by_name.missing.app_error" {
- if directChannel, err := CreateDirectChannel(args.UserId, userProfile.Id); err != nil {
+ if directChannel, err := Global().CreateDirectChannel(args.UserId, userProfile.Id); err != nil {
l4g.Error(err.Error())
return &model.CommandResponse{Text: args.T("api.command_msg.dm_fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} else {
@@ -89,7 +89,7 @@ func (me *msgProvider) DoCommand(args *model.CommandArgs, message string) *model
post.Message = parsedMessage
post.ChannelId = targetChannelId
post.UserId = args.UserId
- if _, err := CreatePostMissingChannel(post, true); err != nil {
+ if _, err := Global().CreatePostMissingChannel(post, true); err != nil {
return &model.CommandResponse{Text: args.T("api.command_msg.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
}
@@ -101,7 +101,7 @@ func (me *msgProvider) DoCommand(args *model.CommandArgs, message string) *model
teamId = args.Session.TeamMembers[0].TeamId
}
- team, err := GetTeam(teamId)
+ team, err := Global().GetTeam(teamId)
if err != nil {
return &model.CommandResponse{Text: args.T("api.command_msg.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
diff --git a/app/command_offline.go b/app/command_offline.go
index a8c4352ad..014676974 100644
--- a/app/command_offline.go
+++ b/app/command_offline.go
@@ -33,7 +33,7 @@ func (me *OfflineProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *OfflineProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- SetStatusOffline(args.UserId, true)
+ Global().SetStatusOffline(args.UserId, true)
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command_offline.success")}
}
diff --git a/app/command_online.go b/app/command_online.go
index c98f1649b..16501e09c 100644
--- a/app/command_online.go
+++ b/app/command_online.go
@@ -33,7 +33,7 @@ func (me *OnlineProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
}
func (me *OnlineProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
- SetStatusOnline(args.UserId, args.Session.Id, true)
+ Global().SetStatusOnline(args.UserId, args.Session.Id, true)
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: args.T("api.command_online.success")}
}
diff --git a/app/compliance.go b/app/compliance.go
index 9c6d8985b..b6317fa1e 100644
--- a/app/compliance.go
+++ b/app/compliance.go
@@ -6,32 +6,33 @@ package app
import (
"io/ioutil"
+ "net/http"
+
"github.com/mattermost/platform/einterfaces"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "net/http"
)
-func GetComplianceReports(page, perPage int) (model.Compliances, *model.AppError) {
+func (a *App) GetComplianceReports(page, perPage int) (model.Compliances, *model.AppError) {
if !*utils.Cfg.ComplianceSettings.Enable || !utils.IsLicensed() || !*utils.License().Features.Compliance {
return nil, model.NewAppError("GetComplianceReports", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Compliance().GetAll(page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.Compliance().GetAll(page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(model.Compliances), nil
}
}
-func SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError) {
+func (a *App) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError) {
if !*utils.Cfg.ComplianceSettings.Enable || !utils.IsLicensed() || !*utils.License().Features.Compliance || einterfaces.GetComplianceInterface() == nil {
return nil, model.NewAppError("saveComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
}
job.Type = model.COMPLIANCE_TYPE_ADHOC
- if result := <-Srv.Store.Compliance().Save(job); result.Err != nil {
+ if result := <-a.Srv.Store.Compliance().Save(job); result.Err != nil {
return nil, result.Err
} else {
job = result.Data.(*model.Compliance)
@@ -41,12 +42,12 @@ func SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppE
return job, nil
}
-func GetComplianceReport(reportId string) (*model.Compliance, *model.AppError) {
+func (a *App) GetComplianceReport(reportId string) (*model.Compliance, *model.AppError) {
if !*utils.Cfg.ComplianceSettings.Enable || !utils.IsLicensed() || !*utils.License().Features.Compliance || einterfaces.GetComplianceInterface() == nil {
return nil, model.NewAppError("downloadComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Compliance().Get(reportId); result.Err != nil {
+ if result := <-a.Srv.Store.Compliance().Get(reportId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Compliance), nil
diff --git a/app/diagnostics.go b/app/diagnostics.go
index 98043d0a0..55c765ac0 100644
--- a/app/diagnostics.go
+++ b/app/diagnostics.go
@@ -50,13 +50,13 @@ const (
var client *analytics.Client
-func SendDailyDiagnostics() {
+func (a *App) SendDailyDiagnostics() {
if *utils.Cfg.LogSettings.EnableDiagnostics && utils.IsLeader() {
initDiagnostics("")
- trackActivity()
+ a.trackActivity()
trackConfig()
trackLicense()
- trackServer()
+ a.trackServer()
}
}
@@ -108,7 +108,7 @@ func pluginSetting(plugin, key string, defaultValue interface{}) interface{} {
return defaultValue
}
-func trackActivity() {
+func (a *App) trackActivity() {
var userCount int64
var activeUserCount int64
var inactiveUserCount int64
@@ -120,43 +120,43 @@ func trackActivity() {
var deletedPrivateChannelCount int64
var postsCount int64
- if ucr := <-Srv.Store.User().GetTotalUsersCount(); ucr.Err == nil {
+ if ucr := <-a.Srv.Store.User().GetTotalUsersCount(); ucr.Err == nil {
userCount = ucr.Data.(int64)
}
- if ucr := <-Srv.Store.Status().GetTotalActiveUsersCount(); ucr.Err == nil {
+ if ucr := <-a.Srv.Store.Status().GetTotalActiveUsersCount(); ucr.Err == nil {
activeUserCount = ucr.Data.(int64)
}
- if iucr := <-Srv.Store.Status().GetTotalActiveUsersCount(); iucr.Err == nil {
+ if iucr := <-a.Srv.Store.Status().GetTotalActiveUsersCount(); iucr.Err == nil {
inactiveUserCount = iucr.Data.(int64)
}
- if tcr := <-Srv.Store.Team().AnalyticsTeamCount(); tcr.Err == nil {
+ if tcr := <-a.Srv.Store.Team().AnalyticsTeamCount(); tcr.Err == nil {
teamCount = tcr.Data.(int64)
}
- if ucc := <-Srv.Store.Channel().AnalyticsTypeCount("", "O"); ucc.Err == nil {
+ if ucc := <-a.Srv.Store.Channel().AnalyticsTypeCount("", "O"); ucc.Err == nil {
publicChannelCount = ucc.Data.(int64)
}
- if pcc := <-Srv.Store.Channel().AnalyticsTypeCount("", "P"); pcc.Err == nil {
+ if pcc := <-a.Srv.Store.Channel().AnalyticsTypeCount("", "P"); pcc.Err == nil {
privateChannelCount = pcc.Data.(int64)
}
- if dcc := <-Srv.Store.Channel().AnalyticsTypeCount("", "D"); dcc.Err == nil {
+ if dcc := <-a.Srv.Store.Channel().AnalyticsTypeCount("", "D"); dcc.Err == nil {
directChannelCount = dcc.Data.(int64)
}
- if duccr := <-Srv.Store.Channel().AnalyticsDeletedTypeCount("", "O"); duccr.Err == nil {
+ if duccr := <-a.Srv.Store.Channel().AnalyticsDeletedTypeCount("", "O"); duccr.Err == nil {
deletedPublicChannelCount = duccr.Data.(int64)
}
- if dpccr := <-Srv.Store.Channel().AnalyticsDeletedTypeCount("", "P"); dpccr.Err == nil {
+ if dpccr := <-a.Srv.Store.Channel().AnalyticsDeletedTypeCount("", "P"); dpccr.Err == nil {
deletedPrivateChannelCount = dpccr.Data.(int64)
}
- if pcr := <-Srv.Store.Post().AnalyticsPostCount("", false, false); pcr.Err == nil {
+ if pcr := <-a.Srv.Store.Post().AnalyticsPostCount("", false, false); pcr.Err == nil {
postsCount = pcr.Data.(int64)
}
@@ -467,7 +467,7 @@ func trackLicense() {
}
}
-func trackServer() {
+func (a *App) trackServer() {
data := map[string]interface{}{
"edition": model.BuildEnterpriseReady,
"version": model.CurrentVersion,
@@ -475,7 +475,7 @@ func trackServer() {
"operating_system": runtime.GOOS,
}
- if scr := <-Srv.Store.User().AnalyticsGetSystemAdminCount(); scr.Err == nil {
+ if scr := <-a.Srv.Store.User().AnalyticsGetSystemAdminCount(); scr.Err == nil {
data["system_admins"] = scr.Data.(int64)
}
diff --git a/app/diagnostics_test.go b/app/diagnostics_test.go
index 57e9eaf79..3fc1a0396 100644
--- a/app/diagnostics_test.go
+++ b/app/diagnostics_test.go
@@ -47,7 +47,8 @@ func TestPluginSetting(t *testing.T) {
}
func TestDiagnostics(t *testing.T) {
- Setup().InitBasic()
+ a := Global()
+ a.Setup().InitBasic()
if testing.Short() {
t.SkipNow()
@@ -91,7 +92,7 @@ func TestDiagnostics(t *testing.T) {
})
t.Run("SendDailyDiagnostics", func(t *testing.T) {
- SendDailyDiagnostics()
+ a.SendDailyDiagnostics()
info := ""
// Collect the info sent.
@@ -151,7 +152,7 @@ func TestDiagnostics(t *testing.T) {
*utils.Cfg.LogSettings.EnableDiagnostics = oldSetting
}()
- SendDailyDiagnostics()
+ a.SendDailyDiagnostics()
select {
case <-data:
diff --git a/app/email.go b/app/email.go
index bf9043de5..9397d298c 100644
--- a/app/email.go
+++ b/app/email.go
@@ -7,10 +7,11 @@ import (
"fmt"
"net/url"
+ "net/http"
+
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "net/http"
)
func SendChangeUsernameEmail(oldUsername, newUsername, email, locale, siteURL string) *model.AppError {
@@ -120,7 +121,7 @@ func SendSignInChangeEmail(email, method, locale, siteURL string) *model.AppErro
return nil
}
-func SendWelcomeEmail(userId string, email string, verified bool, locale, siteURL string) *model.AppError {
+func (a *App) SendWelcomeEmail(userId string, email string, verified bool, locale, siteURL string) *model.AppError {
T := utils.GetUserTranslations(locale)
rawUrl, _ := url.Parse(siteURL)
@@ -144,7 +145,7 @@ func SendWelcomeEmail(userId string, email string, verified bool, locale, siteUR
}
if !verified {
- token, err := CreateVerifyEmailToken(userId)
+ token, err := a.CreateVerifyEmailToken(userId)
if err != nil {
return err
}
diff --git a/app/email_batching.go b/app/email_batching.go
index 4b557c678..1b60d5296 100644
--- a/app/email_batching.go
+++ b/app/email_batching.go
@@ -12,9 +12,10 @@ import (
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
+ "net/http"
+
l4g "github.com/alecthomas/log4go"
"github.com/nicksnyder/go-i18n/i18n"
- "net/http"
)
const (
@@ -96,7 +97,7 @@ func (job *EmailBatchingJob) CheckPendingEmails() {
// it's a bit weird to pass the send email function through here, but it makes it so that we can test
// without actually sending emails
- job.checkPendingNotifications(time.Now(), sendBatchedEmailNotification)
+ job.checkPendingNotifications(time.Now(), Global().sendBatchedEmailNotification)
l4g.Debug(utils.T("api.email_batching.check_pending_emails.finished_running"), len(job.pendingNotifications))
}
@@ -130,7 +131,7 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
if inspectedTeamNames[notification.teamName] != "" {
continue
}
- tchan := Srv.Store.Team().GetByName(notifications[0].teamName)
+ tchan := Global().Srv.Store.Team().GetByName(notifications[0].teamName)
if result := <-tchan; result.Err != nil {
l4g.Error("Unable to find Team id for notification", result.Err)
continue
@@ -140,7 +141,7 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
// if the user has viewed any channels in this team since the notification was queued, delete
// all queued notifications
- mchan := Srv.Store.Channel().GetMembersForUser(inspectedTeamNames[notification.teamName], userId)
+ mchan := Global().Srv.Store.Channel().GetMembersForUser(inspectedTeamNames[notification.teamName], userId)
if result := <-mchan; result.Err != nil {
l4g.Error("Unable to find ChannelMembers for user", result.Err)
continue
@@ -157,7 +158,7 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
// get how long we need to wait to send notifications to the user
var interval int64
- pchan := Srv.Store.Preference().Get(userId, model.PREFERENCE_CATEGORY_NOTIFICATIONS, model.PREFERENCE_NAME_EMAIL_INTERVAL)
+ pchan := Global().Srv.Store.Preference().Get(userId, model.PREFERENCE_CATEGORY_NOTIFICATIONS, model.PREFERENCE_NAME_EMAIL_INTERVAL)
if result := <-pchan; result.Err != nil {
// use the default batching interval if an error ocurrs while fetching user preferences
interval, _ = strconv.ParseInt(model.PREFERENCE_EMAIL_INTERVAL_BATCHING_SECONDS, 10, 64)
@@ -180,8 +181,8 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
}
}
-func sendBatchedEmailNotification(userId string, notifications []*batchedNotification) {
- uchan := Srv.Store.User().Get(userId)
+func (a *App) sendBatchedEmailNotification(userId string, notifications []*batchedNotification) {
+ uchan := a.Srv.Store.User().Get(userId)
var user *model.User
if result := <-uchan; result.Err != nil {
@@ -197,7 +198,7 @@ func sendBatchedEmailNotification(userId string, notifications []*batchedNotific
var contents string
for _, notification := range notifications {
var sender *model.User
- schan := Srv.Store.User().Get(notification.post.UserId)
+ schan := a.Srv.Store.User().Get(notification.post.UserId)
if result := <-schan; result.Err != nil {
l4g.Warn(utils.T("api.email_batching.render_batched_post.sender.app_error"))
continue
@@ -206,7 +207,7 @@ func sendBatchedEmailNotification(userId string, notifications []*batchedNotific
}
var channel *model.Channel
- cchan := Srv.Store.Channel().Get(notification.post.ChannelId, true)
+ cchan := a.Srv.Store.Channel().Get(notification.post.ChannelId, true)
if result := <-cchan; result.Err != nil {
l4g.Warn(utils.T("api.email_batching.render_batched_post.channel.app_error"))
continue
@@ -219,7 +220,7 @@ func sendBatchedEmailNotification(userId string, notifications []*batchedNotific
emailNotificationContentsType = *utils.Cfg.EmailSettings.EmailNotificationContentsType
}
- contents += renderBatchedPost(notification, channel, sender, *utils.Cfg.ServiceSettings.SiteURL, displayNameFormat, translateFunc, user.Locale, emailNotificationContentsType)
+ contents += a.renderBatchedPost(notification, channel, sender, *utils.Cfg.ServiceSettings.SiteURL, displayNameFormat, translateFunc, user.Locale, emailNotificationContentsType)
}
tm := time.Unix(notifications[0].post.CreateAt/1000, 0)
@@ -241,7 +242,7 @@ func sendBatchedEmailNotification(userId string, notifications []*batchedNotific
}
}
-func renderBatchedPost(notification *batchedNotification, channel *model.Channel, sender *model.User, siteURL string, displayNameFormat string, translateFunc i18n.TranslateFunc, userLocale string, emailNotificationContentsType string) string {
+func (a *App) renderBatchedPost(notification *batchedNotification, channel *model.Channel, sender *model.User, siteURL string, displayNameFormat string, translateFunc i18n.TranslateFunc, userLocale string, emailNotificationContentsType string) string {
// don't include message contents if email notification contents type is set to generic
var template *utils.HTMLTemplate
if emailNotificationContentsType == model.EMAIL_NOTIFICATION_CONTENTS_FULL {
@@ -251,7 +252,7 @@ func renderBatchedPost(notification *batchedNotification, channel *model.Channel
}
template.Props["Button"] = translateFunc("api.email_batching.render_batched_post.go_to_post")
- template.Props["PostMessage"] = GetMessageForNotification(notification.post, translateFunc)
+ template.Props["PostMessage"] = a.GetMessageForNotification(notification.post, translateFunc)
template.Props["PostLink"] = siteURL + "/" + notification.teamName + "/pl/" + notification.post.Id
template.Props["SenderName"] = sender.GetDisplayName(displayNameFormat)
diff --git a/app/email_batching_test.go b/app/email_batching_test.go
index 829bc11af..e30e0ac96 100644
--- a/app/email_batching_test.go
+++ b/app/email_batching_test.go
@@ -13,7 +13,8 @@ import (
)
func TestHandleNewNotifications(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
id1 := model.NewId()
id2 := model.NewId()
@@ -93,25 +94,26 @@ func TestHandleNewNotifications(t *testing.T) {
}
func TestCheckPendingNotifications(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
job := MakeEmailBatchingJob(128)
job.pendingNotifications[th.BasicUser.Id] = []*batchedNotification{
{
post: &model.Post{
- UserId: th.BasicUser.Id,
+ UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id,
- CreateAt: 10000000,
+ CreateAt: 10000000,
},
teamName: th.BasicTeam.Name,
},
}
- channelMember := store.Must(Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
+ channelMember := store.Must(a.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
channelMember.LastViewedAt = 9999999
- store.Must(Srv.Store.Channel().UpdateMember(channelMember))
+ store.Must(a.Srv.Store.Channel().UpdateMember(channelMember))
- store.Must(Srv.Store.Preference().Save(&model.Preferences{{
+ store.Must(a.Srv.Store.Preference().Save(&model.Preferences{{
UserId: th.BasicUser.Id,
Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS,
Name: model.PREFERENCE_NAME_EMAIL_INTERVAL,
@@ -126,9 +128,9 @@ func TestCheckPendingNotifications(t *testing.T) {
}
// test that notifications are cleared if the user has acted
- channelMember = store.Must(Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
+ channelMember = store.Must(a.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
channelMember.LastViewedAt = 10001000
- store.Must(Srv.Store.Channel().UpdateMember(channelMember))
+ store.Must(a.Srv.Store.Channel().UpdateMember(channelMember))
job.checkPendingNotifications(time.Unix(10002, 0), func(string, []*batchedNotification) {})
@@ -140,19 +142,19 @@ func TestCheckPendingNotifications(t *testing.T) {
job.pendingNotifications[th.BasicUser.Id] = []*batchedNotification{
{
post: &model.Post{
- UserId: th.BasicUser.Id,
+ UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id,
- CreateAt: 10060000,
- Message: "post1",
+ CreateAt: 10060000,
+ Message: "post1",
},
teamName: th.BasicTeam.Name,
},
{
post: &model.Post{
- UserId: th.BasicUser.Id,
+ UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id,
- CreateAt: 10090000,
- Message: "post2",
+ CreateAt: 10090000,
+ Message: "post2",
},
teamName: th.BasicTeam.Name,
},
@@ -200,20 +202,21 @@ func TestCheckPendingNotifications(t *testing.T) {
* Ensures that email batch interval defaults to 15 minutes for users that haven't explicitly set this preference
*/
func TestCheckPendingNotificationsDefaultInterval(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
job := MakeEmailBatchingJob(128)
// bypasses recent user activity check
- channelMember := store.Must(Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
+ channelMember := store.Must(a.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
channelMember.LastViewedAt = 9999000
- store.Must(Srv.Store.Channel().UpdateMember(channelMember))
+ store.Must(a.Srv.Store.Channel().UpdateMember(channelMember))
job.pendingNotifications[th.BasicUser.Id] = []*batchedNotification{
{
post: &model.Post{
- UserId: th.BasicUser.Id,
+ UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id,
- CreateAt: 10000000,
+ CreateAt: 10000000,
},
teamName: th.BasicTeam.Name,
},
@@ -236,16 +239,17 @@ func TestCheckPendingNotificationsDefaultInterval(t *testing.T) {
* Ensures that email batch interval defaults to 15 minutes if user preference is invalid
*/
func TestCheckPendingNotificationsCantParseInterval(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
job := MakeEmailBatchingJob(128)
// bypasses recent user activity check
- channelMember := store.Must(Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
+ channelMember := store.Must(a.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)).(*model.ChannelMember)
channelMember.LastViewedAt = 9999000
- store.Must(Srv.Store.Channel().UpdateMember(channelMember))
+ store.Must(a.Srv.Store.Channel().UpdateMember(channelMember))
// preference value is not an integer, so we'll fall back to the default 15min value
- store.Must(Srv.Store.Preference().Save(&model.Preferences{{
+ store.Must(a.Srv.Store.Preference().Save(&model.Preferences{{
UserId: th.BasicUser.Id,
Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS,
Name: model.PREFERENCE_NAME_EMAIL_INTERVAL,
@@ -255,9 +259,9 @@ func TestCheckPendingNotificationsCantParseInterval(t *testing.T) {
job.pendingNotifications[th.BasicUser.Id] = []*batchedNotification{
{
post: &model.Post{
- UserId: th.BasicUser.Id,
+ UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id,
- CreateAt: 10000000,
+ CreateAt: 10000000,
},
teamName: th.BasicTeam.Name,
},
@@ -280,7 +284,8 @@ func TestCheckPendingNotificationsCantParseInterval(t *testing.T) {
* Ensures that post contents are not included in notification email when email notification content type is set to generic
*/
func TestRenderBatchedPostGeneric(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
var post = &model.Post{}
post.Message = "This is the message"
var notification = &batchedNotification{}
@@ -295,7 +300,7 @@ func TestRenderBatchedPostGeneric(t *testing.T) {
return translationID
}
- var rendered = renderBatchedPost(notification, channel, sender, "http://localhost:8065", "", translateFunc, "en", model.EMAIL_NOTIFICATION_CONTENTS_GENERIC)
+ var rendered = a.renderBatchedPost(notification, channel, sender, "http://localhost:8065", "", translateFunc, "en", model.EMAIL_NOTIFICATION_CONTENTS_GENERIC)
if strings.Contains(rendered, post.Message) {
t.Fatal("Rendered email should not contain post contents when email notification contents type is set to Generic.")
}
@@ -305,7 +310,8 @@ func TestRenderBatchedPostGeneric(t *testing.T) {
* Ensures that post contents included in notification email when email notification content type is set to full
*/
func TestRenderBatchedPostFull(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
var post = &model.Post{}
post.Message = "This is the message"
var notification = &batchedNotification{}
@@ -320,7 +326,7 @@ func TestRenderBatchedPostFull(t *testing.T) {
return translationID
}
- var rendered = renderBatchedPost(notification, channel, sender, "http://localhost:8065", "", translateFunc, "en", model.EMAIL_NOTIFICATION_CONTENTS_FULL)
+ var rendered = a.renderBatchedPost(notification, channel, sender, "http://localhost:8065", "", translateFunc, "en", model.EMAIL_NOTIFICATION_CONTENTS_FULL)
if !strings.Contains(rendered, post.Message) {
t.Fatal("Rendered email should contain post contents when email notification contents type is set to Full.")
}
diff --git a/app/email_test.go b/app/email_test.go
index 449e81b75..c0333827b 100644
--- a/app/email_test.go
+++ b/app/email_test.go
@@ -12,10 +12,11 @@ import (
)
func TestSendChangeUsernameEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var emailTo string = "test@example.com"
var oldUsername string = "myoldusername"
@@ -63,10 +64,11 @@ func TestSendChangeUsernameEmail(t *testing.T) {
}
func TestSendEmailChangeVerifyEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var newUserEmail string = "newtest@example.com"
var locale string = "en"
@@ -117,10 +119,11 @@ func TestSendEmailChangeVerifyEmail(t *testing.T) {
}
func TestSendEmailChangeEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var oldEmail string = "test@example.com"
var newUserEmail string = "newtest@example.com"
@@ -167,10 +170,11 @@ func TestSendEmailChangeEmail(t *testing.T) {
}
func TestSendVerifyEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var userEmail string = "test@example.com"
var locale string = "en"
@@ -221,10 +225,11 @@ func TestSendVerifyEmail(t *testing.T) {
}
func TestSendSignInChangeEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var email string = "test@example.com"
var locale string = "en"
@@ -271,10 +276,11 @@ func TestSendSignInChangeEmail(t *testing.T) {
}
func TestSendWelcomeEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var userId string = "32432nkjnijn432uj32"
var email string = "test@example.com"
@@ -287,7 +293,7 @@ func TestSendWelcomeEmail(t *testing.T) {
//Delete all the messages before check the sample email
utils.DeleteMailBox(email)
- if err := SendWelcomeEmail(userId, email, verified, locale, siteURL); err != nil {
+ if err := a.SendWelcomeEmail(userId, email, verified, locale, siteURL); err != nil {
t.Log(err)
t.Fatal("Should send change username email")
} else {
@@ -324,7 +330,7 @@ func TestSendWelcomeEmail(t *testing.T) {
verified = false
var expectedVerifyEmail string = "Please verify your email address by clicking below."
- if err := SendWelcomeEmail(userId, email, verified, locale, siteURL); err != nil {
+ if err := a.SendWelcomeEmail(userId, email, verified, locale, siteURL); err != nil {
t.Log(err)
t.Fatal("Should send change username email")
} else {
@@ -367,10 +373,11 @@ func TestSendWelcomeEmail(t *testing.T) {
}
func TestSendPasswordChangeEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var email string = "test@example.com"
var locale string = "en"
@@ -417,10 +424,11 @@ func TestSendPasswordChangeEmail(t *testing.T) {
}
func TestSendMfaChangeEmail(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- Setup()
+ a.Setup()
var email string = "test@example.com"
var locale string = "en"
@@ -504,10 +512,11 @@ func TestSendMfaChangeEmail(t *testing.T) {
}
func TestSendInviteEmails(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- th := Setup().InitBasic()
+ th := a.Setup().InitBasic()
var email1 string = "test1@example.com"
var email2 string = "test2@example.com"
@@ -582,10 +591,11 @@ func TestSendInviteEmails(t *testing.T) {
}
func TestSendPasswordReset(t *testing.T) {
+ a := Global()
if testing.Short() {
t.SkipNow()
}
- th := Setup().InitBasic()
+ th := a.Setup().InitBasic()
var siteURL string = "http://test.mattermost.io"
// var locale string = "en"
@@ -595,7 +605,7 @@ func TestSendPasswordReset(t *testing.T) {
//Delete all the messages before check the sample email
utils.DeleteMailBox(th.BasicUser.Email)
- if _, err := SendPasswordReset(th.BasicUser.Email, siteURL); err != nil {
+ if _, err := a.SendPasswordReset(th.BasicUser.Email, siteURL); err != nil {
t.Log(err)
t.Fatal("Should send change username email")
} else {
@@ -620,7 +630,7 @@ func TestSendPasswordReset(t *testing.T) {
loc += 6
recoveryTokenString := resultsEmail.Body.Text[loc : loc+model.TOKEN_SIZE]
var recoveryToken *model.Token
- if result := <-Srv.Store.Token().GetByToken(recoveryTokenString); result.Err != nil {
+ if result := <-a.Srv.Store.Token().GetByToken(recoveryTokenString); result.Err != nil {
t.Log(recoveryTokenString)
t.Fatal(result.Err)
} else {
diff --git a/app/emoji.go b/app/emoji.go
index 0e0e8e53a..b07889f8d 100644
--- a/app/emoji.go
+++ b/app/emoji.go
@@ -29,7 +29,7 @@ const (
MaxEmojiHeight = 128
)
-func CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *multipart.Form) (*model.Emoji, *model.AppError) {
+func (a *App) CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *multipart.Form) (*model.Emoji, *model.AppError) {
// wipe the emoji id so that existing emojis can't get overwritten
emoji.Id = ""
@@ -44,7 +44,7 @@ func CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *m
return nil, model.NewAppError("createEmoji", "api.emoji.create.other_user.app_error", nil, "", http.StatusForbidden)
}
- if result := <-Srv.Store.Emoji().GetByName(emoji.Name); result.Err == nil && result.Data != nil {
+ if result := <-a.Srv.Store.Emoji().GetByName(emoji.Name); result.Err == nil && result.Data != nil {
return nil, model.NewAppError("createEmoji", "api.emoji.create.duplicate.app_error", nil, "", http.StatusBadRequest)
}
@@ -55,7 +55,7 @@ func CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *m
return nil, err
}
- if result := <-Srv.Store.Emoji().Save(emoji); result.Err != nil {
+ if result := <-a.Srv.Store.Emoji().Save(emoji); result.Err != nil {
return nil, result.Err
} else {
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_EMOJI_ADDED, "", "", "", nil)
@@ -66,8 +66,8 @@ func CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *m
}
}
-func GetEmojiList(page, perPage int) ([]*model.Emoji, *model.AppError) {
- if result := <-Srv.Store.Emoji().GetList(page*perPage, perPage); result.Err != nil {
+func (a *App) GetEmojiList(page, perPage int) ([]*model.Emoji, *model.AppError) {
+ if result := <-a.Srv.Store.Emoji().GetList(page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Emoji), nil
@@ -126,17 +126,17 @@ func UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppErro
return nil
}
-func DeleteEmoji(emoji *model.Emoji) *model.AppError {
- if err := (<-Srv.Store.Emoji().Delete(emoji.Id, model.GetMillis())).Err; err != nil {
+func (a *App) DeleteEmoji(emoji *model.Emoji) *model.AppError {
+ if err := (<-a.Srv.Store.Emoji().Delete(emoji.Id, model.GetMillis())).Err; err != nil {
return err
}
deleteEmojiImage(emoji.Id)
- deleteReactionsForEmoji(emoji.Name)
+ a.deleteReactionsForEmoji(emoji.Name)
return nil
}
-func GetEmoji(emojiId string) (*model.Emoji, *model.AppError) {
+func (a *App) GetEmoji(emojiId string) (*model.Emoji, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableCustomEmoji {
return nil, model.NewAppError("deleteEmoji", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented)
}
@@ -145,15 +145,15 @@ func GetEmoji(emojiId string) (*model.Emoji, *model.AppError) {
return nil, model.NewAppError("deleteImage", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Emoji().Get(emojiId, false); result.Err != nil {
+ if result := <-a.Srv.Store.Emoji().Get(emojiId, false); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Emoji), nil
}
}
-func GetEmojiImage(emojiId string) (imageByte []byte, imageType string, err *model.AppError) {
- if result := <-Srv.Store.Emoji().Get(emojiId, true); result.Err != nil {
+func (a *App) GetEmojiImage(emojiId string) (imageByte []byte, imageType string, err *model.AppError) {
+ if result := <-a.Srv.Store.Emoji().Get(emojiId, true); result.Err != nil {
return nil, "", result.Err
} else {
var img []byte
@@ -223,8 +223,8 @@ func deleteEmojiImage(id string) {
}
}
-func deleteReactionsForEmoji(emojiName string) {
- if result := <-Srv.Store.Reaction().DeleteAllWithEmojiName(emojiName); result.Err != nil {
+func (a *App) deleteReactionsForEmoji(emojiName string) {
+ if result := <-a.Srv.Store.Reaction().DeleteAllWithEmojiName(emojiName); result.Err != nil {
l4g.Warn(utils.T("api.emoji.delete.delete_reactions.app_error"), emojiName)
l4g.Warn(result.Err)
}
diff --git a/app/file.go b/app/file.go
index 3c2a2b3e4..32cb40323 100644
--- a/app/file.go
+++ b/app/file.go
@@ -107,13 +107,13 @@ func GetInfoForFilename(post *model.Post, teamId string, filename string) *model
return info
}
-func FindTeamIdForFilename(post *model.Post, filename string) string {
+func (a *App) FindTeamIdForFilename(post *model.Post, filename string) string {
split := strings.SplitN(filename, "/", 5)
id := split[3]
name, _ := url.QueryUnescape(split[4])
// This post is in a direct channel so we need to figure out what team the files are stored under.
- if result := <-Srv.Store.Team().GetTeamsByUserId(post.UserId); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetTeamsByUserId(post.UserId); result.Err != nil {
l4g.Error(utils.T("api.file.migrate_filenames_to_file_infos.teams.app_error"), post.Id, result.Err)
} else if teams := result.Data.([]*model.Team); len(teams) == 1 {
// The user has only one team so the post must've been sent from it
@@ -134,13 +134,13 @@ func FindTeamIdForFilename(post *model.Post, filename string) string {
var fileMigrationLock sync.Mutex
// Creates and stores FileInfos for a post created before the FileInfos table existed.
-func MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
+func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
if len(post.Filenames) == 0 {
l4g.Warn(utils.T("api.file.migrate_filenames_to_file_infos.no_filenames.warn"), post.Id)
return []*model.FileInfo{}
}
- cchan := Srv.Store.Channel().Get(post.ChannelId, true)
+ cchan := a.Srv.Store.Channel().Get(post.ChannelId, true)
// There's a weird bug that rarely happens where a post ends up with duplicate Filenames so remove those
filenames := utils.RemoveDuplicatesFromStringArray(post.Filenames)
@@ -157,7 +157,7 @@ func MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
var teamId string
if channel.TeamId == "" {
// This post was made in a cross-team DM channel so we need to find where its files were saved
- teamId = FindTeamIdForFilename(post, filenames[0])
+ teamId = a.FindTeamIdForFilename(post, filenames[0])
} else {
teamId = channel.TeamId
}
@@ -181,12 +181,12 @@ func MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
fileMigrationLock.Lock()
defer fileMigrationLock.Unlock()
- if result := <-Srv.Store.Post().Get(post.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Get(post.Id); result.Err != nil {
l4g.Error(utils.T("api.file.migrate_filenames_to_file_infos.get_post_again.app_error"), post.Id, result.Err)
return []*model.FileInfo{}
} else if newPost := result.Data.(*model.PostList).Posts[post.Id]; len(newPost.Filenames) != len(post.Filenames) {
// Another thread has already created FileInfos for this post, so just return those
- if result := <-Srv.Store.FileInfo().GetForPost(post.Id, true, false); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().GetForPost(post.Id, true, false); result.Err != nil {
l4g.Error(utils.T("api.file.migrate_filenames_to_file_infos.get_post_file_infos_again.app_error"), post.Id, result.Err)
return []*model.FileInfo{}
} else {
@@ -200,7 +200,7 @@ func MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
savedInfos := make([]*model.FileInfo, 0, len(infos))
fileIds := make([]string, 0, len(filenames))
for _, info := range infos {
- if result := <-Srv.Store.FileInfo().Save(info); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().Save(info); result.Err != nil {
l4g.Error(utils.T("api.file.migrate_filenames_to_file_infos.save_file_info.app_error"), post.Id, info.Id, info.Path, result.Err)
continue
}
@@ -217,7 +217,7 @@ func MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
newPost.FileIds = fileIds
// Update Posts to clear Filenames and set FileIds
- if result := <-Srv.Store.Post().Update(newPost, post); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Update(newPost, post); result.Err != nil {
l4g.Error(utils.T("api.file.migrate_filenames_to_file_infos.save_post.app_error"), post.Id, newPost.FileIds, post.Filenames, result.Err)
return []*model.FileInfo{}
} else {
@@ -243,7 +243,7 @@ func GeneratePublicLinkHash(fileId, salt string) string {
return base64.RawURLEncoding.EncodeToString(hash.Sum(nil))
}
-func UploadFiles(teamId string, channelId string, userId string, fileHeaders []*multipart.FileHeader, clientIds []string) (*model.FileUploadResponse, *model.AppError) {
+func (a *App) UploadFiles(teamId string, channelId string, userId string, fileHeaders []*multipart.FileHeader, clientIds []string) (*model.FileUploadResponse, *model.AppError) {
if len(*utils.Cfg.FileSettings.DriverName) == 0 {
return nil, model.NewAppError("uploadFile", "api.file.upload_file.storage.app_error", nil, "", http.StatusNotImplemented)
}
@@ -268,7 +268,7 @@ func UploadFiles(teamId string, channelId string, userId string, fileHeaders []*
io.Copy(buf, file)
data := buf.Bytes()
- info, err := DoUploadFile(time.Now(), teamId, channelId, userId, fileHeader.Filename, data)
+ info, err := a.DoUploadFile(time.Now(), teamId, channelId, userId, fileHeader.Filename, data)
if err != nil {
return nil, err
}
@@ -291,7 +291,7 @@ func UploadFiles(teamId string, channelId string, userId string, fileHeaders []*
return resStruct, nil
}
-func DoUploadFile(now time.Time, teamId string, channelId string, userId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) {
+func (a *App) DoUploadFile(now time.Time, teamId string, channelId string, userId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) {
filename := filepath.Base(rawFilename)
info, err := model.GetInfoForBytes(filename, data)
@@ -323,7 +323,7 @@ func DoUploadFile(now time.Time, teamId string, channelId string, userId string,
return nil, err
}
- if result := <-Srv.Store.FileInfo().Save(info); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().Save(info); result.Err != nil {
return nil, result.Err
}
@@ -464,8 +464,8 @@ func generatePreviewImage(img image.Image, previewPath string, width int) {
}
}
-func GetFileInfo(fileId string) (*model.FileInfo, *model.AppError) {
- if result := <-Srv.Store.FileInfo().Get(fileId); result.Err != nil {
+func (a *App) GetFileInfo(fileId string) (*model.FileInfo, *model.AppError) {
+ if result := <-a.Srv.Store.FileInfo().Get(fileId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.FileInfo), nil
diff --git a/app/file_test.go b/app/file_test.go
index 962661039..52f42707c 100644
--- a/app/file_test.go
+++ b/app/file_test.go
@@ -36,7 +36,8 @@ func TestGeneratePublicLinkHash(t *testing.T) {
}
func TestDoUploadFile(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
teamId := model.NewId()
channelId := model.NewId()
@@ -44,12 +45,12 @@ func TestDoUploadFile(t *testing.T) {
filename := "test"
data := []byte("abcd")
- info1, err := DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
+ info1, err := a.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
if err != nil {
t.Fatal(err)
} else {
defer func() {
- <-Srv.Store.FileInfo().PermanentDelete(info1.Id)
+ <-a.Srv.Store.FileInfo().PermanentDelete(info1.Id)
utils.RemoveFile(info1.Path)
}()
}
@@ -58,12 +59,12 @@ func TestDoUploadFile(t *testing.T) {
t.Fatal("stored file at incorrect path", info1.Path)
}
- info2, err := DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
+ info2, err := a.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
if err != nil {
t.Fatal(err)
} else {
defer func() {
- <-Srv.Store.FileInfo().PermanentDelete(info2.Id)
+ <-a.Srv.Store.FileInfo().PermanentDelete(info2.Id)
utils.RemoveFile(info2.Path)
}()
}
@@ -72,12 +73,12 @@ func TestDoUploadFile(t *testing.T) {
t.Fatal("stored file at incorrect path", info2.Path)
}
- info3, err := DoUploadFile(time.Date(2008, 3, 5, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
+ info3, err := a.DoUploadFile(time.Date(2008, 3, 5, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
if err != nil {
t.Fatal(err)
} else {
defer func() {
- <-Srv.Store.FileInfo().PermanentDelete(info3.Id)
+ <-a.Srv.Store.FileInfo().PermanentDelete(info3.Id)
utils.RemoveFile(info3.Path)
}()
}
diff --git a/app/import.go b/app/import.go
index c6afd1634..3c952b9c1 100644
--- a/app/import.go
+++ b/app/import.go
@@ -155,16 +155,16 @@ type LineImportWorkerError struct {
// still enforced.
//
-func bulkImportWorker(dryRun bool, wg *sync.WaitGroup, lines <-chan LineImportWorkerData, errors chan<- LineImportWorkerError) {
+func (a *App) bulkImportWorker(dryRun bool, wg *sync.WaitGroup, lines <-chan LineImportWorkerData, errors chan<- LineImportWorkerError) {
for line := range lines {
- if err := ImportLine(line.LineImportData, dryRun); err != nil {
+ if err := a.ImportLine(line.LineImportData, dryRun); err != nil {
errors <- LineImportWorkerError{err, line.LineNumber}
}
}
wg.Done()
}
-func BulkImport(fileReader io.Reader, dryRun bool, workers int) (*model.AppError, int) {
+func (a *App) BulkImport(fileReader io.Reader, dryRun bool, workers int) (*model.AppError, int) {
scanner := bufio.NewScanner(fileReader)
lineNumber := 0
@@ -209,7 +209,7 @@ func BulkImport(fileReader io.Reader, dryRun bool, workers int) (*model.AppError
linesChan = make(chan LineImportWorkerData, workers)
for i := 0; i < workers; i++ {
wg.Add(1)
- go bulkImportWorker(dryRun, &wg, linesChan, errorsChan)
+ go a.bulkImportWorker(dryRun, &wg, linesChan, errorsChan)
}
}
@@ -249,50 +249,50 @@ func processImportDataFileVersionLine(line LineImportData) (int, *model.AppError
return *line.Version, nil
}
-func ImportLine(line LineImportData, dryRun bool) *model.AppError {
+func (a *App) ImportLine(line LineImportData, dryRun bool) *model.AppError {
switch {
case line.Type == "team":
if line.Team == nil {
return model.NewAppError("BulkImport", "app.import.import_line.null_team.error", nil, "", http.StatusBadRequest)
} else {
- return ImportTeam(line.Team, dryRun)
+ return a.ImportTeam(line.Team, dryRun)
}
case line.Type == "channel":
if line.Channel == nil {
return model.NewAppError("BulkImport", "app.import.import_line.null_channel.error", nil, "", http.StatusBadRequest)
} else {
- return ImportChannel(line.Channel, dryRun)
+ return a.ImportChannel(line.Channel, dryRun)
}
case line.Type == "user":
if line.User == nil {
return model.NewAppError("BulkImport", "app.import.import_line.null_user.error", nil, "", http.StatusBadRequest)
} else {
- return ImportUser(line.User, dryRun)
+ return a.ImportUser(line.User, dryRun)
}
case line.Type == "post":
if line.Post == nil {
return model.NewAppError("BulkImport", "app.import.import_line.null_post.error", nil, "", http.StatusBadRequest)
} else {
- return ImportPost(line.Post, dryRun)
+ return a.ImportPost(line.Post, dryRun)
}
case line.Type == "direct_channel":
if line.DirectChannel == nil {
return model.NewAppError("BulkImport", "app.import.import_line.null_direct_channel.error", nil, "", http.StatusBadRequest)
} else {
- return ImportDirectChannel(line.DirectChannel, dryRun)
+ return a.ImportDirectChannel(line.DirectChannel, dryRun)
}
case line.Type == "direct_post":
if line.DirectPost == nil {
return model.NewAppError("BulkImport", "app.import.import_line.null_direct_post.error", nil, "", http.StatusBadRequest)
} else {
- return ImportDirectPost(line.DirectPost, dryRun)
+ return a.ImportDirectPost(line.DirectPost, dryRun)
}
default:
return model.NewAppError("BulkImport", "app.import.import_line.unknown_line_type.error", map[string]interface{}{"Type": line.Type}, "", http.StatusBadRequest)
}
}
-func ImportTeam(data *TeamImportData, dryRun bool) *model.AppError {
+func (a *App) ImportTeam(data *TeamImportData, dryRun bool) *model.AppError {
if err := validateTeamImportData(data); err != nil {
return err
}
@@ -303,7 +303,7 @@ func ImportTeam(data *TeamImportData, dryRun bool) *model.AppError {
}
var team *model.Team
- if result := <-Srv.Store.Team().GetByName(*data.Name); result.Err == nil {
+ if result := <-a.Srv.Store.Team().GetByName(*data.Name); result.Err == nil {
team = result.Data.(*model.Team)
} else {
team = &model.Team{}
@@ -322,11 +322,11 @@ func ImportTeam(data *TeamImportData, dryRun bool) *model.AppError {
}
if team.Id == "" {
- if _, err := CreateTeam(team); err != nil {
+ if _, err := a.CreateTeam(team); err != nil {
return err
}
} else {
- if _, err := UpdateTeam(team); err != nil {
+ if _, err := a.UpdateTeam(team); err != nil {
return err
}
}
@@ -365,7 +365,7 @@ func validateTeamImportData(data *TeamImportData) *model.AppError {
return nil
}
-func ImportChannel(data *ChannelImportData, dryRun bool) *model.AppError {
+func (a *App) ImportChannel(data *ChannelImportData, dryRun bool) *model.AppError {
if err := validateChannelImportData(data); err != nil {
return err
}
@@ -376,14 +376,14 @@ func ImportChannel(data *ChannelImportData, dryRun bool) *model.AppError {
}
var team *model.Team
- if result := <-Srv.Store.Team().GetByName(*data.Team); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetByName(*data.Team); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_channel.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, "", http.StatusBadRequest)
} else {
team = result.Data.(*model.Team)
}
var channel *model.Channel
- if result := <-Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, *data.Name, true); result.Err == nil {
+ if result := <-a.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, *data.Name, true); result.Err == nil {
channel = result.Data.(*model.Channel)
} else {
channel = &model.Channel{}
@@ -403,11 +403,11 @@ func ImportChannel(data *ChannelImportData, dryRun bool) *model.AppError {
}
if channel.Id == "" {
- if _, err := CreateChannel(channel, false); err != nil {
+ if _, err := a.CreateChannel(channel, false); err != nil {
return err
}
} else {
- if _, err := UpdateChannel(channel); err != nil {
+ if _, err := a.UpdateChannel(channel); err != nil {
return err
}
}
@@ -452,7 +452,7 @@ func validateChannelImportData(data *ChannelImportData) *model.AppError {
return nil
}
-func ImportUser(data *UserImportData, dryRun bool) *model.AppError {
+func (a *App) ImportUser(data *UserImportData, dryRun bool) *model.AppError {
if err := validateUserImportData(data); err != nil {
return err
}
@@ -470,7 +470,7 @@ func ImportUser(data *UserImportData, dryRun bool) *model.AppError {
hasUserEmailVerifiedChanged := false
var user *model.User
- if result := <-Srv.Store.User().GetByUsername(*data.Username); result.Err == nil {
+ if result := <-a.Srv.Store.User().GetByUsername(*data.Username); result.Err == nil {
user = result.Data.(*model.User)
} else {
user = &model.User{}
@@ -645,39 +645,39 @@ func ImportUser(data *UserImportData, dryRun bool) *model.AppError {
}
if user.Id == "" {
- if _, err := createUser(user); err != nil {
+ if _, err := a.createUser(user); err != nil {
return err
}
} else {
if hasUserChanged {
- if _, err := UpdateUser(user, false); err != nil {
+ if _, err := a.UpdateUser(user, false); err != nil {
return err
}
}
if hasUserRolesChanged {
- if _, err := UpdateUserRoles(user.Id, roles); err != nil {
+ if _, err := a.UpdateUserRoles(user.Id, roles); err != nil {
return err
}
}
if hasNotifyPropsChanged {
- if _, err := UpdateUserNotifyProps(user.Id, user.NotifyProps); err != nil {
+ if _, err := a.UpdateUserNotifyProps(user.Id, user.NotifyProps); err != nil {
return err
}
}
if len(password) > 0 {
- if err := UpdatePassword(user, password); err != nil {
+ if err := a.UpdatePassword(user, password); err != nil {
return err
}
} else {
if hasUserAuthDataChanged {
- if res := <-Srv.Store.User().UpdateAuthData(user.Id, authService, authData, user.Email, false); res.Err != nil {
+ if res := <-a.Srv.Store.User().UpdateAuthData(user.Id, authService, authData, user.Email, false); res.Err != nil {
return res.Err
}
}
}
if emailVerified {
if hasUserEmailVerifiedChanged {
- if err := VerifyUserEmail(user.Id); err != nil {
+ if err := a.VerifyUserEmail(user.Id); err != nil {
return err
}
}
@@ -742,26 +742,26 @@ func ImportUser(data *UserImportData, dryRun bool) *model.AppError {
}
if len(preferences) > 0 {
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_user.save_preferences.error", nil, "", http.StatusInternalServerError)
}
}
- return ImportUserTeams(*data.Username, data.Teams)
+ return a.ImportUserTeams(*data.Username, data.Teams)
}
-func ImportUserTeams(username string, data *[]UserTeamImportData) *model.AppError {
+func (a *App) ImportUserTeams(username string, data *[]UserTeamImportData) *model.AppError {
if data == nil {
return nil
}
- user, err := GetUserByUsername(username)
+ user, err := a.GetUserByUsername(username)
if err != nil {
return err
}
for _, tdata := range *data {
- team, err := GetTeamByName(*tdata.Name)
+ team, err := a.GetTeamByName(*tdata.Name)
if err != nil {
return err
}
@@ -773,22 +773,22 @@ func ImportUserTeams(username string, data *[]UserTeamImportData) *model.AppErro
roles = *tdata.Roles
}
- if _, err := joinUserToTeam(team, user); err != nil {
+ if _, err := a.joinUserToTeam(team, user); err != nil {
return err
}
var member *model.TeamMember
- if member, err = GetTeamMember(team.Id, user.Id); err != nil {
+ if member, err = a.GetTeamMember(team.Id, user.Id); err != nil {
return err
} else {
if member.Roles != roles {
- if _, err := UpdateTeamMemberRoles(team.Id, user.Id, roles); err != nil {
+ if _, err := a.UpdateTeamMemberRoles(team.Id, user.Id, roles); err != nil {
return err
}
}
}
- if err := ImportUserChannels(user, team, member, tdata.Channels); err != nil {
+ if err := a.ImportUserChannels(user, team, member, tdata.Channels); err != nil {
return err
}
}
@@ -796,7 +796,7 @@ func ImportUserTeams(username string, data *[]UserTeamImportData) *model.AppErro
return nil
}
-func ImportUserChannels(user *model.User, team *model.Team, teamMember *model.TeamMember, data *[]UserChannelImportData) *model.AppError {
+func (a *App) ImportUserChannels(user *model.User, team *model.Team, teamMember *model.TeamMember, data *[]UserChannelImportData) *model.AppError {
if data == nil {
return nil
}
@@ -805,7 +805,7 @@ func ImportUserChannels(user *model.User, team *model.Team, teamMember *model.Te
// Loop through all channels.
for _, cdata := range *data {
- channel, err := GetChannelByName(*cdata.Name, team.Id)
+ channel, err := a.GetChannelByName(*cdata.Name, team.Id)
if err != nil {
return err
}
@@ -818,16 +818,16 @@ func ImportUserChannels(user *model.User, team *model.Team, teamMember *model.Te
}
var member *model.ChannelMember
- member, err = GetChannelMember(channel.Id, user.Id)
+ member, err = a.GetChannelMember(channel.Id, user.Id)
if err != nil {
- member, err = addUserToChannel(user, channel, teamMember)
+ member, err = a.addUserToChannel(user, channel, teamMember)
if err != nil {
return err
}
}
if member.Roles != roles {
- if _, err := UpdateChannelMemberRoles(channel.Id, user.Id, roles); err != nil {
+ if _, err := a.UpdateChannelMemberRoles(channel.Id, user.Id, roles); err != nil {
return err
}
}
@@ -847,7 +847,7 @@ func ImportUserChannels(user *model.User, team *model.Team, teamMember *model.Te
notifyProps[model.MARK_UNREAD_NOTIFY_PROP] = *cdata.NotifyProps.MarkUnread
}
- if _, err := UpdateChannelMemberNotifyProps(notifyProps, channel.Id, user.Id); err != nil {
+ if _, err := a.UpdateChannelMemberNotifyProps(notifyProps, channel.Id, user.Id); err != nil {
return err
}
}
@@ -863,7 +863,7 @@ func ImportUserChannels(user *model.User, team *model.Team, teamMember *model.Te
}
if len(preferences) > 0 {
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_user_channels.save_preferences.error", nil, "", http.StatusInternalServerError)
}
}
@@ -1022,7 +1022,7 @@ func validateUserChannelsImportData(data *[]UserChannelImportData) *model.AppErr
return nil
}
-func ImportPost(data *PostImportData, dryRun bool) *model.AppError {
+func (a *App) ImportPost(data *PostImportData, dryRun bool) *model.AppError {
if err := validatePostImportData(data); err != nil {
return err
}
@@ -1033,21 +1033,21 @@ func ImportPost(data *PostImportData, dryRun bool) *model.AppError {
}
var team *model.Team
- if result := <-Srv.Store.Team().GetByName(*data.Team); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetByName(*data.Team); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, "", http.StatusBadRequest)
} else {
team = result.Data.(*model.Team)
}
var channel *model.Channel
- if result := <-Srv.Store.Channel().GetByName(team.Id, *data.Channel, false); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().GetByName(team.Id, *data.Channel, false); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.channel_not_found.error", map[string]interface{}{"ChannelName": *data.Channel}, "", http.StatusBadRequest)
} else {
channel = result.Data.(*model.Channel)
}
var user *model.User
- if result := <-Srv.Store.User().GetByUsername(*data.User); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetByUsername(*data.User); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": *data.User}, "", http.StatusBadRequest)
} else {
user = result.Data.(*model.User)
@@ -1055,7 +1055,7 @@ func ImportPost(data *PostImportData, dryRun bool) *model.AppError {
// Check if this post already exists.
var posts []*model.Post
- if result := <-Srv.Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt); result.Err != nil {
return result.Err
} else {
posts = result.Data.([]*model.Post)
@@ -1081,11 +1081,11 @@ func ImportPost(data *PostImportData, dryRun bool) *model.AppError {
post.Hashtags, _ = model.ParseHashtags(post.Message)
if post.Id == "" {
- if result := <-Srv.Store.Post().Save(post); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Save(post); result.Err != nil {
return result.Err
}
} else {
- if result := <-Srv.Store.Post().Overwrite(post); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Overwrite(post); result.Err != nil {
return result.Err
}
}
@@ -1096,7 +1096,7 @@ func ImportPost(data *PostImportData, dryRun bool) *model.AppError {
for _, username := range *data.FlaggedBy {
var user *model.User
- if result := <-Srv.Store.User().GetByUsername(username); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetByUsername(username); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": username}, "", http.StatusBadRequest)
} else {
user = result.Data.(*model.User)
@@ -1111,7 +1111,7 @@ func ImportPost(data *PostImportData, dryRun bool) *model.AppError {
}
if len(preferences) > 0 {
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.save_preferences.error", nil, "", http.StatusInternalServerError)
}
}
@@ -1148,7 +1148,7 @@ func validatePostImportData(data *PostImportData) *model.AppError {
return nil
}
-func ImportDirectChannel(data *DirectChannelImportData, dryRun bool) *model.AppError {
+func (a *App) ImportDirectChannel(data *DirectChannelImportData, dryRun bool) *model.AppError {
if err := validateDirectChannelImportData(data); err != nil {
return err
}
@@ -1161,7 +1161,7 @@ func ImportDirectChannel(data *DirectChannelImportData, dryRun bool) *model.AppE
var userIds []string
userMap := make(map[string]string)
for _, username := range *data.Members {
- if result := <-Srv.Store.User().GetByUsername(username); result.Err == nil {
+ if result := <-a.Srv.Store.User().GetByUsername(username); result.Err == nil {
user := result.Data.(*model.User)
userIds = append(userIds, user.Id)
userMap[username] = user.Id
@@ -1173,14 +1173,14 @@ func ImportDirectChannel(data *DirectChannelImportData, dryRun bool) *model.AppE
var channel *model.Channel
if len(userIds) == 2 {
- ch, err := createDirectChannel(userIds[0], userIds[1])
+ ch, err := a.createDirectChannel(userIds[0], userIds[1])
if err != nil && err.Id != store.CHANNEL_EXISTS_ERROR {
return model.NewAppError("BulkImport", "app.import.import_direct_channel.create_direct_channel.error", nil, "", http.StatusBadRequest)
} else {
channel = ch
}
} else {
- ch, err := createGroupChannel(userIds, userIds[0])
+ ch, err := a.createGroupChannel(userIds, userIds[0])
if err != nil && err.Id != store.CHANNEL_EXISTS_ERROR {
return model.NewAppError("BulkImport", "app.import.import_direct_channel.create_group_channel.error", nil, "", http.StatusBadRequest)
} else {
@@ -1210,14 +1210,14 @@ func ImportDirectChannel(data *DirectChannelImportData, dryRun bool) *model.AppE
}
}
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return result.Err
}
if data.Header != nil {
channel.Header = *data.Header
- if result := <-Srv.Store.Channel().Update(channel); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().Update(channel); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_channel.update_header_failed.error", nil, "", http.StatusBadRequest)
}
}
@@ -1260,7 +1260,7 @@ func validateDirectChannelImportData(data *DirectChannelImportData) *model.AppEr
return nil
}
-func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
+func (a *App) ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
if err := validateDirectPostImportData(data); err != nil {
return err
}
@@ -1272,7 +1272,7 @@ func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
var userIds []string
for _, username := range *data.ChannelMembers {
- if result := <-Srv.Store.User().GetByUsername(username); result.Err == nil {
+ if result := <-a.Srv.Store.User().GetByUsername(username); result.Err == nil {
user := result.Data.(*model.User)
userIds = append(userIds, user.Id)
} else {
@@ -1282,14 +1282,14 @@ func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
var channel *model.Channel
if len(userIds) == 2 {
- ch, err := createDirectChannel(userIds[0], userIds[1])
+ ch, err := a.createDirectChannel(userIds[0], userIds[1])
if err != nil && err.Id != store.CHANNEL_EXISTS_ERROR {
return model.NewAppError("BulkImport", "app.import.import_direct_post.create_direct_channel.error", nil, "", http.StatusBadRequest)
} else {
channel = ch
}
} else {
- ch, err := createGroupChannel(userIds, userIds[0])
+ ch, err := a.createGroupChannel(userIds, userIds[0])
if err != nil && err.Id != store.CHANNEL_EXISTS_ERROR {
return model.NewAppError("BulkImport", "app.import.import_direct_post.create_group_channel.error", nil, "", http.StatusBadRequest)
} else {
@@ -1298,7 +1298,7 @@ func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
}
var user *model.User
- if result := <-Srv.Store.User().GetByUsername(*data.User); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetByUsername(*data.User); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_post.user_not_found.error", map[string]interface{}{"Username": *data.User}, "", http.StatusBadRequest)
} else {
user = result.Data.(*model.User)
@@ -1306,7 +1306,7 @@ func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
// Check if this post already exists.
var posts []*model.Post
- if result := <-Srv.Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt); result.Err != nil {
return result.Err
} else {
posts = result.Data.([]*model.Post)
@@ -1332,11 +1332,11 @@ func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
post.Hashtags, _ = model.ParseHashtags(post.Message)
if post.Id == "" {
- if result := <-Srv.Store.Post().Save(post); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Save(post); result.Err != nil {
return result.Err
}
} else {
- if result := <-Srv.Store.Post().Overwrite(post); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Overwrite(post); result.Err != nil {
return result.Err
}
}
@@ -1347,7 +1347,7 @@ func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
for _, username := range *data.FlaggedBy {
var user *model.User
- if result := <-Srv.Store.User().GetByUsername(username); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetByUsername(username); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_post.user_not_found.error", map[string]interface{}{"Username": username}, "", http.StatusBadRequest)
} else {
user = result.Data.(*model.User)
@@ -1362,7 +1362,7 @@ func ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.AppError {
}
if len(preferences) > 0 {
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_post.save_preferences.error", nil, "", http.StatusInternalServerError)
}
}
@@ -1424,7 +1424,7 @@ func validateDirectPostImportData(data *DirectPostImportData) *model.AppError {
// some of the usual checks. (IsValid is still run)
//
-func OldImportPost(post *model.Post) {
+func (a *App) OldImportPost(post *model.Post) {
// Workaround for empty messages, which may be the case if they are webhook posts.
firstIteration := true
for messageRuneCount := utf8.RuneCountInString(post.Message); messageRuneCount > 0 || firstIteration; messageRuneCount = utf8.RuneCountInString(post.Message) {
@@ -1439,12 +1439,12 @@ func OldImportPost(post *model.Post) {
post.Hashtags, _ = model.ParseHashtags(post.Message)
- if result := <-Srv.Store.Post().Save(post); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Save(post); result.Err != nil {
l4g.Debug(utils.T("api.import.import_post.saving.debug"), post.UserId, post.Message)
}
for _, fileId := range post.FileIds {
- if result := <-Srv.Store.FileInfo().AttachToPost(fileId, post.Id); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().AttachToPost(fileId, post.Id); result.Err != nil {
l4g.Error(utils.T("api.import.import_post.attach_files.error"), post.Id, post.FileIds, result.Err)
}
}
@@ -1455,22 +1455,22 @@ func OldImportPost(post *model.Post) {
}
}
-func OldImportUser(team *model.Team, user *model.User) *model.User {
+func (a *App) OldImportUser(team *model.Team, user *model.User) *model.User {
user.MakeNonNil()
user.Roles = model.ROLE_SYSTEM_USER.Id
- if result := <-Srv.Store.User().Save(user); result.Err != nil {
+ if result := <-a.Srv.Store.User().Save(user); result.Err != nil {
l4g.Error(utils.T("api.import.import_user.saving.error"), result.Err)
return nil
} else {
ruser := result.Data.(*model.User)
- if cresult := <-Srv.Store.User().VerifyEmail(ruser.Id); cresult.Err != nil {
+ if cresult := <-a.Srv.Store.User().VerifyEmail(ruser.Id); cresult.Err != nil {
l4g.Error(utils.T("api.import.import_user.set_email.error"), cresult.Err)
}
- if err := JoinUserToTeam(team, user, ""); err != nil {
+ if err := a.JoinUserToTeam(team, user, ""); err != nil {
l4g.Error(utils.T("api.import.import_user.join_team.error"), err)
}
@@ -1478,8 +1478,8 @@ func OldImportUser(team *model.Team, user *model.User) *model.User {
}
}
-func OldImportChannel(channel *model.Channel) *model.Channel {
- if result := <-Srv.Store.Channel().Save(channel); result.Err != nil {
+func (a *App) OldImportChannel(channel *model.Channel) *model.Channel {
+ if result := <-a.Srv.Store.Channel().Save(channel); result.Err != nil {
return nil
} else {
sc := result.Data.(*model.Channel)
@@ -1488,12 +1488,12 @@ func OldImportChannel(channel *model.Channel) *model.Channel {
}
}
-func OldImportFile(timestamp time.Time, file io.Reader, teamId string, channelId string, userId string, fileName string) (*model.FileInfo, error) {
+func (a *App) OldImportFile(timestamp time.Time, file io.Reader, teamId string, channelId string, userId string, fileName string) (*model.FileInfo, error) {
buf := bytes.NewBuffer(nil)
io.Copy(buf, file)
data := buf.Bytes()
- fileInfo, err := DoUploadFile(timestamp, teamId, channelId, userId, fileName, data)
+ fileInfo, err := a.DoUploadFile(timestamp, teamId, channelId, userId, fileName, data)
if err != nil {
return nil, err
}
@@ -1507,7 +1507,7 @@ func OldImportFile(timestamp time.Time, file io.Reader, teamId string, channelId
return fileInfo, nil
}
-func OldImportIncomingWebhookPost(post *model.Post, props model.StringInterface) {
+func (a *App) OldImportIncomingWebhookPost(post *model.Post, props model.StringInterface) {
linkWithTextRegex := regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`)
post.Message = linkWithTextRegex.ReplaceAllString(post.Message, "[${2}](${1})")
@@ -1529,5 +1529,5 @@ func OldImportIncomingWebhookPost(post *model.Post, props model.StringInterface)
}
}
- OldImportPost(post)
+ a.OldImportPost(post)
}
diff --git a/app/import_test.go b/app/import_test.go
index 70a36f272..59e767706 100644
--- a/app/import_test.go
+++ b/app/import_test.go
@@ -30,7 +30,8 @@ func ptrBool(b bool) *bool {
}
func checkPreference(t *testing.T, userId string, category string, name string, value string) {
- if res := <-Srv.Store.Preference().GetCategory(userId, category); res.Err != nil {
+ a := Global()
+ if res := <-a.Srv.Store.Preference().GetCategory(userId, category); res.Err != nil {
debug.PrintStack()
t.Fatalf("Failed to get preferences for user %v with category %v", userId, category)
} else {
@@ -965,11 +966,12 @@ func TestImportValidateDirectPostImportData(t *testing.T) {
}
func TestImportImportTeam(t *testing.T) {
- _ = Setup()
+ a := Global()
+ _ = a.Setup()
// Check how many teams are in the database.
var teamsCount int64
- if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
+ if r := <-a.Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
teamsCount = r.Data.(int64)
} else {
t.Fatalf("Failed to get team count.")
@@ -984,18 +986,18 @@ func TestImportImportTeam(t *testing.T) {
}
// Try importing an invalid team in dryRun mode.
- if err := ImportTeam(&data, true); err == nil {
+ if err := a.ImportTeam(&data, true); err == nil {
t.Fatalf("Should have received an error importing an invalid team.")
}
// Do a valid team in dry-run mode.
data.Type = ptrStr("O")
- if err := ImportTeam(&data, true); err != nil {
+ if err := a.ImportTeam(&data, true); err != nil {
t.Fatalf("Received an error validating valid team.")
}
// Check that no more teams are in the DB.
- if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
+ if r := <-a.Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
if r.Data.(int64) != teamsCount {
t.Fatalf("Teams got persisted in dry run mode.")
}
@@ -1005,12 +1007,12 @@ func TestImportImportTeam(t *testing.T) {
// Do an invalid team in apply mode, check db changes.
data.Type = ptrStr("XYZ")
- if err := ImportTeam(&data, false); err == nil {
+ if err := a.ImportTeam(&data, false); err == nil {
t.Fatalf("Import should have failed on invalid team.")
}
// Check that no more teams are in the DB.
- if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
+ if r := <-a.Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
if r.Data.(int64) != teamsCount {
t.Fatalf("Invalid team got persisted.")
}
@@ -1020,12 +1022,12 @@ func TestImportImportTeam(t *testing.T) {
// Do a valid team in apply mode, check db changes.
data.Type = ptrStr("O")
- if err := ImportTeam(&data, false); err != nil {
+ if err := a.ImportTeam(&data, false); err != nil {
t.Fatalf("Received an error importing valid team.")
}
// Check that one more team is in the DB.
- if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
+ if r := <-a.Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
if r.Data.(int64)-1 != teamsCount {
t.Fatalf("Team did not get saved in apply run mode. analytics=%v teamcount=%v", r.Data.(int64), teamsCount)
}
@@ -1034,7 +1036,7 @@ func TestImportImportTeam(t *testing.T) {
}
// Get the team and check that all the fields are correct.
- if team, err := GetTeamByName(*data.Name); err != nil {
+ if team, err := a.GetTeamByName(*data.Name); err != nil {
t.Fatalf("Failed to get team from database.")
} else {
if team.DisplayName != *data.DisplayName || team.Type != *data.Type || team.Description != *data.Description || team.AllowOpenInvite != *data.AllowOpenInvite {
@@ -1050,11 +1052,11 @@ func TestImportImportTeam(t *testing.T) {
// Check that the original number of teams are again in the DB (because this query doesn't include deleted).
data.Type = ptrStr("O")
- if err := ImportTeam(&data, false); err != nil {
+ if err := a.ImportTeam(&data, false); err != nil {
t.Fatalf("Received an error importing updated valid team.")
}
- if r := <-Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
+ if r := <-a.Srv.Store.Team().AnalyticsTeamCount(); r.Err == nil {
if r.Data.(int64)-1 != teamsCount {
t.Fatalf("Team alterations did not get saved in apply run mode. analytics=%v teamcount=%v", r.Data.(int64), teamsCount)
}
@@ -1063,7 +1065,7 @@ func TestImportImportTeam(t *testing.T) {
}
// Get the team and check that all fields are correct.
- if team, err := GetTeamByName(*data.Name); err != nil {
+ if team, err := a.GetTeamByName(*data.Name); err != nil {
t.Fatalf("Failed to get team from database.")
} else {
if team.DisplayName != *data.DisplayName || team.Type != *data.Type || team.Description != *data.Description || team.AllowOpenInvite != *data.AllowOpenInvite {
@@ -1073,23 +1075,24 @@ func TestImportImportTeam(t *testing.T) {
}
func TestImportImportChannel(t *testing.T) {
- _ = Setup()
+ a := Global()
+ _ = a.Setup()
// Import a Team.
teamName := model.NewId()
- ImportTeam(&TeamImportData{
+ a.ImportTeam(&TeamImportData{
Name: &teamName,
DisplayName: ptrStr("Display Name"),
Type: ptrStr("O"),
}, false)
- team, err := GetTeamByName(teamName)
+ team, err := a.GetTeamByName(teamName)
if err != nil {
t.Fatalf("Failed to get team from database.")
}
// Check how many channels are in the database.
var channelCount int64
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
channelCount = r.Data.(int64)
} else {
t.Fatalf("Failed to get team count.")
@@ -1103,12 +1106,12 @@ func TestImportImportChannel(t *testing.T) {
Header: ptrStr("Channe Header"),
Purpose: ptrStr("Channel Purpose"),
}
- if err := ImportChannel(&data, true); err == nil {
+ if err := a.ImportChannel(&data, true); err == nil {
t.Fatalf("Expected error due to invalid name.")
}
// Check that no more channels are in the DB.
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
if r.Data.(int64) != channelCount {
t.Fatalf("Channels got persisted in dry run mode.")
}
@@ -1119,12 +1122,12 @@ func TestImportImportChannel(t *testing.T) {
// Do a valid channel with a nonexistent team in dry-run mode.
data.Name = ptrStr("channelname")
data.Team = ptrStr(model.NewId())
- if err := ImportChannel(&data, true); err != nil {
+ if err := a.ImportChannel(&data, true); err != nil {
t.Fatalf("Expected success as cannot validate channel name in dry run mode.")
}
// Check that no more channels are in the DB.
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
if r.Data.(int64) != channelCount {
t.Fatalf("Channels got persisted in dry run mode.")
}
@@ -1134,12 +1137,12 @@ func TestImportImportChannel(t *testing.T) {
// Do a valid channel in dry-run mode.
data.Team = &teamName
- if err := ImportChannel(&data, true); err != nil {
+ if err := a.ImportChannel(&data, true); err != nil {
t.Fatalf("Expected success as valid team.")
}
// Check that no more channels are in the DB.
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
if r.Data.(int64) != channelCount {
t.Fatalf("Channels got persisted in dry run mode.")
}
@@ -1149,12 +1152,12 @@ func TestImportImportChannel(t *testing.T) {
// Do an invalid channel in apply mode.
data.Name = nil
- if err := ImportChannel(&data, false); err == nil {
+ if err := a.ImportChannel(&data, false); err == nil {
t.Fatalf("Expected error due to invalid name (apply mode).")
}
// Check that no more channels are in the DB.
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
if r.Data.(int64) != channelCount {
t.Fatalf("Invalid channel got persisted in apply mode.")
}
@@ -1165,12 +1168,12 @@ func TestImportImportChannel(t *testing.T) {
// Do a valid channel in apply mode with a nonexistant team.
data.Name = ptrStr("channelname")
data.Team = ptrStr(model.NewId())
- if err := ImportChannel(&data, false); err == nil {
+ if err := a.ImportChannel(&data, false); err == nil {
t.Fatalf("Expected error due to non-existant team (apply mode).")
}
// Check that no more channels are in the DB.
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
if r.Data.(int64) != channelCount {
t.Fatalf("Invalid team channel got persisted in apply mode.")
}
@@ -1180,12 +1183,12 @@ func TestImportImportChannel(t *testing.T) {
// Do a valid channel in apply mode.
data.Team = &teamName
- if err := ImportChannel(&data, false); err != nil {
+ if err := a.ImportChannel(&data, false); err != nil {
t.Fatalf("Expected success in apply mode: %v", err.Error())
}
// Check that no more channels are in the DB.
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
if r.Data.(int64) != channelCount+1 {
t.Fatalf("Channels did not get persisted in apply mode: found %v expected %v + 1", r.Data.(int64), channelCount)
}
@@ -1194,7 +1197,7 @@ func TestImportImportChannel(t *testing.T) {
}
// Get the Channel and check all the fields are correct.
- if channel, err := GetChannelByName(*data.Name, team.Id); err != nil {
+ if channel, err := a.GetChannelByName(*data.Name, team.Id); err != nil {
t.Fatalf("Failed to get channel from database.")
} else {
if channel.Name != *data.Name || channel.DisplayName != *data.DisplayName || channel.Type != *data.Type || channel.Header != *data.Header || channel.Purpose != *data.Purpose {
@@ -1207,12 +1210,12 @@ func TestImportImportChannel(t *testing.T) {
data.Type = ptrStr(model.CHANNEL_PRIVATE)
data.Header = ptrStr("New Header")
data.Purpose = ptrStr("New Purpose")
- if err := ImportChannel(&data, false); err != nil {
+ if err := a.ImportChannel(&data, false); err != nil {
t.Fatalf("Expected success in apply mode: %v", err.Error())
}
// Check channel count the same.
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN); r.Err == nil {
if r.Data.(int64) != channelCount {
t.Fatalf("Updated channel did not get correctly persisted in apply mode.")
}
@@ -1221,7 +1224,7 @@ func TestImportImportChannel(t *testing.T) {
}
// Get the Channel and check all the fields are correct.
- if channel, err := GetChannelByName(*data.Name, team.Id); err != nil {
+ if channel, err := a.GetChannelByName(*data.Name, team.Id); err != nil {
t.Fatalf("Failed to get channel from database.")
} else {
if channel.Name != *data.Name || channel.DisplayName != *data.DisplayName || channel.Type != *data.Type || channel.Header != *data.Header || channel.Purpose != *data.Purpose {
@@ -1232,11 +1235,12 @@ func TestImportImportChannel(t *testing.T) {
}
func TestImportImportUser(t *testing.T) {
- _ = Setup()
+ a := Global()
+ _ = a.Setup()
// Check how many users are in the database.
var userCount int64
- if r := <-Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
+ if r := <-a.Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
userCount = r.Data.(int64)
} else {
t.Fatalf("Failed to get user count.")
@@ -1246,12 +1250,12 @@ func TestImportImportUser(t *testing.T) {
data := UserImportData{
Username: ptrStr(model.NewId()),
}
- if err := ImportUser(&data, true); err == nil {
+ if err := a.ImportUser(&data, true); err == nil {
t.Fatalf("Should have failed to import invalid user.")
}
// Check that no more users are in the DB.
- if r := <-Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
+ if r := <-a.Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
if r.Data.(int64) != userCount {
t.Fatalf("Unexpected number of users")
}
@@ -1264,12 +1268,12 @@ func TestImportImportUser(t *testing.T) {
Username: ptrStr(model.NewId()),
Email: ptrStr(model.NewId() + "@example.com"),
}
- if err := ImportUser(&data, true); err != nil {
+ if err := a.ImportUser(&data, true); err != nil {
t.Fatalf("Should have succeeded to import valid user.")
}
// Check that no more users are in the DB.
- if r := <-Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
+ if r := <-a.Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
if r.Data.(int64) != userCount {
t.Fatalf("Unexpected number of users")
}
@@ -1281,12 +1285,12 @@ func TestImportImportUser(t *testing.T) {
data = UserImportData{
Username: ptrStr(model.NewId()),
}
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed to import invalid user.")
}
// Check that no more users are in the DB.
- if r := <-Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
+ if r := <-a.Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
if r.Data.(int64) != userCount {
t.Fatalf("Unexpected number of users")
}
@@ -1304,12 +1308,12 @@ func TestImportImportUser(t *testing.T) {
LastName: ptrStr(model.NewId()),
Position: ptrStr(model.NewId()),
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded to import valid user.")
}
// Check that one more user is in the DB.
- if r := <-Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
+ if r := <-a.Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
if r.Data.(int64) != userCount+1 {
t.Fatalf("Unexpected number of users")
}
@@ -1318,7 +1322,7 @@ func TestImportImportUser(t *testing.T) {
}
// Get the user and check all the fields are correct.
- if user, err := GetUserByUsername(username); err != nil {
+ if user, err := a.GetUserByUsername(username); err != nil {
t.Fatalf("Failed to get user from database.")
} else {
if user.Email != *data.Email || user.Nickname != *data.Nickname || user.FirstName != *data.FirstName || user.LastName != *data.LastName || user.Position != *data.Position {
@@ -1360,12 +1364,12 @@ func TestImportImportUser(t *testing.T) {
data.Position = ptrStr(model.NewId())
data.Roles = ptrStr("system_admin system_user")
data.Locale = ptrStr("zh_CN")
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded to update valid user %v", err)
}
// Check user count the same.
- if r := <-Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
+ if r := <-a.Srv.Store.User().GetTotalUsersCount(); r.Err == nil {
if r.Data.(int64) != userCount+1 {
t.Fatalf("Unexpected number of users")
}
@@ -1374,7 +1378,7 @@ func TestImportImportUser(t *testing.T) {
}
// Get the user and check all the fields are correct.
- if user, err := GetUserByUsername(username); err != nil {
+ if user, err := a.GetUserByUsername(username); err != nil {
t.Fatalf("Failed to get user from database.")
} else {
if user.Email != *data.Email || user.Nickname != *data.Nickname || user.FirstName != *data.FirstName || user.LastName != *data.LastName || user.Position != *data.Position {
@@ -1408,22 +1412,22 @@ func TestImportImportUser(t *testing.T) {
// Check Password and AuthData together.
data.Password = ptrStr("PasswordTest")
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed to import invalid user.")
}
data.AuthData = nil
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded to update valid user %v", err)
}
data.Password = ptrStr("")
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed to import invalid user.")
}
data.Password = ptrStr(strings.Repeat("0123456789", 10))
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed to import invalid user.")
}
@@ -1431,24 +1435,24 @@ func TestImportImportUser(t *testing.T) {
// Test team and channel memberships
teamName := model.NewId()
- ImportTeam(&TeamImportData{
+ a.ImportTeam(&TeamImportData{
Name: &teamName,
DisplayName: ptrStr("Display Name"),
Type: ptrStr("O"),
}, false)
- team, err := GetTeamByName(teamName)
+ team, err := a.GetTeamByName(teamName)
if err != nil {
t.Fatalf("Failed to get team from database.")
}
channelName := model.NewId()
- ImportChannel(&ChannelImportData{
+ a.ImportChannel(&ChannelImportData{
Team: &teamName,
Name: &channelName,
DisplayName: ptrStr("Display Name"),
Type: ptrStr("O"),
}, false)
- channel, err := GetChannelByName(channelName, team.Id)
+ channel, err := a.GetChannelByName(channelName, team.Id)
if err != nil {
t.Fatalf("Failed to get channel from database.")
}
@@ -1463,13 +1467,13 @@ func TestImportImportUser(t *testing.T) {
Position: ptrStr(model.NewId()),
}
- teamMembers, err := GetTeamMembers(team.Id, 0, 1000)
+ teamMembers, err := a.GetTeamMembers(team.Id, 0, 1000)
if err != nil {
t.Fatalf("Failed to get team member count")
}
teamMemberCount := len(teamMembers)
- channelMemberCount, err := GetChannelMemberCount(channel.Id)
+ channelMemberCount, err := a.GetChannelMemberCount(channel.Id)
if err != nil {
t.Fatalf("Failed to get channel member count")
}
@@ -1485,7 +1489,7 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, true); err == nil {
+ if err := a.ImportUser(&data, true); err == nil {
t.Fatalf("Should have failed.")
}
@@ -1500,7 +1504,7 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, true); err == nil {
+ if err := a.ImportUser(&data, true); err == nil {
t.Fatalf("Should have failed.")
}
@@ -1515,7 +1519,7 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, true); err == nil {
+ if err := a.ImportUser(&data, true); err == nil {
t.Fatalf("Should have failed.")
}
@@ -1530,7 +1534,7 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, true); err != nil {
+ if err := a.ImportUser(&data, true); err != nil {
t.Fatalf("Should have succeeded.")
}
@@ -1545,18 +1549,18 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, true); err != nil {
+ if err := a.ImportUser(&data, true); err != nil {
t.Fatalf("Should have succeeded.")
}
// Check no new member objects were created because dry run mode.
- if tmc, err := GetTeamMembers(team.Id, 0, 1000); err != nil {
+ if tmc, err := a.GetTeamMembers(team.Id, 0, 1000); err != nil {
t.Fatalf("Failed to get Team Member Count")
} else if len(tmc) != teamMemberCount {
t.Fatalf("Number of team members not as expected")
}
- if cmc, err := GetChannelMemberCount(channel.Id); err != nil {
+ if cmc, err := a.GetChannelMemberCount(channel.Id); err != nil {
t.Fatalf("Failed to get Channel Member Count")
} else if cmc != channelMemberCount {
t.Fatalf("Number of channel members not as expected")
@@ -1573,7 +1577,7 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed.")
}
@@ -1588,7 +1592,7 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed.")
}
@@ -1603,18 +1607,18 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed.")
}
// Check no new member objects were created because all tests should have failed so far.
- if tmc, err := GetTeamMembers(team.Id, 0, 1000); err != nil {
+ if tmc, err := a.GetTeamMembers(team.Id, 0, 1000); err != nil {
t.Fatalf("Failed to get Team Member Count")
} else if len(tmc) != teamMemberCount {
t.Fatalf("Number of team members not as expected")
}
- if cmc, err := GetChannelMemberCount(channel.Id); err != nil {
+ if cmc, err := a.GetChannelMemberCount(channel.Id); err != nil {
t.Fatalf("Failed to get Channel Member Count")
} else if cmc != channelMemberCount {
t.Fatalf("Number of channel members not as expected")
@@ -1631,29 +1635,29 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, false); err == nil {
+ if err := a.ImportUser(&data, false); err == nil {
t.Fatalf("Should have failed.")
}
// Check only new team member object created because dry run mode.
- if tmc, err := GetTeamMembers(team.Id, 0, 1000); err != nil {
+ if tmc, err := a.GetTeamMembers(team.Id, 0, 1000); err != nil {
t.Fatalf("Failed to get Team Member Count")
} else if len(tmc) != teamMemberCount+1 {
t.Fatalf("Number of team members not as expected")
}
- if cmc, err := GetChannelMemberCount(channel.Id); err != nil {
+ if cmc, err := a.GetChannelMemberCount(channel.Id); err != nil {
t.Fatalf("Failed to get Channel Member Count")
} else if cmc != channelMemberCount {
t.Fatalf("Number of channel members not as expected")
}
// Check team member properties.
- user, err := GetUserByUsername(username)
+ user, err := a.GetUserByUsername(username)
if err != nil {
t.Fatalf("Failed to get user from database.")
}
- if teamMember, err := GetTeamMember(team.Id, user.Id); err != nil {
+ if teamMember, err := a.GetTeamMember(team.Id, user.Id); err != nil {
t.Fatalf("Failed to get team member from database.")
} else if teamMember.Roles != "team_user" {
t.Fatalf("Team member properties not as expected")
@@ -1670,25 +1674,25 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded.")
}
// Check only new channel member object created because dry run mode.
- if tmc, err := GetTeamMembers(team.Id, 0, 1000); err != nil {
+ if tmc, err := a.GetTeamMembers(team.Id, 0, 1000); err != nil {
t.Fatalf("Failed to get Team Member Count")
} else if len(tmc) != teamMemberCount+1 {
t.Fatalf("Number of team members not as expected")
}
- if cmc, err := GetChannelMemberCount(channel.Id); err != nil {
+ if cmc, err := a.GetChannelMemberCount(channel.Id); err != nil {
t.Fatalf("Failed to get Channel Member Count")
} else if cmc != channelMemberCount+1 {
t.Fatalf("Number of channel members not as expected")
}
// Check channel member properties.
- if channelMember, err := GetChannelMember(channel.Id, user.Id); err != nil {
+ if channelMember, err := a.GetChannelMember(channel.Id, user.Id); err != nil {
t.Fatalf("Failed to get channel member from database.")
} else if channelMember.Roles != "channel_user" || channelMember.NotifyProps[model.DESKTOP_NOTIFY_PROP] != "default" || channelMember.NotifyProps[model.PUSH_NOTIFY_PROP] != "default" || channelMember.NotifyProps[model.MARK_UNREAD_NOTIFY_PROP] != "all" {
t.Fatalf("Channel member properties not as expected")
@@ -1713,18 +1717,18 @@ func TestImportImportUser(t *testing.T) {
},
},
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded.")
}
// Check both member properties.
- if teamMember, err := GetTeamMember(team.Id, user.Id); err != nil {
+ if teamMember, err := a.GetTeamMember(team.Id, user.Id); err != nil {
t.Fatalf("Failed to get team member from database.")
} else if teamMember.Roles != "team_user team_admin" {
t.Fatalf("Team member properties not as expected: %v", teamMember.Roles)
}
- if channelMember, err := GetChannelMember(channel.Id, user.Id); err != nil {
+ if channelMember, err := a.GetChannelMember(channel.Id, user.Id); err != nil {
t.Fatalf("Failed to get channel member Desktop from database.")
} else if channelMember.Roles != "channel_user channel_admin" || channelMember.NotifyProps[model.DESKTOP_NOTIFY_PROP] != model.USER_NOTIFY_MENTION || channelMember.NotifyProps[model.PUSH_NOTIFY_PROP] != model.USER_NOTIFY_MENTION || channelMember.NotifyProps[model.MARK_UNREAD_NOTIFY_PROP] != model.USER_NOTIFY_MENTION {
t.Fatalf("Channel member properties not as expected")
@@ -1733,13 +1737,13 @@ func TestImportImportUser(t *testing.T) {
checkPreference(t, user.Id, model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL, channel.Id, "true")
// No more new member objects.
- if tmc, err := GetTeamMembers(team.Id, 0, 1000); err != nil {
+ if tmc, err := a.GetTeamMembers(team.Id, 0, 1000); err != nil {
t.Fatalf("Failed to get Team Member Count")
} else if len(tmc) != teamMemberCount+1 {
t.Fatalf("Number of team members not as expected")
}
- if cmc, err := GetChannelMemberCount(channel.Id); err != nil {
+ if cmc, err := a.GetChannelMemberCount(channel.Id); err != nil {
t.Fatalf("Failed to get Channel Member Count")
} else if cmc != channelMemberCount+1 {
t.Fatalf("Number of channel members not as expected")
@@ -1757,12 +1761,12 @@ func TestImportImportUser(t *testing.T) {
ChannelDisplayMode: ptrStr("centered"),
TutorialStep: ptrStr("3"),
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded.")
}
// Check their values.
- user, err = GetUserByUsername(username)
+ user, err = a.GetUserByUsername(username)
if err != nil {
t.Fatalf("Failed to get user from database.")
}
@@ -1785,7 +1789,7 @@ func TestImportImportUser(t *testing.T) {
ChannelDisplayMode: ptrStr("full"),
TutorialStep: ptrStr("2"),
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded.")
}
@@ -1809,11 +1813,11 @@ func TestImportImportUser(t *testing.T) {
CommentsTrigger: ptrStr(model.COMMENTS_NOTIFY_ROOT),
MentionKeys: ptrStr("valid,misc"),
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded.")
}
- user, err = GetUserByUsername(username)
+ user, err = a.GetUserByUsername(username)
if err != nil {
t.Fatalf("Failed to get user from database.")
}
@@ -1840,11 +1844,11 @@ func TestImportImportUser(t *testing.T) {
CommentsTrigger: ptrStr(model.COMMENTS_NOTIFY_ANY),
MentionKeys: ptrStr("misc"),
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded.")
}
- user, err = GetUserByUsername(username)
+ user, err = a.GetUserByUsername(username)
if err != nil {
t.Fatalf("Failed to get user from database.")
}
@@ -1862,8 +1866,8 @@ func TestImportImportUser(t *testing.T) {
// Check Notify Props get set on *create* user.
username = model.NewId()
data = UserImportData{
- Username: &username,
- Email: ptrStr(model.NewId() + "@example.com"),
+ Username: &username,
+ Email: ptrStr(model.NewId() + "@example.com"),
}
data.NotifyProps = &UserNotifyPropsImportData{
Desktop: ptrStr(model.USER_NOTIFY_MENTION),
@@ -1877,11 +1881,11 @@ func TestImportImportUser(t *testing.T) {
MentionKeys: ptrStr("misc"),
}
- if err := ImportUser(&data, false); err != nil {
+ if err := a.ImportUser(&data, false); err != nil {
t.Fatalf("Should have succeeded.")
}
- user, err = GetUserByUsername(username)
+ user, err = a.GetUserByUsername(username)
if err != nil {
t.Fatalf("Failed to get user from database.")
}
@@ -1898,7 +1902,8 @@ func TestImportImportUser(t *testing.T) {
}
func AssertAllPostsCount(t *testing.T, initialCount int64, change int64, teamName string) {
- if result := <-Srv.Store.Post().AnalyticsPostCount(teamName, false, false); result.Err != nil {
+ a := Global()
+ if result := <-a.Srv.Store.Post().AnalyticsPostCount(teamName, false, false); result.Err != nil {
t.Fatal(result.Err)
} else {
if initialCount+change != result.Data.(int64) {
@@ -1909,47 +1914,48 @@ func AssertAllPostsCount(t *testing.T, initialCount int64, change int64, teamNam
}
func TestImportImportPost(t *testing.T) {
- _ = Setup()
+ a := Global()
+ _ = a.Setup()
// Create a Team.
teamName := model.NewId()
- ImportTeam(&TeamImportData{
+ a.ImportTeam(&TeamImportData{
Name: &teamName,
DisplayName: ptrStr("Display Name"),
Type: ptrStr("O"),
}, false)
- team, err := GetTeamByName(teamName)
+ team, err := a.GetTeamByName(teamName)
if err != nil {
t.Fatalf("Failed to get team from database.")
}
// Create a Channel.
channelName := model.NewId()
- ImportChannel(&ChannelImportData{
+ a.ImportChannel(&ChannelImportData{
Team: &teamName,
Name: &channelName,
DisplayName: ptrStr("Display Name"),
Type: ptrStr("O"),
}, false)
- channel, err := GetChannelByName(channelName, team.Id)
+ channel, err := a.GetChannelByName(channelName, team.Id)
if err != nil {
t.Fatalf("Failed to get channel from database.")
}
// Create a user.
username := model.NewId()
- ImportUser(&UserImportData{
+ a.ImportUser(&UserImportData{
Username: &username,
Email: ptrStr(model.NewId() + "@example.com"),
}, false)
- user, err := GetUserByUsername(username)
+ user, err := a.GetUserByUsername(username)
if err != nil {
t.Fatalf("Failed to get user from database.")
}
// Count the number of posts in the testing team.
var initialPostCount int64
- if result := <-Srv.Store.Post().AnalyticsPostCount(team.Id, false, false); result.Err != nil {
+ if result := <-a.Srv.Store.Post().AnalyticsPostCount(team.Id, false, false); result.Err != nil {
t.Fatal(result.Err)
} else {
initialPostCount = result.Data.(int64)
@@ -1961,7 +1967,7 @@ func TestImportImportPost(t *testing.T) {
Channel: &channelName,
User: &username,
}
- if err := ImportPost(data, true); err == nil {
+ if err := a.ImportPost(data, true); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, team.Id)
@@ -1974,7 +1980,7 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Hello"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportPost(data, true); err != nil {
+ if err := a.ImportPost(data, true); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 0, team.Id)
@@ -1986,7 +1992,7 @@ func TestImportImportPost(t *testing.T) {
User: &username,
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportPost(data, false); err == nil {
+ if err := a.ImportPost(data, false); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, team.Id)
@@ -1999,7 +2005,7 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportPost(data, false); err == nil {
+ if err := a.ImportPost(data, false); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, team.Id)
@@ -2012,7 +2018,7 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportPost(data, false); err == nil {
+ if err := a.ImportPost(data, false); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, team.Id)
@@ -2025,7 +2031,7 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportPost(data, false); err == nil {
+ if err := a.ImportPost(data, false); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, team.Id)
@@ -2039,13 +2045,13 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: &time,
}
- if err := ImportPost(data, false); err != nil {
+ if err := a.ImportPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 1, team.Id)
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(channel.Id, time); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, time); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2066,13 +2072,13 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: &time,
}
- if err := ImportPost(data, false); err != nil {
+ if err := a.ImportPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 1, team.Id)
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(channel.Id, time); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, time); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2094,7 +2100,7 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: &newTime,
}
- if err := ImportPost(data, false); err != nil {
+ if err := a.ImportPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 2, team.Id)
@@ -2107,7 +2113,7 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message 2"),
CreateAt: &time,
}
- if err := ImportPost(data, false); err != nil {
+ if err := a.ImportPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 3, team.Id)
@@ -2121,12 +2127,12 @@ func TestImportImportPost(t *testing.T) {
Message: ptrStr("Message 2 #hashtagmashupcity"),
CreateAt: &hashtagTime,
}
- if err := ImportPost(data, false); err != nil {
+ if err := a.ImportPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 4, team.Id)
- if result := <-Srv.Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2144,11 +2150,11 @@ func TestImportImportPost(t *testing.T) {
// Post with flags.
username2 := model.NewId()
- ImportUser(&UserImportData{
+ a.ImportUser(&UserImportData{
Username: &username2,
Email: ptrStr(model.NewId() + "@example.com"),
}, false)
- user2, err := GetUserByUsername(username2)
+ user2, err := a.GetUserByUsername(username2)
if err != nil {
t.Fatalf("Failed to get user from database.")
}
@@ -2165,13 +2171,13 @@ func TestImportImportPost(t *testing.T) {
username2,
},
}
- if err := ImportPost(data, false); err != nil {
+ if err := a.ImportPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 5, team.Id)
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(channel.Id, flagsTime); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, flagsTime); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2189,18 +2195,19 @@ func TestImportImportPost(t *testing.T) {
}
func TestImportImportDirectChannel(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
// Check how many channels are in the database.
var directChannelCount int64
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_DIRECT); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_DIRECT); r.Err == nil {
directChannelCount = r.Data.(int64)
} else {
t.Fatalf("Failed to get direct channel count.")
}
var groupChannelCount int64
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_GROUP); r.Err == nil {
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_GROUP); r.Err == nil {
groupChannelCount = r.Data.(int64)
} else {
t.Fatalf("Failed to get group channel count.")
@@ -2213,7 +2220,7 @@ func TestImportImportDirectChannel(t *testing.T) {
},
Header: ptrStr("Channel Header"),
}
- if err := ImportDirectChannel(&data, true); err == nil {
+ if err := a.ImportDirectChannel(&data, true); err == nil {
t.Fatalf("Expected error due to invalid name.")
}
@@ -2226,7 +2233,7 @@ func TestImportImportDirectChannel(t *testing.T) {
model.NewId(),
model.NewId(),
}
- if err := ImportDirectChannel(&data, true); err != nil {
+ if err := a.ImportDirectChannel(&data, true); err != nil {
t.Fatalf("Expected success as cannot validate existance of channel members in dry run mode.")
}
@@ -2240,7 +2247,7 @@ func TestImportImportDirectChannel(t *testing.T) {
model.NewId(),
model.NewId(),
}
- if err := ImportDirectChannel(&data, true); err != nil {
+ if err := a.ImportDirectChannel(&data, true); err != nil {
t.Fatalf("Expected success as cannot validate existance of channel members in dry run mode.")
}
@@ -2252,7 +2259,7 @@ func TestImportImportDirectChannel(t *testing.T) {
data.Members = &[]string{
model.NewId(),
}
- if err := ImportDirectChannel(&data, false); err == nil {
+ if err := a.ImportDirectChannel(&data, false); err == nil {
t.Fatalf("Expected error due to invalid member (apply mode).")
}
@@ -2265,7 +2272,7 @@ func TestImportImportDirectChannel(t *testing.T) {
th.BasicUser.Username,
th.BasicUser2.Username,
}
- if err := ImportDirectChannel(&data, false); err != nil {
+ if err := a.ImportDirectChannel(&data, false); err != nil {
t.Fatalf("Expected success: %v", err.Error())
}
@@ -2274,7 +2281,7 @@ func TestImportImportDirectChannel(t *testing.T) {
AssertChannelCount(t, model.CHANNEL_GROUP, groupChannelCount)
// Do the same DIRECT channel again.
- if err := ImportDirectChannel(&data, false); err != nil {
+ if err := a.ImportDirectChannel(&data, false); err != nil {
t.Fatalf("Expected success.")
}
@@ -2284,7 +2291,7 @@ func TestImportImportDirectChannel(t *testing.T) {
// Update the channel's HEADER
data.Header = ptrStr("New Channel Header 2")
- if err := ImportDirectChannel(&data, false); err != nil {
+ if err := a.ImportDirectChannel(&data, false); err != nil {
t.Fatalf("Expected success.")
}
@@ -2293,7 +2300,7 @@ func TestImportImportDirectChannel(t *testing.T) {
AssertChannelCount(t, model.CHANNEL_GROUP, groupChannelCount)
// Get the channel to check that the header was updated.
- if channel, err := createDirectChannel(th.BasicUser.Id, th.BasicUser2.Id); err == nil || err.Id != store.CHANNEL_EXISTS_ERROR {
+ if channel, err := a.createDirectChannel(th.BasicUser.Id, th.BasicUser2.Id); err == nil || err.Id != store.CHANNEL_EXISTS_ERROR {
t.Fatal("Should have got store.CHANNEL_EXISTS_ERROR")
} else {
if channel.Header != *data.Header {
@@ -2309,7 +2316,7 @@ func TestImportImportDirectChannel(t *testing.T) {
user3.Username,
model.NewId(),
}
- if err := ImportDirectChannel(&data, false); err == nil {
+ if err := a.ImportDirectChannel(&data, false); err == nil {
t.Fatalf("Should have failed due to invalid member in list.")
}
@@ -2323,7 +2330,7 @@ func TestImportImportDirectChannel(t *testing.T) {
th.BasicUser2.Username,
user3.Username,
}
- if err := ImportDirectChannel(&data, false); err != nil {
+ if err := a.ImportDirectChannel(&data, false); err != nil {
t.Fatalf("Expected success.")
}
@@ -2332,7 +2339,7 @@ func TestImportImportDirectChannel(t *testing.T) {
AssertChannelCount(t, model.CHANNEL_GROUP, groupChannelCount+1)
// Do the same DIRECT channel again.
- if err := ImportDirectChannel(&data, false); err != nil {
+ if err := a.ImportDirectChannel(&data, false); err != nil {
t.Fatalf("Expected success.")
}
@@ -2342,7 +2349,7 @@ func TestImportImportDirectChannel(t *testing.T) {
// Update the channel's HEADER
data.Header = ptrStr("New Channel Header 3")
- if err := ImportDirectChannel(&data, false); err != nil {
+ if err := a.ImportDirectChannel(&data, false); err != nil {
t.Fatalf("Expected success.")
}
@@ -2356,7 +2363,7 @@ func TestImportImportDirectChannel(t *testing.T) {
th.BasicUser2.Id,
user3.Id,
}
- if channel, err := createGroupChannel(userIds, th.BasicUser.Id); err.Id != store.CHANNEL_EXISTS_ERROR {
+ if channel, err := a.createGroupChannel(userIds, th.BasicUser.Id); err.Id != store.CHANNEL_EXISTS_ERROR {
t.Fatal("Should have got store.CHANNEL_EXISTS_ERROR")
} else {
if channel.Header != *data.Header {
@@ -2373,11 +2380,11 @@ func TestImportImportDirectChannel(t *testing.T) {
th.BasicUser.Username,
th.BasicUser2.Username,
}
- if err := ImportDirectChannel(&data, false); err != nil {
+ if err := a.ImportDirectChannel(&data, false); err != nil {
t.Fatal(err)
}
- if channel, err := createDirectChannel(th.BasicUser.Id, th.BasicUser2.Id); err == nil || err.Id != store.CHANNEL_EXISTS_ERROR {
+ if channel, err := a.createDirectChannel(th.BasicUser.Id, th.BasicUser2.Id); err == nil || err.Id != store.CHANNEL_EXISTS_ERROR {
t.Fatal("Should have got store.CHANNEL_EXISTS_ERROR")
} else {
checkPreference(t, th.BasicUser.Id, model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL, channel.Id, "true")
@@ -2386,7 +2393,8 @@ func TestImportImportDirectChannel(t *testing.T) {
}
func AssertChannelCount(t *testing.T, channelType string, expectedCount int64) {
- if r := <-Srv.Store.Channel().AnalyticsTypeCount("", channelType); r.Err == nil {
+ a := Global()
+ if r := <-a.Srv.Store.Channel().AnalyticsTypeCount("", channelType); r.Err == nil {
count := r.Data.(int64)
if count != expectedCount {
debug.PrintStack()
@@ -2399,7 +2407,8 @@ func AssertChannelCount(t *testing.T, channelType string, expectedCount int64) {
}
func TestImportImportDirectPost(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
// Create the DIRECT channel.
channelData := DirectChannelImportData{
@@ -2408,13 +2417,13 @@ func TestImportImportDirectPost(t *testing.T) {
th.BasicUser2.Username,
},
}
- if err := ImportDirectChannel(&channelData, false); err != nil {
+ if err := a.ImportDirectChannel(&channelData, false); err != nil {
t.Fatalf("Expected success: %v", err.Error())
}
// Get the channel.
var directChannel *model.Channel
- if channel, err := createDirectChannel(th.BasicUser.Id, th.BasicUser2.Id); err.Id != store.CHANNEL_EXISTS_ERROR {
+ if channel, err := a.createDirectChannel(th.BasicUser.Id, th.BasicUser2.Id); err.Id != store.CHANNEL_EXISTS_ERROR {
t.Fatal("Should have got store.CHANNEL_EXISTS_ERROR")
} else {
directChannel = channel
@@ -2422,7 +2431,7 @@ func TestImportImportDirectPost(t *testing.T) {
// Get the number of posts in the system.
var initialPostCount int64
- if result := <-Srv.Store.Post().AnalyticsPostCount("", false, false); result.Err != nil {
+ if result := <-a.Srv.Store.Post().AnalyticsPostCount("", false, false); result.Err != nil {
t.Fatal(result.Err)
} else {
initialPostCount = result.Data.(int64)
@@ -2437,7 +2446,7 @@ func TestImportImportDirectPost(t *testing.T) {
User: ptrStr(th.BasicUser.Username),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, true); err == nil {
+ if err := a.ImportDirectPost(data, true); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, "")
@@ -2452,7 +2461,7 @@ func TestImportImportDirectPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, true); err != nil {
+ if err := a.ImportDirectPost(data, true); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 0, "")
@@ -2467,7 +2476,7 @@ func TestImportImportDirectPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, false); err == nil {
+ if err := a.ImportDirectPost(data, false); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, "")
@@ -2482,13 +2491,13 @@ func TestImportImportDirectPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success: %v", err.Error())
}
AssertAllPostsCount(t, initialPostCount, 1, "")
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2502,13 +2511,13 @@ func TestImportImportDirectPost(t *testing.T) {
}
// Import the post again.
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 1, "")
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2523,14 +2532,14 @@ func TestImportImportDirectPost(t *testing.T) {
// Save the post with a different time.
data.CreateAt = ptrInt64(*data.CreateAt + 1)
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 2, "")
// Save the post with a different message.
data.Message = ptrStr("Message 2")
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 3, "")
@@ -2538,12 +2547,12 @@ func TestImportImportDirectPost(t *testing.T) {
// Test with hashtags
data.Message = ptrStr("Message 2 #hashtagmashupcity")
data.CreateAt = ptrInt64(*data.CreateAt + 1)
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 4, "")
- if result := <-Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2574,12 +2583,12 @@ func TestImportImportDirectPost(t *testing.T) {
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success: %v", err.Error())
}
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2602,7 +2611,7 @@ func TestImportImportDirectPost(t *testing.T) {
user3.Username,
},
}
- if err := ImportDirectChannel(&channelData, false); err != nil {
+ if err := a.ImportDirectChannel(&channelData, false); err != nil {
t.Fatalf("Expected success: %v", err.Error())
}
@@ -2613,14 +2622,14 @@ func TestImportImportDirectPost(t *testing.T) {
th.BasicUser2.Id,
user3.Id,
}
- if channel, err := createGroupChannel(userIds, th.BasicUser.Id); err.Id != store.CHANNEL_EXISTS_ERROR {
+ if channel, err := a.createGroupChannel(userIds, th.BasicUser.Id); err.Id != store.CHANNEL_EXISTS_ERROR {
t.Fatal("Should have got store.CHANNEL_EXISTS_ERROR")
} else {
groupChannel = channel
}
// Get the number of posts in the system.
- if result := <-Srv.Store.Post().AnalyticsPostCount("", false, false); result.Err != nil {
+ if result := <-a.Srv.Store.Post().AnalyticsPostCount("", false, false); result.Err != nil {
t.Fatal(result.Err)
} else {
initialPostCount = result.Data.(int64)
@@ -2636,7 +2645,7 @@ func TestImportImportDirectPost(t *testing.T) {
User: ptrStr(th.BasicUser.Username),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, true); err == nil {
+ if err := a.ImportDirectPost(data, true); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, "")
@@ -2652,7 +2661,7 @@ func TestImportImportDirectPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, true); err != nil {
+ if err := a.ImportDirectPost(data, true); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 0, "")
@@ -2669,7 +2678,7 @@ func TestImportImportDirectPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, false); err == nil {
+ if err := a.ImportDirectPost(data, false); err == nil {
t.Fatalf("Expected error.")
}
AssertAllPostsCount(t, initialPostCount, 0, "")
@@ -2685,13 +2694,13 @@ func TestImportImportDirectPost(t *testing.T) {
Message: ptrStr("Message"),
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success: %v", err.Error())
}
AssertAllPostsCount(t, initialPostCount, 1, "")
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2705,13 +2714,13 @@ func TestImportImportDirectPost(t *testing.T) {
}
// Import the post again.
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 1, "")
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2726,14 +2735,14 @@ func TestImportImportDirectPost(t *testing.T) {
// Save the post with a different time.
data.CreateAt = ptrInt64(*data.CreateAt + 1)
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 2, "")
// Save the post with a different message.
data.Message = ptrStr("Message 2")
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 3, "")
@@ -2741,12 +2750,12 @@ func TestImportImportDirectPost(t *testing.T) {
// Test with hashtags
data.Message = ptrStr("Message 2 #hashtagmashupcity")
data.CreateAt = ptrInt64(*data.CreateAt + 1)
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success.")
}
AssertAllPostsCount(t, initialPostCount, 4, "")
- if result := <-Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2778,12 +2787,12 @@ func TestImportImportDirectPost(t *testing.T) {
CreateAt: ptrInt64(model.GetMillis()),
}
- if err := ImportDirectPost(data, false); err != nil {
+ if err := a.ImportDirectPost(data, false); err != nil {
t.Fatalf("Expected success: %v", err.Error())
}
// Check the post values.
- if result := <-Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
+ if result := <-a.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt); result.Err != nil {
t.Fatal(result.Err.Error())
} else {
posts := result.Data.([]*model.Post)
@@ -2797,56 +2806,58 @@ func TestImportImportDirectPost(t *testing.T) {
}
func TestImportImportLine(t *testing.T) {
- _ = Setup()
+ a := Global()
+ _ = a.Setup()
// Try import line with an invalid type.
line := LineImportData{
Type: "gibberish",
}
- if err := ImportLine(line, false); err == nil {
+ if err := a.ImportLine(line, false); err == nil {
t.Fatalf("Expected an error when importing a line with invalid type.")
}
// Try import line with team type but nil team.
line.Type = "team"
- if err := ImportLine(line, false); err == nil {
+ if err := a.ImportLine(line, false); err == nil {
t.Fatalf("Expected an error when importing a line of type team with a nil team.")
}
// Try import line with channel type but nil channel.
line.Type = "channel"
- if err := ImportLine(line, false); err == nil {
+ if err := a.ImportLine(line, false); err == nil {
t.Fatalf("Expected an error when importing a line with type channel with a nil channel.")
}
// Try import line with user type but nil user.
line.Type = "user"
- if err := ImportLine(line, false); err == nil {
+ if err := a.ImportLine(line, false); err == nil {
t.Fatalf("Expected an error when importing a line with type uesr with a nil user.")
}
// Try import line with post type but nil post.
line.Type = "post"
- if err := ImportLine(line, false); err == nil {
+ if err := a.ImportLine(line, false); err == nil {
t.Fatalf("Expected an error when importing a line with type post with a nil post.")
}
// Try import line with direct_channel type but nil direct_channel.
line.Type = "direct_channel"
- if err := ImportLine(line, false); err == nil {
+ if err := a.ImportLine(line, false); err == nil {
t.Fatalf("Expected an error when importing a line with type direct_channel with a nil direct_channel.")
}
// Try import line with direct_post type but nil direct_post.
line.Type = "direct_post"
- if err := ImportLine(line, false); err == nil {
+ if err := a.ImportLine(line, false); err == nil {
t.Fatalf("Expected an error when importing a line with type direct_post with a nil direct_post.")
}
}
func TestImportBulkImport(t *testing.T) {
- _ = Setup()
+ a := Global()
+ _ = a.Setup()
teamName := model.NewId()
channelName := model.NewId()
@@ -2867,13 +2878,13 @@ func TestImportBulkImport(t *testing.T) {
{"type": "direct_post", "direct_post": {"channel_members": ["` + username + `", "` + username2 + `"], "user": "` + username + `", "message": "Hello Direct Channel", "create_at": 123456789013}}
{"type": "direct_post", "direct_post": {"channel_members": ["` + username + `", "` + username2 + `", "` + username3 + `"], "user": "` + username + `", "message": "Hello Group Channel", "create_at": 123456789014}}`
- if err, line := BulkImport(strings.NewReader(data1), false, 2); err != nil || line != 0 {
+ if err, line := a.BulkImport(strings.NewReader(data1), false, 2); err != nil || line != 0 {
t.Fatalf("BulkImport should have succeeded: %v, %v", err.Error(), line)
}
// Run bulk import using a string that contains a line with invalid json.
data2 := `{"type": "version", "version": 1`
- if err, line := BulkImport(strings.NewReader(data2), false, 2); err == nil || line != 1 {
+ if err, line := a.BulkImport(strings.NewReader(data2), false, 2); err == nil || line != 1 {
t.Fatalf("Should have failed due to invalid JSON on line 1.")
}
@@ -2882,13 +2893,14 @@ func TestImportBulkImport(t *testing.T) {
{"type": "channel", "channel": {"type": "O", "display_name": "xr6m6udffngark2uekvr3hoeny", "team": "` + teamName + `", "name": "` + channelName + `"}}
{"type": "user", "user": {"username": "kufjgnkxkrhhfgbrip6qxkfsaa", "email": "kufjgnkxkrhhfgbrip6qxkfsaa@example.com"}}
{"type": "user", "user": {"username": "bwshaim6qnc2ne7oqkd5b2s2rq", "email": "bwshaim6qnc2ne7oqkd5b2s2rq@example.com", "teams": [{"name": "` + teamName + `", "channels": [{"name": "` + channelName + `"}]}]}}`
- if err, line := BulkImport(strings.NewReader(data3), false, 2); err == nil || line != 1 {
+ if err, line := a.BulkImport(strings.NewReader(data3), false, 2); err == nil || line != 1 {
t.Fatalf("Should have failed due to missing version line on line 1.")
}
}
func TestImportProcessImportDataFileVersionLine(t *testing.T) {
- _ = Setup()
+ a := Global()
+ _ = a.Setup()
data := LineImportData{
Type: "version",
diff --git a/app/job.go b/app/job.go
index 005324999..88757b161 100644
--- a/app/job.go
+++ b/app/job.go
@@ -8,32 +8,32 @@ import (
"github.com/mattermost/platform/model"
)
-func GetJob(id string) (*model.Job, *model.AppError) {
- if result := <-Srv.Store.Job().Get(id); result.Err != nil {
+func (a *App) GetJob(id string) (*model.Job, *model.AppError) {
+ if result := <-a.Srv.Store.Job().Get(id); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Job), nil
}
}
-func GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError) {
- return GetJobs(page*perPage, perPage)
+func (a *App) GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError) {
+ return a.GetJobs(page*perPage, perPage)
}
-func GetJobs(offset int, limit int) ([]*model.Job, *model.AppError) {
- if result := <-Srv.Store.Job().GetAllPage(offset, limit); result.Err != nil {
+func (a *App) GetJobs(offset int, limit int) ([]*model.Job, *model.AppError) {
+ if result := <-a.Srv.Store.Job().GetAllPage(offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Job), nil
}
}
-func GetJobsByTypePage(jobType string, page int, perPage int) ([]*model.Job, *model.AppError) {
- return GetJobsByType(jobType, page*perPage, perPage)
+func (a *App) GetJobsByTypePage(jobType string, page int, perPage int) ([]*model.Job, *model.AppError) {
+ return a.GetJobsByType(jobType, page*perPage, perPage)
}
-func GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError) {
- if result := <-Srv.Store.Job().GetAllByTypePage(jobType, offset, limit); result.Err != nil {
+func (a *App) GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError) {
+ if result := <-a.Srv.Store.Job().GetAllByTypePage(jobType, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Job), nil
diff --git a/app/job_test.go b/app/job_test.go
index 8f068901a..09208ec21 100644
--- a/app/job_test.go
+++ b/app/job_test.go
@@ -11,19 +11,20 @@ import (
)
func TestGetJob(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
status := &model.Job{
Id: model.NewId(),
Status: model.NewId(),
}
- if result := <-Srv.Store.Job().Save(status); result.Err != nil {
+ if result := <-a.Srv.Store.Job().Save(status); result.Err != nil {
t.Fatal(result.Err)
}
- defer Srv.Store.Job().Delete(status.Id)
+ defer a.Srv.Store.Job().Delete(status.Id)
- if received, err := GetJob(status.Id); err != nil {
+ if received, err := a.GetJob(status.Id); err != nil {
t.Fatal(err)
} else if received.Id != status.Id || received.Status != status.Status {
t.Fatal("inccorrect job status received")
@@ -31,34 +32,35 @@ func TestGetJob(t *testing.T) {
}
func TestGetJobByType(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
jobType := model.NewId()
statuses := []*model.Job{
{
- Id: model.NewId(),
- Type: jobType,
+ Id: model.NewId(),
+ Type: jobType,
CreateAt: 1000,
},
{
- Id: model.NewId(),
- Type: jobType,
+ Id: model.NewId(),
+ Type: jobType,
CreateAt: 999,
},
{
- Id: model.NewId(),
- Type: jobType,
+ Id: model.NewId(),
+ Type: jobType,
CreateAt: 1001,
},
}
for _, status := range statuses {
- store.Must(Srv.Store.Job().Save(status))
- defer Srv.Store.Job().Delete(status.Id)
+ store.Must(a.Srv.Store.Job().Save(status))
+ defer a.Srv.Store.Job().Delete(status.Id)
}
- if received, err := GetJobsByType(jobType, 0, 2); err != nil {
+ if received, err := a.GetJobsByType(jobType, 0, 2); err != nil {
t.Fatal(err)
} else if len(received) != 2 {
t.Fatal("received wrong number of statuses")
@@ -68,7 +70,7 @@ func TestGetJobByType(t *testing.T) {
t.Fatal("should've received second newest job second")
}
- if received, err := GetJobsByType(jobType, 2, 2); err != nil {
+ if received, err := a.GetJobsByType(jobType, 2, 2); err != nil {
t.Fatal(err)
} else if len(received) != 1 {
t.Fatal("received wrong number of statuses")
diff --git a/app/ldap.go b/app/ldap.go
index e3c90b263..8f852114c 100644
--- a/app/ldap.go
+++ b/app/ldap.go
@@ -38,17 +38,17 @@ func TestLdap() *model.AppError {
return nil
}
-func SwitchEmailToLdap(email, password, code, ldapId, ldapPassword string) (string, *model.AppError) {
- user, err := GetUserByEmail(email)
+func (a *App) SwitchEmailToLdap(email, password, code, ldapId, ldapPassword string) (string, *model.AppError) {
+ user, err := a.GetUserByEmail(email)
if err != nil {
return "", err
}
- if err := CheckPasswordAndAllCriteria(user, password, code); err != nil {
+ if err := a.CheckPasswordAndAllCriteria(user, password, code); err != nil {
return "", err
}
- if err := RevokeAllSessions(user.Id); err != nil {
+ if err := a.RevokeAllSessions(user.Id); err != nil {
return "", err
}
@@ -70,8 +70,8 @@ func SwitchEmailToLdap(email, password, code, ldapId, ldapPassword string) (stri
return "/login?extra=signin_change", nil
}
-func SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (string, *model.AppError) {
- user, err := GetUserByEmail(email)
+func (a *App) SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (string, *model.AppError) {
+ user, err := a.GetUserByEmail(email)
if err != nil {
return "", err
}
@@ -93,11 +93,11 @@ func SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (string, *
return "", err
}
- if err := UpdatePassword(user, newPassword); err != nil {
+ if err := a.UpdatePassword(user, newPassword); err != nil {
return "", err
}
- if err := RevokeAllSessions(user.Id); err != nil {
+ if err := a.RevokeAllSessions(user.Id); err != nil {
return "", err
}
diff --git a/app/license.go b/app/license.go
index 8cb76fd6e..da3f6d8d6 100644
--- a/app/license.go
+++ b/app/license.go
@@ -12,11 +12,11 @@ import (
"github.com/mattermost/platform/utils"
)
-func LoadLicense() {
+func (a *App) LoadLicense() {
utils.RemoveLicense()
licenseId := ""
- if result := <-Srv.Store.System().Get(); result.Err == nil {
+ if result := <-a.Srv.Store.System().Get(); result.Err == nil {
props := result.Data.(model.StringMap)
licenseId = props[model.SYSTEM_ACTIVE_LICENSE_ID]
}
@@ -26,7 +26,7 @@ func LoadLicense() {
license, licenseBytes := utils.GetAndValidateLicenseFileFromDisk()
if license != nil {
- if _, err := SaveLicense(licenseBytes); err != nil {
+ if _, err := a.SaveLicense(licenseBytes); err != nil {
l4g.Info("Failed to save license key loaded from disk err=%v", err.Error())
} else {
licenseId = license.Id
@@ -34,7 +34,7 @@ func LoadLicense() {
}
}
- if result := <-Srv.Store.License().Get(licenseId); result.Err == nil {
+ if result := <-a.Srv.Store.License().Get(licenseId); result.Err == nil {
record := result.Data.(*model.LicenseRecord)
utils.LoadLicense([]byte(record.Bytes))
l4g.Info("License key valid unlocking enterprise features.")
@@ -43,13 +43,13 @@ func LoadLicense() {
}
}
-func SaveLicense(licenseBytes []byte) (*model.License, *model.AppError) {
+func (a *App) SaveLicense(licenseBytes []byte) (*model.License, *model.AppError) {
var license *model.License
if success, licenseStr := utils.ValidateLicense(licenseBytes); success {
license = model.LicenseFromJson(strings.NewReader(licenseStr))
- if result := <-Srv.Store.User().AnalyticsUniqueUserCount(""); result.Err != nil {
+ if result := <-a.Srv.Store.User().AnalyticsUniqueUserCount(""); result.Err != nil {
return nil, model.NewAppError("addLicense", "api.license.add_license.invalid_count.app_error", nil, result.Err.Error(), http.StatusBadRequest)
} else {
uniqueUserCount := result.Data.(int64)
@@ -66,20 +66,20 @@ func SaveLicense(licenseBytes []byte) (*model.License, *model.AppError) {
record := &model.LicenseRecord{}
record.Id = license.Id
record.Bytes = string(licenseBytes)
- rchan := Srv.Store.License().Save(record)
+ rchan := a.Srv.Store.License().Save(record)
if result := <-rchan; result.Err != nil {
- RemoveLicense()
+ a.RemoveLicense()
return nil, model.NewAppError("addLicense", "api.license.add_license.save.app_error", nil, "err="+result.Err.Error(), http.StatusInternalServerError)
}
sysVar := &model.System{}
sysVar.Name = model.SYSTEM_ACTIVE_LICENSE_ID
sysVar.Value = license.Id
- schan := Srv.Store.System().SaveOrUpdate(sysVar)
+ schan := a.Srv.Store.System().SaveOrUpdate(sysVar)
if result := <-schan; result.Err != nil {
- RemoveLicense()
+ a.RemoveLicense()
return nil, model.NewAppError("addLicense", "api.license.add_license.save_active.app_error", nil, "", http.StatusInternalServerError)
}
} else {
@@ -87,26 +87,26 @@ func SaveLicense(licenseBytes []byte) (*model.License, *model.AppError) {
}
ReloadConfig()
- InvalidateAllCaches()
+ a.InvalidateAllCaches()
return license, nil
}
-func RemoveLicense() *model.AppError {
+func (a *App) RemoveLicense() *model.AppError {
utils.RemoveLicense()
sysVar := &model.System{}
sysVar.Name = model.SYSTEM_ACTIVE_LICENSE_ID
sysVar.Value = ""
- if result := <-Srv.Store.System().SaveOrUpdate(sysVar); result.Err != nil {
+ if result := <-a.Srv.Store.System().SaveOrUpdate(sysVar); result.Err != nil {
utils.RemoveLicense()
return result.Err
}
ReloadConfig()
- InvalidateAllCaches()
+ a.InvalidateAllCaches()
return nil
}
diff --git a/app/license_test.go b/app/license_test.go
index 07805992a..178954bc9 100644
--- a/app/license_test.go
+++ b/app/license_test.go
@@ -5,33 +5,37 @@ package app
import (
//"github.com/mattermost/platform/model"
- "github.com/mattermost/platform/utils"
"testing"
+
+ "github.com/mattermost/platform/utils"
)
func TestLoadLicense(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
- LoadLicense()
+ a.LoadLicense()
if utils.IsLicensed() {
t.Fatal("shouldn't have a valid license")
}
}
func TestSaveLicense(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
b1 := []byte("junk")
- if _, err := SaveLicense(b1); err == nil {
+ if _, err := a.SaveLicense(b1); err == nil {
t.Fatal("shouldn't have saved license")
}
}
func TestRemoveLicense(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
- if err := RemoveLicense(); err != nil {
+ if err := a.RemoveLicense(); err != nil {
t.Fatal("should have removed license")
}
}
diff --git a/app/login.go b/app/login.go
index 63f713cc8..b86df41bd 100644
--- a/app/login.go
+++ b/app/login.go
@@ -15,7 +15,7 @@ import (
"github.com/mssola/user_agent"
)
-func AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId string, ldapOnly bool) (*model.User, *model.AppError) {
+func (a *App) AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId string, ldapOnly bool) (*model.User, *model.AppError) {
if len(password) == 0 {
err := model.NewAppError("AuthenticateUserForLogin", "api.user.login.blank_pwd.app_error", nil, "", http.StatusBadRequest)
return nil, err
@@ -25,7 +25,7 @@ func AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId string,
var err *model.AppError
if len(id) != 0 {
- if user, err = GetUser(id); err != nil {
+ if user, err = a.GetUser(id); err != nil {
err.StatusCode = http.StatusBadRequest
if einterfaces.GetMetricsInterface() != nil {
einterfaces.GetMetricsInterface().IncrementLoginFail()
@@ -33,7 +33,7 @@ func AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId string,
return nil, err
}
} else {
- if user, err = GetUserForLogin(loginId, ldapOnly); err != nil {
+ if user, err = a.GetUserForLogin(loginId, ldapOnly); err != nil {
if einterfaces.GetMetricsInterface() != nil {
einterfaces.GetMetricsInterface().IncrementLoginFail()
}
@@ -42,7 +42,7 @@ func AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId string,
}
// and then authenticate them
- if user, err = authenticateUser(user, password, mfaToken); err != nil {
+ if user, err = a.authenticateUser(user, password, mfaToken); err != nil {
if einterfaces.GetMetricsInterface() != nil {
einterfaces.GetMetricsInterface().IncrementLoginFail()
}
@@ -56,7 +56,7 @@ func AuthenticateUserForLogin(id, loginId, password, mfaToken, deviceId string,
return user, nil
}
-func DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId string) (*model.Session, *model.AppError) {
+func (a *App) DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId string) (*model.Session, *model.AppError) {
session := &model.Session{UserId: user.Id, Roles: user.GetRawRoles(), DeviceId: deviceId, IsOAuth: false}
maxAge := *utils.Cfg.ServiceSettings.SessionLengthWebInDays * 60 * 60 * 24
@@ -65,7 +65,7 @@ func DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId
session.SetExpireInDays(*utils.Cfg.ServiceSettings.SessionLengthMobileInDays)
// A special case where we logout of all other sessions with the same Id
- if err := RevokeSessionsForDeviceId(user.Id, deviceId, ""); err != nil {
+ if err := a.RevokeSessionsForDeviceId(user.Id, deviceId, ""); err != nil {
err.StatusCode = http.StatusInternalServerError
return nil, err
}
@@ -103,7 +103,7 @@ func DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId
session.AddProp(model.SESSION_PROP_BROWSER, fmt.Sprintf("%v/%v", bname, bversion))
var err *model.AppError
- if session, err = CreateSession(session); err != nil {
+ if session, err = a.CreateSession(session); err != nil {
err.StatusCode = http.StatusInternalServerError
return nil, err
}
diff --git a/app/notification.go b/app/notification.go
index f488870f9..9529bfe91 100644
--- a/app/notification.go
+++ b/app/notification.go
@@ -25,13 +25,13 @@ import (
"github.com/nicksnyder/go-i18n/i18n"
)
-func SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User, parentPostList *model.PostList) ([]string, *model.AppError) {
- pchan := Srv.Store.User().GetAllProfilesInChannel(channel.Id, true)
- cmnchan := Srv.Store.Channel().GetAllChannelMembersNotifyPropsForChannel(channel.Id, true)
+func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User, parentPostList *model.PostList) ([]string, *model.AppError) {
+ pchan := a.Srv.Store.User().GetAllProfilesInChannel(channel.Id, true)
+ cmnchan := a.Srv.Store.Channel().GetAllChannelMembersNotifyPropsForChannel(channel.Id, true)
var fchan store.StoreChannel
if len(post.FileIds) != 0 {
- fchan = Srv.Store.FileInfo().GetForPost(post.Id, true, true)
+ fchan = a.Srv.Store.FileInfo().GetForPost(post.Id, true, true)
}
var profileMap map[string]*model.User
@@ -92,7 +92,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
}
if len(potentialOtherMentions) > 0 {
- if result := <-Srv.Store.User().GetProfilesByUsernames(potentialOtherMentions, team.Id); result.Err == nil {
+ if result := <-a.Srv.Store.User().GetProfilesByUsernames(potentialOtherMentions, team.Id); result.Err == nil {
outOfChannelMentions := result.Data.([]*model.User)
if channel.Type != model.CHANNEL_GROUP {
go sendOutOfChannelMentions(sender, post, team.Id, outOfChannelMentions)
@@ -114,7 +114,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
mentionedUsersList := make([]string, 0, len(mentionedUserIds))
for id := range mentionedUserIds {
mentionedUsersList = append(mentionedUsersList, id)
- updateMentionChans = append(updateMentionChans, Srv.Store.Channel().IncrementMentionCount(post.ChannelId, id))
+ updateMentionChans = append(updateMentionChans, a.Srv.Store.Channel().IncrementMentionCount(post.ChannelId, id))
}
senderName := ""
@@ -166,7 +166,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
var status *model.Status
var err *model.AppError
- if status, err = GetStatus(id); err != nil {
+ if status, err = a.GetStatus(id); err != nil {
status = &model.Status{
UserId: id,
Status: model.STATUS_OFFLINE,
@@ -177,7 +177,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
}
if userAllowsEmails && status.Status != model.STATUS_ONLINE && profileMap[id].DeleteAt == 0 {
- sendNotificationEmail(post, profileMap[id], channel, team, senderName, sender)
+ a.sendNotificationEmail(post, profileMap[id], channel, team, senderName, sender)
}
}
}
@@ -245,12 +245,12 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
for _, id := range mentionedUsersList {
var status *model.Status
var err *model.AppError
- if status, err = GetStatus(id); err != nil {
+ if status, err = a.GetStatus(id); err != nil {
status = &model.Status{UserId: id, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
}
if ShouldSendPushNotification(profileMap[id], channelMemberNotifyPropsMap[id], true, status, post) {
- sendPushNotification(post, profileMap[id], channel, senderName, channelName, true)
+ a.sendPushNotification(post, profileMap[id], channel, senderName, channelName, true)
}
}
@@ -258,12 +258,12 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
if _, ok := mentionedUserIds[id]; !ok {
var status *model.Status
var err *model.AppError
- if status, err = GetStatus(id); err != nil {
+ if status, err = a.GetStatus(id); err != nil {
status = &model.Status{UserId: id, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
}
if ShouldSendPushNotification(profileMap[id], channelMemberNotifyPropsMap[id], false, status, post) {
- sendPushNotification(post, profileMap[id], channel, senderName, channelName, false)
+ a.sendPushNotification(post, profileMap[id], channel, senderName, channelName, false)
}
}
}
@@ -303,9 +303,9 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
return mentionedUsersList, nil
}
-func sendNotificationEmail(post *model.Post, user *model.User, channel *model.Channel, team *model.Team, senderName string, sender *model.User) *model.AppError {
+func (a *App) sendNotificationEmail(post *model.Post, user *model.User, channel *model.Channel, team *model.Team, senderName string, sender *model.User) *model.AppError {
if channel.IsGroupOrDirect() {
- if result := <-Srv.Store.Team().GetTeamsByUserId(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetTeamsByUserId(user.Id); result.Err != nil {
return result.Err
} else {
// if the recipient isn't in the current user's team, just pick one
@@ -329,7 +329,7 @@ func sendNotificationEmail(post *model.Post, user *model.User, channel *model.Ch
}
if *utils.Cfg.EmailSettings.EnableEmailBatching {
var sendBatched bool
- if result := <-Srv.Store.Preference().Get(user.Id, model.PREFERENCE_CATEGORY_NOTIFICATIONS, model.PREFERENCE_NAME_EMAIL_INTERVAL); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Get(user.Id, model.PREFERENCE_CATEGORY_NOTIFICATIONS, model.PREFERENCE_NAME_EMAIL_INTERVAL); result.Err != nil {
// if the call fails, assume that the interval has not been explicitly set and batch the notifications
sendBatched = true
} else {
@@ -361,7 +361,7 @@ func sendNotificationEmail(post *model.Post, user *model.User, channel *model.Ch
}
teamURL := utils.GetSiteURL() + "/" + team.Name
- var bodyText = getNotificationEmailBody(user, post, channel, senderName, team.Name, teamURL, emailNotificationContentsType, translateFunc)
+ var bodyText = a.getNotificationEmailBody(user, post, channel, senderName, team.Name, teamURL, emailNotificationContentsType, translateFunc)
go func() {
if err := utils.SendMail(user.Email, html.UnescapeString(subjectText), bodyText); err != nil {
@@ -409,12 +409,12 @@ func getNotificationEmailSubject(post *model.Post, translateFunc i18n.TranslateF
/**
* Computes the email body for notification messages
*/
-func getNotificationEmailBody(recipient *model.User, post *model.Post, channel *model.Channel, senderName string, teamName string, teamURL string, emailNotificationContentsType string, translateFunc i18n.TranslateFunc) string {
+func (a *App) getNotificationEmailBody(recipient *model.User, post *model.Post, channel *model.Channel, senderName string, teamName string, teamURL string, emailNotificationContentsType string, translateFunc i18n.TranslateFunc) string {
// only include message contents in notification email if email notification contents type is set to full
var bodyPage *utils.HTMLTemplate
if emailNotificationContentsType == model.EMAIL_NOTIFICATION_CONTENTS_FULL {
bodyPage = utils.NewHTMLTemplate("post_body_full", recipient.Locale)
- bodyPage.Props["PostMessage"] = GetMessageForNotification(post, translateFunc)
+ bodyPage.Props["PostMessage"] = a.GetMessageForNotification(post, translateFunc)
} else {
bodyPage = utils.NewHTMLTemplate("post_body_generic", recipient.Locale)
}
@@ -519,14 +519,14 @@ func getFormattedPostTime(post *model.Post, translateFunc i18n.TranslateFunc) fo
}
}
-func GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string {
+func (a *App) GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string {
if len(strings.TrimSpace(post.Message)) != 0 || len(post.FileIds) == 0 {
return post.Message
}
// extract the filenames from their paths and determine what type of files are attached
var infos []*model.FileInfo
- if result := <-Srv.Store.FileInfo().GetForPost(post.Id, true, true); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().GetForPost(post.Id, true, true); result.Err != nil {
l4g.Warn(utils.T("api.post.get_message_for_notification.get_files.error"), post.Id, result.Err)
} else {
infos = result.Data.([]*model.FileInfo)
@@ -554,8 +554,8 @@ func GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFun
}
}
-func sendPushNotification(post *model.Post, user *model.User, channel *model.Channel, senderName, channelName string, wasMentioned bool) *model.AppError {
- sessions, err := getMobileAppSessions(user.Id)
+func (a *App) sendPushNotification(post *model.Post, user *model.User, channel *model.Channel, senderName, channelName string, wasMentioned bool) *model.AppError {
+ sessions, err := a.getMobileAppSessions(user.Id)
if err != nil {
return err
}
@@ -567,7 +567,7 @@ func sendPushNotification(post *model.Post, user *model.User, channel *model.Cha
userLocale := utils.GetUserTranslations(user.Locale)
msg := model.PushNotification{}
- if badge := <-Srv.Store.User().GetUnreadCount(user.Id); badge.Err != nil {
+ if badge := <-a.Srv.Store.User().GetUnreadCount(user.Id); badge.Err != nil {
msg.Badge = 1
l4g.Error(utils.T("store.sql_user.get_unread_count.app_error"), user.Id, badge.Err)
} else {
@@ -639,7 +639,7 @@ func sendPushNotification(post *model.Post, user *model.User, channel *model.Cha
l4g.Debug("Sending push notification to device %v for user %v with msg of '%v'", tmpMessage.DeviceId, user.Id, msg.Message)
- go sendToPushProxy(tmpMessage, session)
+ go a.sendToPushProxy(tmpMessage, session)
if einterfaces.GetMetricsInterface() != nil {
einterfaces.GetMetricsInterface().IncrementPostSentPush()
@@ -649,8 +649,8 @@ func sendPushNotification(post *model.Post, user *model.User, channel *model.Cha
return nil
}
-func ClearPushNotification(userId string, channelId string) *model.AppError {
- sessions, err := getMobileAppSessions(userId)
+func (a *App) ClearPushNotification(userId string, channelId string) *model.AppError {
+ sessions, err := a.getMobileAppSessions(userId)
if err != nil {
return err
}
@@ -659,7 +659,7 @@ func ClearPushNotification(userId string, channelId string) *model.AppError {
msg.Type = model.PUSH_TYPE_CLEAR
msg.ChannelId = channelId
msg.ContentAvailable = 0
- if badge := <-Srv.Store.User().GetUnreadCount(userId); badge.Err != nil {
+ if badge := <-a.Srv.Store.User().GetUnreadCount(userId); badge.Err != nil {
msg.Badge = 0
l4g.Error(utils.T("store.sql_user.get_unread_count.app_error"), userId, badge.Err)
} else {
@@ -671,13 +671,13 @@ func ClearPushNotification(userId string, channelId string) *model.AppError {
for _, session := range sessions {
tmpMessage := *model.PushNotificationFromJson(strings.NewReader(msg.ToJson()))
tmpMessage.SetDeviceIdAndPlatform(session.DeviceId)
- go sendToPushProxy(tmpMessage, session)
+ go a.sendToPushProxy(tmpMessage, session)
}
return nil
}
-func sendToPushProxy(msg model.PushNotification, session *model.Session) {
+func (a *App) sendToPushProxy(msg model.PushNotification, session *model.Session) {
msg.ServerId = utils.CfgDiagnosticId
request, _ := http.NewRequest("POST", *utils.Cfg.EmailSettings.PushNotificationServer+model.API_URL_SUFFIX_V1+"/send_push", strings.NewReader(msg.ToJson()))
@@ -693,7 +693,7 @@ func sendToPushProxy(msg model.PushNotification, session *model.Session) {
if pushResponse[model.PUSH_STATUS] == model.PUSH_STATUS_REMOVE {
l4g.Info("Device was reported as removed for UserId=%v SessionId=%v removing push for this session", session.UserId, session.Id)
- AttachDeviceId(session.Id, "", session.ExpiresAt)
+ a.AttachDeviceId(session.Id, "", session.ExpiresAt)
ClearSessionCacheForUser(session.UserId)
}
@@ -703,8 +703,8 @@ func sendToPushProxy(msg model.PushNotification, session *model.Session) {
}
}
-func getMobileAppSessions(userId string) ([]*model.Session, *model.AppError) {
- if result := <-Srv.Store.Session().GetSessionsWithActiveDeviceIds(userId); result.Err != nil {
+func (a *App) getMobileAppSessions(userId string) ([]*model.Session, *model.AppError) {
+ if result := <-a.Srv.Store.Session().GetSessionsWithActiveDeviceIds(userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Session), nil
diff --git a/app/notification_test.go b/app/notification_test.go
index e0c1a54e6..f4b8bad61 100644
--- a/app/notification_test.go
+++ b/app/notification_test.go
@@ -12,11 +12,12 @@ import (
)
func TestSendNotifications(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
- AddUserToChannel(th.BasicUser2, th.BasicChannel)
+ a.AddUserToChannel(th.BasicUser2, th.BasicChannel)
- post1, err := CreatePostMissingChannel(&model.Post{
+ post1, err := a.CreatePostMissingChannel(&model.Post{
UserId: th.BasicUser.Id,
ChannelId: th.BasicChannel.Id,
Message: "@" + th.BasicUser2.Username,
@@ -26,7 +27,7 @@ func TestSendNotifications(t *testing.T) {
t.Fatal(err)
}
- mentions, err := SendNotifications(post1, th.BasicTeam, th.BasicChannel, th.BasicUser, nil)
+ mentions, err := a.SendNotifications(post1, th.BasicTeam, th.BasicChannel, th.BasicUser, nil)
if err != nil {
t.Fatal(err)
} else if mentions == nil {
@@ -37,12 +38,12 @@ func TestSendNotifications(t *testing.T) {
t.Fatal("user should have been mentioned")
}
- dm, err := CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id)
+ dm, err := a.CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id)
if err != nil {
t.Fatal(err)
}
- post2, err := CreatePostMissingChannel(&model.Post{
+ post2, err := a.CreatePostMissingChannel(&model.Post{
UserId: th.BasicUser.Id,
ChannelId: dm.Id,
Message: "dm message",
@@ -52,15 +53,15 @@ func TestSendNotifications(t *testing.T) {
t.Fatal(err)
}
- _, err = SendNotifications(post2, th.BasicTeam, dm, th.BasicUser, nil)
+ _, err = a.SendNotifications(post2, th.BasicTeam, dm, th.BasicUser, nil)
if err != nil {
t.Fatal(err)
}
- UpdateActive(th.BasicUser2, false)
- InvalidateAllCaches()
+ a.UpdateActive(th.BasicUser2, false)
+ a.InvalidateAllCaches()
- post3, err := CreatePostMissingChannel(&model.Post{
+ post3, err := a.CreatePostMissingChannel(&model.Post{
UserId: th.BasicUser.Id,
ChannelId: dm.Id,
Message: "dm message",
@@ -70,7 +71,7 @@ func TestSendNotifications(t *testing.T) {
t.Fatal(err)
}
- _, err = SendNotifications(post3, th.BasicTeam, dm, th.BasicUser, nil)
+ _, err = a.SendNotifications(post3, th.BasicTeam, dm, th.BasicUser, nil)
if err != nil {
t.Fatal(err)
}
@@ -408,7 +409,8 @@ func TestRemoveCodeFromMessage(t *testing.T) {
}
func TestGetMentionKeywords(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
// user with username or custom mentions enabled
user1 := &model.User{
Id: model.NewId(),
@@ -833,7 +835,8 @@ func TestDoesStatusAllowPushNotification(t *testing.T) {
}
func TestGetDirectMessageNotificationEmailSubject(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
expectedPrefix := "[http://localhost:8065] New Direct Message from sender on"
post := &model.Post{
CreateAt: 1501804801000,
@@ -846,7 +849,8 @@ func TestGetDirectMessageNotificationEmailSubject(t *testing.T) {
}
func TestGetNotificationEmailSubject(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
expectedPrefix := "[http://localhost:8065] Notification in team on"
post := &model.Post{
CreateAt: 1501804801000,
@@ -859,7 +863,8 @@ func TestGetNotificationEmailSubject(t *testing.T) {
}
func TestGetNotificationEmailBodyFullNotificationPublicChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -874,7 +879,7 @@ func TestGetNotificationEmailBodyFullNotificationPublicChannel(t *testing.T) {
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_FULL
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new notification.") {
t.Fatal("Expected email text 'You have a new notification. Got " + body)
}
@@ -893,7 +898,8 @@ func TestGetNotificationEmailBodyFullNotificationPublicChannel(t *testing.T) {
}
func TestGetNotificationEmailBodyFullNotificationGroupChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -908,7 +914,7 @@ func TestGetNotificationEmailBodyFullNotificationGroupChannel(t *testing.T) {
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_FULL
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new notification.") {
t.Fatal("Expected email text 'You have a new notification. Got " + body)
}
@@ -927,7 +933,8 @@ func TestGetNotificationEmailBodyFullNotificationGroupChannel(t *testing.T) {
}
func TestGetNotificationEmailBodyFullNotificationPrivateChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -942,7 +949,7 @@ func TestGetNotificationEmailBodyFullNotificationPrivateChannel(t *testing.T) {
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_FULL
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new notification.") {
t.Fatal("Expected email text 'You have a new notification. Got " + body)
}
@@ -961,7 +968,8 @@ func TestGetNotificationEmailBodyFullNotificationPrivateChannel(t *testing.T) {
}
func TestGetNotificationEmailBodyFullNotificationDirectChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -976,7 +984,7 @@ func TestGetNotificationEmailBodyFullNotificationDirectChannel(t *testing.T) {
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_FULL
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new direct message.") {
t.Fatal("Expected email text 'You have a new direct message. Got " + body)
}
@@ -993,7 +1001,8 @@ func TestGetNotificationEmailBodyFullNotificationDirectChannel(t *testing.T) {
// from here
func TestGetNotificationEmailBodyGenericNotificationPublicChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -1008,7 +1017,7 @@ func TestGetNotificationEmailBodyGenericNotificationPublicChannel(t *testing.T)
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_GENERIC
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new notification from "+senderName) {
t.Fatal("Expected email text 'You have a new notification from " + senderName + "'. Got " + body)
}
@@ -1024,7 +1033,8 @@ func TestGetNotificationEmailBodyGenericNotificationPublicChannel(t *testing.T)
}
func TestGetNotificationEmailBodyGenericNotificationGroupChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -1039,7 +1049,7 @@ func TestGetNotificationEmailBodyGenericNotificationGroupChannel(t *testing.T) {
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_GENERIC
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new notification from "+senderName) {
t.Fatal("Expected email text 'You have a new notification from " + senderName + "'. Got " + body)
}
@@ -1055,7 +1065,8 @@ func TestGetNotificationEmailBodyGenericNotificationGroupChannel(t *testing.T) {
}
func TestGetNotificationEmailBodyGenericNotificationPrivateChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -1070,7 +1081,7 @@ func TestGetNotificationEmailBodyGenericNotificationPrivateChannel(t *testing.T)
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_GENERIC
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new notification from "+senderName) {
t.Fatal("Expected email text 'You have a new notification from " + senderName + "'. Got " + body)
}
@@ -1086,7 +1097,8 @@ func TestGetNotificationEmailBodyGenericNotificationPrivateChannel(t *testing.T)
}
func TestGetNotificationEmailBodyGenericNotificationDirectChannel(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
recipient := &model.User{}
post := &model.Post{
Message: "This is the message",
@@ -1101,7 +1113,7 @@ func TestGetNotificationEmailBodyGenericNotificationDirectChannel(t *testing.T)
emailNotificationContentsType := model.EMAIL_NOTIFICATION_CONTENTS_GENERIC
translateFunc := utils.GetUserTranslations("en")
- body := getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
+ body := a.getNotificationEmailBody(recipient, post, channel, senderName, teamName, teamURL, emailNotificationContentsType, translateFunc)
if !strings.Contains(body, "You have a new direct message from "+senderName) {
t.Fatal("Expected email text 'You have a new direct message from " + senderName + "'. Got " + body)
}
diff --git a/app/oauth.go b/app/oauth.go
index b2bedb63b..7f1a41915 100644
--- a/app/oauth.go
+++ b/app/oauth.go
@@ -26,7 +26,7 @@ const (
COOKIE_OAUTH = "MMOAUTH"
)
-func CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError) {
+func (a *App) CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("CreateOAuthApp", "api.oauth.register_oauth_app.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
@@ -34,64 +34,64 @@ func CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError) {
secret := model.NewId()
app.ClientSecret = secret
- if result := <-Srv.Store.OAuth().SaveApp(app); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().SaveApp(app); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.OAuthApp), nil
}
}
-func GetOAuthApp(appId string) (*model.OAuthApp, *model.AppError) {
+func (a *App) GetOAuthApp(appId string) (*model.OAuthApp, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetOAuthApp", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.OAuth().GetApp(appId); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetApp(appId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.OAuthApp), nil
}
}
-func DeleteOAuthApp(appId string) *model.AppError {
+func (a *App) DeleteOAuthApp(appId string) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return model.NewAppError("DeleteOAuthApp", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
- if err := (<-Srv.Store.OAuth().DeleteApp(appId)).Err; err != nil {
+ if err := (<-a.Srv.Store.OAuth().DeleteApp(appId)).Err; err != nil {
return err
}
- InvalidateAllCaches()
+ a.InvalidateAllCaches()
return nil
}
-func GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppError) {
+func (a *App) GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetOAuthApps", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.OAuth().GetApps(page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetApps(page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.OAuthApp), nil
}
}
-func GetOAuthAppsByCreator(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError) {
+func (a *App) GetOAuthAppsByCreator(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetOAuthAppsByUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.OAuth().GetAppByUser(userId, page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetAppByUser(userId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.OAuthApp), nil
}
}
-func AllowOAuthAppAccessToUser(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError) {
+func (a *App) AllowOAuthAppAccessToUser(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return "", model.NewAppError("AllowOAuthAppAccessToUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
@@ -101,7 +101,7 @@ func AllowOAuthAppAccessToUser(userId string, authRequest *model.AuthorizeReques
}
var oauthApp *model.OAuthApp
- if result := <-Srv.Store.OAuth().GetApp(authRequest.ClientId); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetApp(authRequest.ClientId); result.Err != nil {
return "", result.Err
} else {
oauthApp = result.Data.(*model.OAuthApp)
@@ -126,24 +126,24 @@ func AllowOAuthAppAccessToUser(userId string, authRequest *model.AuthorizeReques
Value: authRequest.Scope,
}
- if result := <-Srv.Store.Preference().Save(&model.Preferences{authorizedApp}); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&model.Preferences{authorizedApp}); result.Err != nil {
return authRequest.RedirectUri + "?error=server_error&state=" + authRequest.State, nil
}
- if result := <-Srv.Store.OAuth().SaveAuthData(authData); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().SaveAuthData(authData); result.Err != nil {
return authRequest.RedirectUri + "?error=server_error&state=" + authRequest.State, nil
}
return authRequest.RedirectUri + "?code=" + url.QueryEscape(authData.Code) + "&state=" + url.QueryEscape(authData.State), nil
}
-func GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refreshToken string) (*model.AccessResponse, *model.AppError) {
+func (a *App) GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refreshToken string) (*model.AccessResponse, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.disabled.app_error", nil, "", http.StatusNotImplemented)
}
var oauthApp *model.OAuthApp
- if result := <-Srv.Store.OAuth().GetApp(clientId); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetApp(clientId); result.Err != nil {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.credentials.app_error", nil, "", http.StatusNotFound)
} else {
oauthApp = result.Data.(*model.OAuthApp)
@@ -159,14 +159,14 @@ func GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refresh
if grantType == model.ACCESS_TOKEN_GRANT_TYPE {
var authData *model.AuthData
- if result := <-Srv.Store.OAuth().GetAuthData(code); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetAuthData(code); result.Err != nil {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.expired_code.app_error", nil, "", http.StatusInternalServerError)
} else {
authData = result.Data.(*model.AuthData)
}
if authData.IsExpired() {
- <-Srv.Store.OAuth().RemoveAuthData(authData.Code)
+ <-a.Srv.Store.OAuth().RemoveAuthData(authData.Code)
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.expired_code.app_error", nil, "", http.StatusForbidden)
}
@@ -178,18 +178,18 @@ func GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refresh
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.expired_code.app_error", nil, "", http.StatusBadRequest)
}
- if result := <-Srv.Store.User().Get(authData.UserId); result.Err != nil {
+ if result := <-a.Srv.Store.User().Get(authData.UserId); result.Err != nil {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.internal_user.app_error", nil, "", http.StatusNotFound)
} else {
user = result.Data.(*model.User)
}
- if result := <-Srv.Store.OAuth().GetPreviousAccessData(user.Id, clientId); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetPreviousAccessData(user.Id, clientId); result.Err != nil {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.internal.app_error", nil, "", http.StatusInternalServerError)
} else if result.Data != nil {
accessData := result.Data.(*model.AccessData)
if accessData.IsExpired() {
- if access, err := newSessionUpdateToken(oauthApp.Name, accessData, user); err != nil {
+ if access, err := a.newSessionUpdateToken(oauthApp.Name, accessData, user); err != nil {
return nil, err
} else {
accessRsp = access
@@ -206,7 +206,7 @@ func GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refresh
} else {
// create a new session and return new access token
var session *model.Session
- if result, err := newSession(oauthApp.Name, user); err != nil {
+ if result, err := a.newSession(oauthApp.Name, user); err != nil {
return nil, err
} else {
session = result
@@ -214,7 +214,7 @@ func GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refresh
accessData = &model.AccessData{ClientId: clientId, UserId: user.Id, Token: session.Token, RefreshToken: model.NewId(), RedirectUri: redirectUri, ExpiresAt: session.ExpiresAt, Scope: authData.Scope}
- if result := <-Srv.Store.OAuth().SaveAccessData(accessData); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().SaveAccessData(accessData); result.Err != nil {
l4g.Error(result.Err)
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.internal_saving.app_error", nil, "", http.StatusInternalServerError)
}
@@ -227,22 +227,22 @@ func GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refresh
}
}
- <-Srv.Store.OAuth().RemoveAuthData(authData.Code)
+ <-a.Srv.Store.OAuth().RemoveAuthData(authData.Code)
} else {
// when grantType is refresh_token
- if result := <-Srv.Store.OAuth().GetAccessDataByRefreshToken(refreshToken); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetAccessDataByRefreshToken(refreshToken); result.Err != nil {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.refresh_token.app_error", nil, "", http.StatusNotFound)
} else {
accessData = result.Data.(*model.AccessData)
}
- if result := <-Srv.Store.User().Get(accessData.UserId); result.Err != nil {
+ if result := <-a.Srv.Store.User().Get(accessData.UserId); result.Err != nil {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.internal_user.app_error", nil, "", http.StatusNotFound)
} else {
user = result.Data.(*model.User)
}
- if access, err := newSessionUpdateToken(oauthApp.Name, accessData, user); err != nil {
+ if access, err := a.newSessionUpdateToken(oauthApp.Name, accessData, user); err != nil {
return nil, err
} else {
accessRsp = access
@@ -252,7 +252,7 @@ func GetOAuthAccessToken(clientId, grantType, redirectUri, code, secret, refresh
return accessRsp, nil
}
-func newSession(appName string, user *model.User) (*model.Session, *model.AppError) {
+func (a *App) newSession(appName string, user *model.User) (*model.Session, *model.AppError) {
// set new token an session
session := &model.Session{UserId: user.Id, Roles: user.Roles, IsOAuth: true}
session.SetExpireInDays(*utils.Cfg.ServiceSettings.SessionLengthSSOInDays)
@@ -260,7 +260,7 @@ func newSession(appName string, user *model.User) (*model.Session, *model.AppErr
session.AddProp(model.SESSION_PROP_OS, "OAuth2")
session.AddProp(model.SESSION_PROP_BROWSER, "OAuth2")
- if result := <-Srv.Store.Session().Save(session); result.Err != nil {
+ if result := <-a.Srv.Store.Session().Save(session); result.Err != nil {
return nil, model.NewAppError("newSession", "api.oauth.get_access_token.internal_session.app_error", nil, "", http.StatusInternalServerError)
} else {
session = result.Data.(*model.Session)
@@ -270,11 +270,11 @@ func newSession(appName string, user *model.User) (*model.Session, *model.AppErr
return session, nil
}
-func newSessionUpdateToken(appName string, accessData *model.AccessData, user *model.User) (*model.AccessResponse, *model.AppError) {
+func (a *App) newSessionUpdateToken(appName string, accessData *model.AccessData, user *model.User) (*model.AccessResponse, *model.AppError) {
var session *model.Session
- <-Srv.Store.Session().Remove(accessData.Token) //remove the previous session
+ <-a.Srv.Store.Session().Remove(accessData.Token) //remove the previous session
- if result, err := newSession(appName, user); err != nil {
+ if result, err := a.newSession(appName, user); err != nil {
return nil, err
} else {
session = result
@@ -283,7 +283,7 @@ func newSessionUpdateToken(appName string, accessData *model.AccessData, user *m
accessData.Token = session.Token
accessData.RefreshToken = model.NewId()
accessData.ExpiresAt = session.ExpiresAt
- if result := <-Srv.Store.OAuth().UpdateAccessData(accessData); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().UpdateAccessData(accessData); result.Err != nil {
l4g.Error(result.Err)
return nil, model.NewAppError("newSessionUpdateToken", "web.get_access_token.internal_saving.app_error", nil, "", http.StatusInternalServerError)
}
@@ -297,7 +297,7 @@ func newSessionUpdateToken(appName string, accessData *model.AccessData, user *m
return accessRsp, nil
}
-func GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, teamId, action, redirectTo, loginHint string) (string, *model.AppError) {
+func (a *App) GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, teamId, action, redirectTo, loginHint string) (string, *model.AppError) {
stateProps := map[string]string{}
stateProps["action"] = action
if len(teamId) != 0 {
@@ -308,33 +308,33 @@ func GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, team
stateProps["redirect_to"] = redirectTo
}
- if authUrl, err := GetAuthorizationCode(w, r, service, stateProps, loginHint); err != nil {
+ if authUrl, err := a.GetAuthorizationCode(w, r, service, stateProps, loginHint); err != nil {
return "", err
} else {
return authUrl, nil
}
}
-func GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamId string) (string, *model.AppError) {
+func (a *App) GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamId string) (string, *model.AppError) {
stateProps := map[string]string{}
stateProps["action"] = model.OAUTH_ACTION_SIGNUP
if len(teamId) != 0 {
stateProps["team_id"] = teamId
}
- if authUrl, err := GetAuthorizationCode(w, r, service, stateProps, ""); err != nil {
+ if authUrl, err := a.GetAuthorizationCode(w, r, service, stateProps, ""); err != nil {
return "", err
} else {
return authUrl, nil
}
}
-func GetAuthorizedAppsForUser(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError) {
+func (a *App) GetAuthorizedAppsForUser(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetAuthorizedAppsForUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.OAuth().GetAuthorizedApps(userId, page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetAuthorizedApps(userId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
apps := result.Data.([]*model.OAuthApp)
@@ -347,58 +347,58 @@ func GetAuthorizedAppsForUser(userId string, page, perPage int) ([]*model.OAuthA
}
}
-func DeauthorizeOAuthAppForUser(userId, appId string) *model.AppError {
+func (a *App) DeauthorizeOAuthAppForUser(userId, appId string) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return model.NewAppError("DeauthorizeOAuthAppForUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
// revoke app sessions
- if result := <-Srv.Store.OAuth().GetAccessDataByUserForApp(userId, appId); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetAccessDataByUserForApp(userId, appId); result.Err != nil {
return result.Err
} else {
accessData := result.Data.([]*model.AccessData)
- for _, a := range accessData {
- if err := RevokeAccessToken(a.Token); err != nil {
+ for _, ad := range accessData {
+ if err := a.RevokeAccessToken(ad.Token); err != nil {
return err
}
- if rad := <-Srv.Store.OAuth().RemoveAccessData(a.Token); rad.Err != nil {
+ if rad := <-a.Srv.Store.OAuth().RemoveAccessData(ad.Token); rad.Err != nil {
return rad.Err
}
}
}
// Deauthorize the app
- if err := (<-Srv.Store.Preference().Delete(userId, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, appId)).Err; err != nil {
+ if err := (<-a.Srv.Store.Preference().Delete(userId, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, appId)).Err; err != nil {
return err
}
return nil
}
-func RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *model.AppError) {
+func (a *App) RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("RegenerateOAuthAppSecret", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
}
app.ClientSecret = model.NewId()
- if update := <-Srv.Store.OAuth().UpdateApp(app); update.Err != nil {
+ if update := <-a.Srv.Store.OAuth().UpdateApp(app); update.Err != nil {
return nil, update.Err
}
return app, nil
}
-func RevokeAccessToken(token string) *model.AppError {
- session, _ := GetSession(token)
- schan := Srv.Store.Session().Remove(token)
+func (a *App) RevokeAccessToken(token string) *model.AppError {
+ session, _ := a.GetSession(token)
+ schan := a.Srv.Store.Session().Remove(token)
- if result := <-Srv.Store.OAuth().GetAccessData(token); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().GetAccessData(token); result.Err != nil {
return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.get.app_error", nil, "", http.StatusBadRequest)
}
- tchan := Srv.Store.OAuth().RemoveAccessData(token)
+ tchan := a.Srv.Store.OAuth().RemoveAccessData(token)
if result := <-tchan; result.Err != nil {
return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.del_token.app_error", nil, "", http.StatusInternalServerError)
@@ -415,7 +415,7 @@ func RevokeAccessToken(token string) *model.AppError {
return nil
}
-func CompleteOAuth(service string, body io.ReadCloser, teamId string, props map[string]string) (*model.User, *model.AppError) {
+func (a *App) CompleteOAuth(service string, body io.ReadCloser, teamId string, props map[string]string) (*model.User, *model.AppError) {
defer func() {
ioutil.ReadAll(body)
body.Close()
@@ -425,19 +425,19 @@ func CompleteOAuth(service string, body io.ReadCloser, teamId string, props map[
switch action {
case model.OAUTH_ACTION_SIGNUP:
- return CreateOAuthUser(service, body, teamId)
+ return a.CreateOAuthUser(service, body, teamId)
case model.OAUTH_ACTION_LOGIN:
- return LoginByOAuth(service, body, teamId)
+ return a.LoginByOAuth(service, body, teamId)
case model.OAUTH_ACTION_EMAIL_TO_SSO:
- return CompleteSwitchWithOAuth(service, body, props["email"])
+ return a.CompleteSwitchWithOAuth(service, body, props["email"])
case model.OAUTH_ACTION_SSO_TO_EMAIL:
- return LoginByOAuth(service, body, teamId)
+ return a.LoginByOAuth(service, body, teamId)
default:
- return LoginByOAuth(service, body, teamId)
+ return a.LoginByOAuth(service, body, teamId)
}
}
-func LoginByOAuth(service string, userData io.Reader, teamId string) (*model.User, *model.AppError) {
+func (a *App) LoginByOAuth(service string, userData io.Reader, teamId string) (*model.User, *model.AppError) {
buf := bytes.Buffer{}
buf.ReadFrom(userData)
@@ -455,20 +455,20 @@ func LoginByOAuth(service string, userData io.Reader, teamId string) (*model.Use
map[string]interface{}{"Service": service}, "", http.StatusBadRequest)
}
- user, err := GetUserByAuth(&authData, service)
+ user, err := a.GetUserByAuth(&authData, service)
if err != nil {
if err.Id == store.MISSING_AUTH_ACCOUNT_ERROR {
- return CreateOAuthUser(service, bytes.NewReader(buf.Bytes()), teamId)
+ return a.CreateOAuthUser(service, bytes.NewReader(buf.Bytes()), teamId)
}
return nil, err
}
- if err = UpdateOAuthUserAttrs(bytes.NewReader(buf.Bytes()), user, provider, service); err != nil {
+ if err = a.UpdateOAuthUserAttrs(bytes.NewReader(buf.Bytes()), user, provider, service); err != nil {
return nil, err
}
if len(teamId) > 0 {
- err = AddUserToTeamByTeamId(teamId, user)
+ err = a.AddUserToTeamByTeamId(teamId, user)
}
if err != nil {
@@ -478,7 +478,7 @@ func LoginByOAuth(service string, userData io.Reader, teamId string) (*model.Use
return user, nil
}
-func CompleteSwitchWithOAuth(service string, userData io.ReadCloser, email string) (*model.User, *model.AppError) {
+func (a *App) CompleteSwitchWithOAuth(service string, userData io.ReadCloser, email string) (*model.User, *model.AppError) {
authData := ""
ssoEmail := ""
provider := einterfaces.GetOauthProvider(service)
@@ -504,17 +504,17 @@ func CompleteSwitchWithOAuth(service string, userData io.ReadCloser, email strin
}
var user *model.User
- if result := <-Srv.Store.User().GetByEmail(email); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetByEmail(email); result.Err != nil {
return nil, result.Err
} else {
user = result.Data.(*model.User)
}
- if err := RevokeAllSessions(user.Id); err != nil {
+ if err := a.RevokeAllSessions(user.Id); err != nil {
return nil, err
}
- if result := <-Srv.Store.User().UpdateAuthData(user.Id, service, &authData, ssoEmail, true); result.Err != nil {
+ if result := <-a.Srv.Store.User().UpdateAuthData(user.Id, service, &authData, ssoEmail, true); result.Err != nil {
return nil, result.Err
}
@@ -527,18 +527,18 @@ func CompleteSwitchWithOAuth(service string, userData io.ReadCloser, email strin
return user, nil
}
-func CreateOAuthStateToken(extra string) (*model.Token, *model.AppError) {
+func (a *App) CreateOAuthStateToken(extra string) (*model.Token, *model.AppError) {
token := model.NewToken(model.TOKEN_TYPE_OAUTH, extra)
- if result := <-Srv.Store.Token().Save(token); result.Err != nil {
+ if result := <-a.Srv.Store.Token().Save(token); result.Err != nil {
return nil, result.Err
}
return token, nil
}
-func GetOAuthStateToken(token string) (*model.Token, *model.AppError) {
- if result := <-Srv.Store.Token().GetByToken(token); result.Err != nil {
+func (a *App) GetOAuthStateToken(token string) (*model.Token, *model.AppError) {
+ if result := <-a.Srv.Store.Token().GetByToken(token); result.Err != nil {
return nil, model.NewAppError("GetOAuthStateToken", "api.oauth.invalid_state_token.app_error", nil, result.Err.Error(), http.StatusBadRequest)
} else {
token := result.Data.(*model.Token)
@@ -554,7 +554,7 @@ func generateOAuthStateTokenExtra(email, action, cookie string) string {
return email + ":" + action + ":" + cookie
}
-func GetAuthorizationCode(w http.ResponseWriter, r *http.Request, service string, props map[string]string, loginHint string) (string, *model.AppError) {
+func (a *App) GetAuthorizationCode(w http.ResponseWriter, r *http.Request, service string, props map[string]string, loginHint string) (string, *model.AppError) {
sso := utils.Cfg.GetSSOService(service)
if sso != nil && !sso.Enable {
return "", model.NewAppError("GetAuthorizationCode", "api.user.get_authorization_code.unsupported.app_error", nil, "service="+service, http.StatusNotImplemented)
@@ -584,7 +584,7 @@ func GetAuthorizationCode(w http.ResponseWriter, r *http.Request, service string
scope := sso.Scope
tokenExtra := generateOAuthStateTokenExtra(props["email"], props["action"], cookieValue)
- stateToken, err := CreateOAuthStateToken(tokenExtra)
+ stateToken, err := a.CreateOAuthStateToken(tokenExtra)
if err != nil {
return "", err
}
@@ -607,7 +607,7 @@ func GetAuthorizationCode(w http.ResponseWriter, r *http.Request, service string
return authUrl, nil
}
-func AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, state, redirectUri string) (io.ReadCloser, string, map[string]string, *model.AppError) {
+func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, state, redirectUri string) (io.ReadCloser, string, map[string]string, *model.AppError) {
sso := utils.Cfg.GetSSOService(service)
if sso == nil || !sso.Enable {
return nil, "", nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.unsupported.app_error", nil, "service="+service, http.StatusNotImplemented)
@@ -622,7 +622,7 @@ func AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, s
stateProps := model.MapFromJson(strings.NewReader(stateStr))
- expectedToken, err := GetOAuthStateToken(stateProps["token"])
+ expectedToken, err := a.GetOAuthStateToken(stateProps["token"])
if err != nil {
return nil, "", stateProps, err
}
@@ -645,7 +645,7 @@ func AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, s
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.invalid_state.app_error", nil, "", http.StatusBadRequest)
}
- DeleteToken(expectedToken)
+ a.DeleteToken(expectedToken)
cookie := &http.Cookie{
Name: COOKIE_OAUTH,
@@ -710,14 +710,14 @@ func AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, s
}
-func SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password, code, service string) (string, *model.AppError) {
+func (a *App) SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password, code, service string) (string, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUserByEmail(email); err != nil {
+ if user, err = a.GetUserByEmail(email); err != nil {
return "", err
}
- if err := CheckPasswordAndAllCriteria(user, password, code); err != nil {
+ if err := a.CheckPasswordAndAllCriteria(user, password, code); err != nil {
return "", err
}
@@ -728,7 +728,7 @@ func SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password,
if service == model.USER_AUTH_SERVICE_SAML {
return utils.GetSiteURL() + "/login/sso/saml?action=" + model.OAUTH_ACTION_EMAIL_TO_SSO + "&email=" + email, nil
} else {
- if authUrl, err := GetAuthorizationCode(w, r, service, stateProps, ""); err != nil {
+ if authUrl, err := a.GetAuthorizationCode(w, r, service, stateProps, ""); err != nil {
return "", err
} else {
return authUrl, nil
@@ -736,10 +736,10 @@ func SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password,
}
}
-func SwitchOAuthToEmail(email, password, requesterId string) (string, *model.AppError) {
+func (a *App) SwitchOAuthToEmail(email, password, requesterId string) (string, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUserByEmail(email); err != nil {
+ if user, err = a.GetUserByEmail(email); err != nil {
return "", err
}
@@ -747,7 +747,7 @@ func SwitchOAuthToEmail(email, password, requesterId string) (string, *model.App
return "", model.NewAppError("SwitchOAuthToEmail", "api.user.oauth_to_email.context.app_error", nil, "", http.StatusForbidden)
}
- if err := UpdatePassword(user, password); err != nil {
+ if err := a.UpdatePassword(user, password); err != nil {
return "", err
}
@@ -759,7 +759,7 @@ func SwitchOAuthToEmail(email, password, requesterId string) (string, *model.App
}
}()
- if err := RevokeAllSessions(requesterId); err != nil {
+ if err := a.RevokeAllSessions(requesterId); err != nil {
return "", err
}
diff --git a/app/oauth_test.go b/app/oauth_test.go
index 185f5d73f..349cc4a9c 100644
--- a/app/oauth_test.go
+++ b/app/oauth_test.go
@@ -11,8 +11,9 @@ import (
)
func TestOAuthRevokeAccessToken(t *testing.T) {
- Setup()
- if err := RevokeAccessToken(model.NewRandomString(16)); err == nil {
+ a := Global()
+ a.Setup()
+ if err := a.RevokeAccessToken(model.NewRandomString(16)); err == nil {
t.Fatal("Should have failed bad token")
}
@@ -23,8 +24,8 @@ func TestOAuthRevokeAccessToken(t *testing.T) {
session.Roles = model.ROLE_SYSTEM_USER.Id
session.SetExpireInDays(1)
- session, _ = CreateSession(session)
- if err := RevokeAccessToken(session.Token); err == nil {
+ session, _ = a.CreateSession(session)
+ if err := a.RevokeAccessToken(session.Token); err == nil {
t.Fatal("Should have failed does not have an access token")
}
@@ -35,17 +36,18 @@ func TestOAuthRevokeAccessToken(t *testing.T) {
accessData.ClientId = model.NewId()
accessData.ExpiresAt = session.ExpiresAt
- if result := <-Srv.Store.OAuth().SaveAccessData(accessData); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().SaveAccessData(accessData); result.Err != nil {
t.Fatal(result.Err)
}
- if err := RevokeAccessToken(accessData.Token); err != nil {
+ if err := a.RevokeAccessToken(accessData.Token); err != nil {
t.Fatal(err)
}
}
func TestOAuthDeleteApp(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
oldSetting := utils.Cfg.ServiceSettings.EnableOAuthServiceProvider
defer func() {
@@ -60,7 +62,7 @@ func TestOAuthDeleteApp(t *testing.T) {
a1.Homepage = "https://nowhere.com"
var err *model.AppError
- a1, err = CreateOAuthApp(a1)
+ a1, err = a.CreateOAuthApp(a1)
if err != nil {
t.Fatal(err)
}
@@ -73,7 +75,7 @@ func TestOAuthDeleteApp(t *testing.T) {
session.IsOAuth = true
session.SetExpireInDays(1)
- session, _ = CreateSession(session)
+ session, _ = a.CreateSession(session)
accessData := &model.AccessData{}
accessData.Token = session.Token
@@ -82,15 +84,15 @@ func TestOAuthDeleteApp(t *testing.T) {
accessData.ClientId = a1.Id
accessData.ExpiresAt = session.ExpiresAt
- if result := <-Srv.Store.OAuth().SaveAccessData(accessData); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().SaveAccessData(accessData); result.Err != nil {
t.Fatal(result.Err)
}
- if err := DeleteOAuthApp(a1.Id); err != nil {
+ if err := a.DeleteOAuthApp(a1.Id); err != nil {
t.Fatal(err)
}
- if _, err := GetSession(session.Token); err == nil {
+ if _, err := a.GetSession(session.Token); err == nil {
t.Fatal("should not get session from cache or db")
}
}
diff --git a/app/plugins.go b/app/plugins.go
index 1101f2b65..5dbb0a817 100644
--- a/app/plugins.go
+++ b/app/plugins.go
@@ -42,23 +42,23 @@ func (api *PluginAPI) PluginRouter() *mux.Router {
}
func (api *PluginAPI) GetTeamByName(name string) (*model.Team, *model.AppError) {
- return GetTeamByName(name)
+ return Global().GetTeamByName(name)
}
func (api *PluginAPI) GetUserByName(name string) (*model.User, *model.AppError) {
- return GetUserByUsername(name)
+ return Global().GetUserByUsername(name)
}
func (api *PluginAPI) GetChannelByName(teamId, name string) (*model.Channel, *model.AppError) {
- return GetChannelByName(name, teamId)
+ return Global().GetChannelByName(name, teamId)
}
func (api *PluginAPI) GetDirectChannel(userId1, userId2 string) (*model.Channel, *model.AppError) {
- return GetDirectChannel(userId1, userId2)
+ return Global().GetDirectChannel(userId1, userId2)
}
func (api *PluginAPI) CreatePost(post *model.Post) (*model.Post, *model.AppError) {
- return CreatePostMissingChannel(post, true)
+ return Global().CreatePostMissingChannel(post, true)
}
func (api *PluginAPI) GetLdapUserAttributes(userId string, attributes []string) (map[string]string, *model.AppError) {
@@ -67,7 +67,7 @@ func (api *PluginAPI) GetLdapUserAttributes(userId string, attributes []string)
return nil, model.NewAppError("GetLdapUserAttributes", "ent.ldap.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- user, err := GetUser(userId)
+ user, err := Global().GetUser(userId)
if err != nil {
return nil, err
}
@@ -111,7 +111,7 @@ func (api *PluginAPI) GetSessionFromRequest(r *http.Request) (*model.Session, *m
return nil, model.NewAppError("ServeHTTP", "api.context.session_expired.app_error", nil, "token="+token, http.StatusUnauthorized)
}
- session, err := GetSession(token)
+ session, err := Global().GetSession(token)
if err != nil {
return nil, model.NewAppError("ServeHTTP", "api.context.session_expired.app_error", nil, "token="+token, http.StatusUnauthorized)
@@ -131,7 +131,7 @@ func (api *PluginAPI) I18n(id string, r *http.Request) string {
return f(id)
}
-func InitPlugins() {
+func (a *App) InitPlugins() {
plugins := map[string]plugin.Plugin{
"jira": &jira.Plugin{},
"ldapextras": &ldapextras.Plugin{},
@@ -140,7 +140,7 @@ func InitPlugins() {
l4g.Info("Initializing plugin: " + id)
api := &PluginAPI{
id: id,
- router: Srv.Router.PathPrefix("/plugins/" + id).Subrouter(),
+ router: a.Srv.Router.PathPrefix("/plugins/" + id).Subrouter(),
}
p.Initialize(api)
}
@@ -154,20 +154,20 @@ func InitPlugins() {
}
}
-func ActivatePlugins() {
- if Srv.PluginEnv == nil {
+func (a *App) ActivatePlugins() {
+ if a.Srv.PluginEnv == nil {
l4g.Error("plugin env not initialized")
return
}
- plugins, err := Srv.PluginEnv.Plugins()
+ plugins, err := a.Srv.PluginEnv.Plugins()
if err != nil {
l4g.Error("failed to start up plugins: " + err.Error())
return
}
for _, plugin := range plugins {
- err := Srv.PluginEnv.ActivatePlugin(plugin.Manifest.Id)
+ err := a.Srv.PluginEnv.ActivatePlugin(plugin.Manifest.Id)
if err != nil {
l4g.Error(err.Error())
}
@@ -175,8 +175,8 @@ func ActivatePlugins() {
}
}
-func UnpackAndActivatePlugin(pluginFile io.Reader) (*model.Manifest, *model.AppError) {
- if Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
+func (a *App) UnpackAndActivatePlugin(pluginFile io.Reader) (*model.Manifest, *model.AppError) {
+ if a.Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
return nil, model.NewAppError("UnpackAndActivatePlugin", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented)
}
@@ -210,14 +210,14 @@ func UnpackAndActivatePlugin(pluginFile io.Reader) (*model.Manifest, *model.AppE
return nil, model.NewAppError("UnpackAndActivatePlugin", "app.plugin.manifest.app_error", nil, err.Error(), http.StatusBadRequest)
}
- os.Rename(manifestDir, filepath.Join(Srv.PluginEnv.SearchPath(), manifest.Id))
+ os.Rename(manifestDir, filepath.Join(a.Srv.PluginEnv.SearchPath(), manifest.Id))
if err != nil {
return nil, model.NewAppError("UnpackAndActivatePlugin", "app.plugin.mvdir.app_error", nil, err.Error(), http.StatusInternalServerError)
}
// Should add manifest validation and error handling here
- err = Srv.PluginEnv.ActivatePlugin(manifest.Id)
+ err = a.Srv.PluginEnv.ActivatePlugin(manifest.Id)
if err != nil {
return nil, model.NewAppError("UnpackAndActivatePlugin", "app.plugin.activate.app_error", nil, err.Error(), http.StatusBadRequest)
}
@@ -225,12 +225,12 @@ func UnpackAndActivatePlugin(pluginFile io.Reader) (*model.Manifest, *model.AppE
return manifest, nil
}
-func GetActivePluginManifests() ([]*model.Manifest, *model.AppError) {
- if Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
+func (a *App) GetActivePluginManifests() ([]*model.Manifest, *model.AppError) {
+ if a.Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
return nil, model.NewAppError("GetActivePluginManifests", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- plugins, err := Srv.PluginEnv.ActivePlugins()
+ plugins, err := a.Srv.PluginEnv.ActivePlugins()
if err != nil {
return nil, model.NewAppError("GetActivePluginManifests", "app.plugin.get_plugins.app_error", nil, err.Error(), http.StatusInternalServerError)
}
@@ -243,17 +243,17 @@ func GetActivePluginManifests() ([]*model.Manifest, *model.AppError) {
return manifests, nil
}
-func RemovePlugin(id string) *model.AppError {
- if Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
+func (a *App) RemovePlugin(id string) *model.AppError {
+ if a.Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
return model.NewAppError("RemovePlugin", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- err := Srv.PluginEnv.DeactivatePlugin(id)
+ err := a.Srv.PluginEnv.DeactivatePlugin(id)
if err != nil {
return model.NewAppError("RemovePlugin", "app.plugin.deactivate.app_error", nil, err.Error(), http.StatusBadRequest)
}
- err = os.RemoveAll(filepath.Join(Srv.PluginEnv.SearchPath(), id))
+ err = os.RemoveAll(filepath.Join(a.Srv.PluginEnv.SearchPath(), id))
if err != nil {
return model.NewAppError("RemovePlugin", "app.plugin.remove.app_error", nil, err.Error(), http.StatusInternalServerError)
}
@@ -267,12 +267,12 @@ type ClientConfigPlugin struct {
BundlePath string `json:"bundle_path"`
}
-func GetPluginsForClientConfig() string {
- if Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
+func (a *App) GetPluginsForClientConfig() string {
+ if a.Srv.PluginEnv == nil || !*utils.Cfg.PluginSettings.Enable {
return ""
}
- plugins, err := Srv.PluginEnv.ActivePlugins()
+ plugins, err := a.Srv.PluginEnv.ActivePlugins()
if err != nil {
return ""
}
diff --git a/app/post.go b/app/post.go
index 6e97ca680..bb2a1b5d7 100644
--- a/app/post.go
+++ b/app/post.go
@@ -20,10 +20,10 @@ import (
var linkWithTextRegex = regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`)
-func CreatePostAsUser(post *model.Post) (*model.Post, *model.AppError) {
+func (a *App) CreatePostAsUser(post *model.Post) (*model.Post, *model.AppError) {
// Check that channel has not been deleted
var channel *model.Channel
- if result := <-Srv.Store.Channel().Get(post.ChannelId, true); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().Get(post.ChannelId, true); result.Err != nil {
err := model.NewAppError("CreatePostAsUser", "api.context.invalid_param.app_error", map[string]interface{}{"Name": "post.channel_id"}, result.Err.Error(), http.StatusBadRequest)
return nil, err
} else {
@@ -35,7 +35,7 @@ func CreatePostAsUser(post *model.Post) (*model.Post, *model.AppError) {
return nil, err
}
- if rp, err := CreatePost(post, channel, true); err != nil {
+ if rp, err := a.CreatePost(post, channel, true); err != nil {
if err.Id == "api.post.create_post.root_id.app_error" ||
err.Id == "api.post.create_post.channel_root_id.app_error" ||
err.Id == "api.post.create_post.parent_id.app_error" {
@@ -43,7 +43,7 @@ func CreatePostAsUser(post *model.Post) (*model.Post, *model.AppError) {
}
if err.Id == "api.post.create_post.town_square_read_only" {
- uchan := Srv.Store.User().Get(post.UserId)
+ uchan := a.Srv.Store.User().Get(post.UserId)
var user *model.User
if result := <-uchan; result.Err != nil {
return nil, result.Err
@@ -69,7 +69,7 @@ func CreatePostAsUser(post *model.Post) (*model.Post, *model.AppError) {
} else {
// Update the LastViewAt only if the post does not have from_webhook prop set (eg. Zapier app)
if _, ok := post.Props["from_webhook"]; !ok {
- if result := <-Srv.Store.Channel().UpdateLastViewedAt([]string{post.ChannelId}, post.UserId); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().UpdateLastViewedAt([]string{post.ChannelId}, post.UserId); result.Err != nil {
l4g.Error(utils.T("api.post.create_post.last_viewed.error"), post.ChannelId, post.UserId, result.Err)
}
@@ -85,25 +85,25 @@ func CreatePostAsUser(post *model.Post) (*model.Post, *model.AppError) {
}
-func CreatePostMissingChannel(post *model.Post, triggerWebhooks bool) (*model.Post, *model.AppError) {
+func (a *App) CreatePostMissingChannel(post *model.Post, triggerWebhooks bool) (*model.Post, *model.AppError) {
var channel *model.Channel
- cchan := Srv.Store.Channel().Get(post.ChannelId, true)
+ cchan := a.Srv.Store.Channel().Get(post.ChannelId, true)
if result := <-cchan; result.Err != nil {
return nil, result.Err
} else {
channel = result.Data.(*model.Channel)
}
- return CreatePost(post, channel, triggerWebhooks)
+ return a.CreatePost(post, channel, triggerWebhooks)
}
-func CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks bool) (*model.Post, *model.AppError) {
+func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks bool) (*model.Post, *model.AppError) {
var pchan store.StoreChannel
if len(post.RootId) > 0 {
- pchan = Srv.Store.Post().Get(post.RootId)
+ pchan = a.Srv.Store.Post().Get(post.RootId)
}
- uchan := Srv.Store.User().Get(post.UserId)
+ uchan := a.Srv.Store.User().Get(post.UserId)
var user *model.User
if result := <-uchan; result.Err != nil {
return nil, result.Err
@@ -145,7 +145,7 @@ func CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks bool)
post.Hashtags, _ = model.ParseHashtags(post.Message)
var rpost *model.Post
- if result := <-Srv.Store.Post().Save(post); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Save(post); result.Err != nil {
return nil, result.Err
} else {
rpost = result.Data.(*model.Post)
@@ -165,7 +165,7 @@ func CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks bool)
post.FileIds = utils.RemoveDuplicatesFromStringArray(post.FileIds)
for _, fileId := range post.FileIds {
- if result := <-Srv.Store.FileInfo().AttachToPost(fileId, post.Id); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().AttachToPost(fileId, post.Id); result.Err != nil {
l4g.Error(utils.T("api.post.create_post.attach_files.error"), post.Id, post.FileIds, post.UserId, result.Err)
}
}
@@ -175,17 +175,17 @@ func CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks bool)
}
}
- if err := handlePostEvents(rpost, user, channel, triggerWebhooks, parentPostList); err != nil {
+ if err := a.handlePostEvents(rpost, user, channel, triggerWebhooks, parentPostList); err != nil {
return nil, err
}
return rpost, nil
}
-func handlePostEvents(post *model.Post, user *model.User, channel *model.Channel, triggerWebhooks bool, parentPostList *model.PostList) *model.AppError {
+func (a *App) handlePostEvents(post *model.Post, user *model.User, channel *model.Channel, triggerWebhooks bool, parentPostList *model.PostList) *model.AppError {
var tchan store.StoreChannel
if len(channel.TeamId) > 0 {
- tchan = Srv.Store.Team().Get(channel.TeamId)
+ tchan = a.Srv.Store.Team().Get(channel.TeamId)
}
var team *model.Team
@@ -200,16 +200,16 @@ func handlePostEvents(post *model.Post, user *model.User, channel *model.Channel
team = &model.Team{}
}
- InvalidateCacheForChannel(channel)
- InvalidateCacheForChannelPosts(channel.Id)
+ a.InvalidateCacheForChannel(channel)
+ a.InvalidateCacheForChannelPosts(channel.Id)
- if _, err := SendNotifications(post, team, channel, user, parentPostList); err != nil {
+ if _, err := a.SendNotifications(post, team, channel, user, parentPostList); err != nil {
return err
}
if triggerWebhooks {
go func() {
- if err := handleWebhookEvents(post, team, channel, user); err != nil {
+ if err := a.handleWebhookEvents(post, team, channel, user); err != nil {
l4g.Error(err.Error())
}
}()
@@ -262,9 +262,9 @@ func SendEphemeralPost(userId string, post *model.Post) *model.Post {
return post
}
-func UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError) {
+func (a *App) UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError) {
var oldPost *model.Post
- if result := <-Srv.Store.Post().Get(post.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Get(post.Id); result.Err != nil {
return nil, result.Err
} else {
oldPost = result.Data.(*model.PostList).Posts[post.Id]
@@ -315,7 +315,7 @@ func UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError
newPost.Props = post.Props
}
- if result := <-Srv.Store.Post().Update(newPost, oldPost); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Update(newPost, oldPost); result.Err != nil {
return nil, result.Err
} else {
rpost := result.Data.(*model.Post)
@@ -323,7 +323,7 @@ func UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError
esInterface := einterfaces.GetElasticsearchInterface()
if esInterface != nil && *utils.Cfg.ElasticsearchSettings.EnableIndexing {
go func() {
- if rchannel := <-Srv.Store.Channel().GetForPost(rpost.Id); rchannel.Err != nil {
+ if rchannel := <-a.Srv.Store.Channel().GetForPost(rpost.Id); rchannel.Err != nil {
l4g.Error("Couldn't get channel %v for post %v for Elasticsearch indexing.", rpost.ChannelId, rpost.Id)
} else {
esInterface.IndexPost(rpost, rchannel.Data.(*model.Channel).TeamId)
@@ -333,27 +333,27 @@ func UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError
sendUpdatedPostEvent(rpost)
- InvalidateCacheForChannelPosts(rpost.ChannelId)
+ a.InvalidateCacheForChannelPosts(rpost.ChannelId)
return rpost, nil
}
}
-func PatchPost(postId string, patch *model.PostPatch) (*model.Post, *model.AppError) {
- post, err := GetSinglePost(postId)
+func (a *App) PatchPost(postId string, patch *model.PostPatch) (*model.Post, *model.AppError) {
+ post, err := a.GetSinglePost(postId)
if err != nil {
return nil, err
}
post.Patch(patch)
- updatedPost, err := UpdatePost(post, false)
+ updatedPost, err := a.UpdatePost(post, false)
if err != nil {
return nil, err
}
sendUpdatedPostEvent(updatedPost)
- InvalidateCacheForChannelPosts(updatedPost.ChannelId)
+ a.InvalidateCacheForChannelPosts(updatedPost.ChannelId)
return updatedPost, nil
}
@@ -365,76 +365,76 @@ func sendUpdatedPostEvent(post *model.Post) {
go Publish(message)
}
-func GetPostsPage(channelId string, page int, perPage int) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetPosts(channelId, page*perPage, perPage, true); result.Err != nil {
+func (a *App) GetPostsPage(channelId string, page int, perPage int) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetPosts(channelId, page*perPage, perPage, true); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetPosts(channelId string, offset int, limit int) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetPosts(channelId, offset, limit, true); result.Err != nil {
+func (a *App) GetPosts(channelId string, offset int, limit int) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetPosts(channelId, offset, limit, true); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetPostsEtag(channelId string) string {
- return (<-Srv.Store.Post().GetEtag(channelId, true)).Data.(string)
+func (a *App) GetPostsEtag(channelId string) string {
+ return (<-a.Srv.Store.Post().GetEtag(channelId, true)).Data.(string)
}
-func GetPostsSince(channelId string, time int64) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetPostsSince(channelId, time, true); result.Err != nil {
+func (a *App) GetPostsSince(channelId string, time int64) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetPostsSince(channelId, time, true); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetSinglePost(postId string) (*model.Post, *model.AppError) {
- if result := <-Srv.Store.Post().GetSingle(postId); result.Err != nil {
+func (a *App) GetSinglePost(postId string) (*model.Post, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetSingle(postId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Post), nil
}
}
-func GetPostThread(postId string) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().Get(postId); result.Err != nil {
+func (a *App) GetPostThread(postId string) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().Get(postId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetFlaggedPosts(userId, offset, limit); result.Err != nil {
+func (a *App) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetFlaggedPosts(userId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetFlaggedPostsForTeam(userId, teamId, offset, limit); result.Err != nil {
+func (a *App) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetFlaggedPostsForTeam(userId, teamId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetFlaggedPostsForChannel(userId, channelId string, offset int, limit int) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetFlaggedPostsForChannel(userId, channelId, offset, limit); result.Err != nil {
+func (a *App) GetFlaggedPostsForChannel(userId, channelId string, offset int, limit int) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetFlaggedPostsForChannel(userId, channelId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetPermalinkPost(postId string, userId string) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().Get(postId); result.Err != nil {
+func (a *App) GetPermalinkPost(postId string, userId string) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().Get(postId); result.Err != nil {
return nil, result.Err
} else {
list := result.Data.(*model.PostList)
@@ -446,11 +446,11 @@ func GetPermalinkPost(postId string, userId string) (*model.PostList, *model.App
var channel *model.Channel
var err *model.AppError
- if channel, err = GetChannel(post.ChannelId); err != nil {
+ if channel, err = a.GetChannel(post.ChannelId); err != nil {
return nil, err
}
- if err = JoinChannel(channel, userId); err != nil {
+ if err = a.JoinChannel(channel, userId); err != nil {
return nil, err
}
@@ -458,28 +458,28 @@ func GetPermalinkPost(postId string, userId string) (*model.PostList, *model.App
}
}
-func GetPostsBeforePost(channelId, postId string, page, perPage int) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetPostsBefore(channelId, postId, perPage, page*perPage); result.Err != nil {
+func (a *App) GetPostsBeforePost(channelId, postId string, page, perPage int) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetPostsBefore(channelId, postId, perPage, page*perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetPostsAfterPost(channelId, postId string, page, perPage int) (*model.PostList, *model.AppError) {
- if result := <-Srv.Store.Post().GetPostsAfter(channelId, postId, perPage, page*perPage); result.Err != nil {
+func (a *App) GetPostsAfterPost(channelId, postId string, page, perPage int) (*model.PostList, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetPostsAfter(channelId, postId, perPage, page*perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.PostList), nil
}
}
-func GetPostsAroundPost(postId, channelId string, offset, limit int, before bool) (*model.PostList, *model.AppError) {
+func (a *App) GetPostsAroundPost(postId, channelId string, offset, limit int, before bool) (*model.PostList, *model.AppError) {
var pchan store.StoreChannel
if before {
- pchan = Srv.Store.Post().GetPostsBefore(channelId, postId, limit, offset)
+ pchan = a.Srv.Store.Post().GetPostsBefore(channelId, postId, limit, offset)
} else {
- pchan = Srv.Store.Post().GetPostsAfter(channelId, postId, limit, offset)
+ pchan = a.Srv.Store.Post().GetPostsAfter(channelId, postId, limit, offset)
}
if result := <-pchan; result.Err != nil {
@@ -489,14 +489,14 @@ func GetPostsAroundPost(postId, channelId string, offset, limit int, before bool
}
}
-func DeletePost(postId string) (*model.Post, *model.AppError) {
- if result := <-Srv.Store.Post().GetSingle(postId); result.Err != nil {
+func (a *App) DeletePost(postId string) (*model.Post, *model.AppError) {
+ if result := <-a.Srv.Store.Post().GetSingle(postId); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return nil, result.Err
} else {
post := result.Data.(*model.Post)
- if result := <-Srv.Store.Post().Delete(postId, model.GetMillis()); result.Err != nil {
+ if result := <-a.Srv.Store.Post().Delete(postId, model.GetMillis()); result.Err != nil {
return nil, result.Err
}
@@ -504,38 +504,38 @@ func DeletePost(postId string) (*model.Post, *model.AppError) {
message.Add("post", post.ToJson())
go Publish(message)
- go DeletePostFiles(post)
- go DeleteFlaggedPosts(post.Id)
+ go a.DeletePostFiles(post)
+ go a.DeleteFlaggedPosts(post.Id)
esInterface := einterfaces.GetElasticsearchInterface()
if esInterface != nil && *utils.Cfg.ElasticsearchSettings.EnableIndexing {
go esInterface.DeletePost(post)
}
- InvalidateCacheForChannelPosts(post.ChannelId)
+ a.InvalidateCacheForChannelPosts(post.ChannelId)
return post, nil
}
}
-func DeleteFlaggedPosts(postId string) {
- if result := <-Srv.Store.Preference().DeleteCategoryAndName(model.PREFERENCE_CATEGORY_FLAGGED_POST, postId); result.Err != nil {
+func (a *App) DeleteFlaggedPosts(postId string) {
+ if result := <-a.Srv.Store.Preference().DeleteCategoryAndName(model.PREFERENCE_CATEGORY_FLAGGED_POST, postId); result.Err != nil {
l4g.Warn(utils.T("api.post.delete_flagged_post.app_error.warn"), result.Err)
return
}
}
-func DeletePostFiles(post *model.Post) {
+func (a *App) DeletePostFiles(post *model.Post) {
if len(post.FileIds) != 0 {
return
}
- if result := <-Srv.Store.FileInfo().DeleteForPost(post.Id); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().DeleteForPost(post.Id); result.Err != nil {
l4g.Warn(utils.T("api.post.delete_post_files.app_error.warn"), post.Id, result.Err)
}
}
-func SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bool) (*model.PostList, *model.AppError) {
+func (a *App) SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bool) (*model.PostList, *model.AppError) {
paramsList := model.ParseSearchParams(terms)
esInterface := einterfaces.GetElasticsearchInterface()
@@ -548,7 +548,7 @@ func SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bo
if params.Terms != "*" {
// Convert channel names to channel IDs
for idx, channelName := range params.InChannels {
- if channel, err := GetChannelByName(channelName, teamId); err != nil {
+ if channel, err := a.GetChannelByName(channelName, teamId); err != nil {
l4g.Error(err)
} else {
params.InChannels[idx] = channel.Id
@@ -557,7 +557,7 @@ func SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bo
// Convert usernames to user IDs
for idx, username := range params.FromUsers {
- if user, err := GetUserByUsername(username); err != nil {
+ if user, err := a.GetUserByUsername(username); err != nil {
l4g.Error(err)
} else {
params.FromUsers[idx] = user.Id
@@ -574,7 +574,7 @@ func SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bo
}
// We only allow the user to search in channels they are a member of.
- userChannels, err := GetChannelsForUser(teamId, userId)
+ userChannels, err := a.GetChannelsForUser(teamId, userId)
if err != nil {
l4g.Error(err)
return nil, err
@@ -587,7 +587,7 @@ func SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bo
// Get the posts
postList := model.NewPostList()
- if presult := <-Srv.Store.Post().GetPostsByIds(postIds); presult.Err != nil {
+ if presult := <-a.Srv.Store.Post().GetPostsByIds(postIds); presult.Err != nil {
return nil, presult.Err
} else {
for _, p := range presult.Data.([]*model.Post) {
@@ -604,7 +604,7 @@ func SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bo
params.OrTerms = isOrSearch
// don't allow users to search for everything
if params.Terms != "*" {
- channels = append(channels, Srv.Store.Post().Search(teamId, userId, params))
+ channels = append(channels, a.Srv.Store.Post().Search(teamId, userId, params))
}
}
@@ -622,9 +622,9 @@ func SearchPostsInTeam(terms string, userId string, teamId string, isOrSearch bo
}
}
-func GetFileInfosForPost(postId string, readFromMaster bool) ([]*model.FileInfo, *model.AppError) {
- pchan := Srv.Store.Post().GetSingle(postId)
- fchan := Srv.Store.FileInfo().GetForPost(postId, readFromMaster, true)
+func (a *App) GetFileInfosForPost(postId string, readFromMaster bool) ([]*model.FileInfo, *model.AppError) {
+ pchan := a.Srv.Store.Post().GetSingle(postId)
+ fchan := a.Srv.Store.FileInfo().GetForPost(postId, readFromMaster, true)
var infos []*model.FileInfo
if result := <-fchan; result.Err != nil {
@@ -643,9 +643,9 @@ func GetFileInfosForPost(postId string, readFromMaster bool) ([]*model.FileInfo,
}
if len(post.Filenames) > 0 {
- Srv.Store.FileInfo().InvalidateFileInfosForPostCache(postId)
+ a.Srv.Store.FileInfo().InvalidateFileInfosForPostCache(postId)
// The post has Filenames that need to be replaced with FileInfos
- infos = MigrateFilenamesToFileInfos(post)
+ infos = a.MigrateFilenamesToFileInfos(post)
}
}
@@ -669,8 +669,8 @@ func GetOpenGraphMetadata(url string) *opengraph.OpenGraph {
return og
}
-func DoPostAction(postId string, actionId string, userId string) *model.AppError {
- pchan := Srv.Store.Post().GetSingle(postId)
+func (a *App) DoPostAction(postId string, actionId string, userId string) *model.AppError {
+ pchan := a.Srv.Store.Post().GetSingle(postId)
var post *model.Post
if result := <-pchan; result.Err != nil {
@@ -710,7 +710,7 @@ func DoPostAction(postId string, actionId string, userId string) *model.AppError
if response.Update != nil {
response.Update.Id = postId
response.Update.AddProp("from_webhook", "true")
- if _, err := UpdatePost(response.Update, false); err != nil {
+ if _, err := a.UpdatePost(response.Update, false); err != nil {
return err
}
}
diff --git a/app/post_test.go b/app/post_test.go
index ab8e27021..e7084325e 100644
--- a/app/post_test.go
+++ b/app/post_test.go
@@ -19,13 +19,14 @@ import (
)
func TestUpdatePostEditAt(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
post := &model.Post{}
*post = *th.BasicPost
post.IsPinned = true
- if saved, err := UpdatePost(post, true); err != nil {
+ if saved, err := a.UpdatePost(post, true); err != nil {
t.Fatal(err)
} else if saved.EditAt != post.EditAt {
t.Fatal("shouldn't have updated post.EditAt when pinning post")
@@ -36,7 +37,7 @@ func TestUpdatePostEditAt(t *testing.T) {
time.Sleep(time.Millisecond * 100)
post.Message = model.NewId()
- if saved, err := UpdatePost(post, true); err != nil {
+ if saved, err := a.UpdatePost(post, true); err != nil {
t.Fatal(err)
} else if saved.EditAt == post.EditAt {
t.Fatal("should have updated post.EditAt when updating post message")
@@ -44,20 +45,21 @@ func TestUpdatePostEditAt(t *testing.T) {
}
func TestPostReplyToPostWhereRootPosterLeftChannel(t *testing.T) {
+ a := Global()
// This test ensures that when replying to a root post made by a user who has since left the channel, the reply
// post completes successfully. This is a regression test for PLT-6523.
- th := Setup().InitBasic()
+ th := a.Setup().InitBasic()
channel := th.BasicChannel
userInChannel := th.BasicUser2
userNotInChannel := th.BasicUser
rootPost := th.BasicPost
- if _, err := AddUserToChannel(userInChannel, channel); err != nil {
+ if _, err := a.AddUserToChannel(userInChannel, channel); err != nil {
t.Fatal(err)
}
- if err := RemoveUserFromChannel(userNotInChannel.Id, "", channel); err != nil {
+ if err := a.RemoveUserFromChannel(userNotInChannel.Id, "", channel); err != nil {
t.Fatal(err)
}
@@ -71,13 +73,14 @@ func TestPostReplyToPostWhereRootPosterLeftChannel(t *testing.T) {
CreateAt: 0,
}
- if _, err := CreatePostAsUser(&replyPost); err != nil {
+ if _, err := a.CreatePostAsUser(&replyPost); err != nil {
t.Fatal(err)
}
}
func TestPostAction(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
allowedInternalConnections := *utils.Cfg.ServiceSettings.AllowedUntrustedInternalConnections
defer func() {
@@ -122,7 +125,7 @@ func TestPostAction(t *testing.T) {
},
}
- post, err := CreatePostAsUser(&interactivePost)
+ post, err := a.CreatePostAsUser(&interactivePost)
require.Nil(t, err)
attachments, ok := post.Props["attachments"].([]*model.SlackAttachment)
@@ -131,10 +134,10 @@ func TestPostAction(t *testing.T) {
require.NotEmpty(t, attachments[0].Actions)
require.NotEmpty(t, attachments[0].Actions[0].Id)
- err = DoPostAction(post.Id, "notavalidid", th.BasicUser.Id)
+ err = a.DoPostAction(post.Id, "notavalidid", th.BasicUser.Id)
require.NotNil(t, err)
assert.Equal(t, http.StatusNotFound, err.StatusCode)
- err = DoPostAction(post.Id, attachments[0].Actions[0].Id, th.BasicUser.Id)
+ err = a.DoPostAction(post.Id, attachments[0].Actions[0].Id, th.BasicUser.Id)
require.Nil(t, err)
}
diff --git a/app/preference.go b/app/preference.go
index 425b88d29..61420ac8f 100644
--- a/app/preference.go
+++ b/app/preference.go
@@ -4,12 +4,13 @@
package app
import (
- "github.com/mattermost/platform/model"
"net/http"
+
+ "github.com/mattermost/platform/model"
)
-func GetPreferencesForUser(userId string) (model.Preferences, *model.AppError) {
- if result := <-Srv.Store.Preference().GetAll(userId); result.Err != nil {
+func (a *App) GetPreferencesForUser(userId string) (model.Preferences, *model.AppError) {
+ if result := <-a.Srv.Store.Preference().GetAll(userId); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return nil, result.Err
} else {
@@ -17,8 +18,8 @@ func GetPreferencesForUser(userId string) (model.Preferences, *model.AppError) {
}
}
-func GetPreferenceByCategoryForUser(userId string, category string) (model.Preferences, *model.AppError) {
- if result := <-Srv.Store.Preference().GetCategory(userId, category); result.Err != nil {
+func (a *App) GetPreferenceByCategoryForUser(userId string, category string) (model.Preferences, *model.AppError) {
+ if result := <-a.Srv.Store.Preference().GetCategory(userId, category); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return nil, result.Err
} else if len(result.Data.(model.Preferences)) == 0 {
@@ -29,8 +30,8 @@ func GetPreferenceByCategoryForUser(userId string, category string) (model.Prefe
}
}
-func GetPreferenceByCategoryAndNameForUser(userId string, category string, preferenceName string) (*model.Preference, *model.AppError) {
- if result := <-Srv.Store.Preference().Get(userId, category, preferenceName); result.Err != nil {
+func (a *App) GetPreferenceByCategoryAndNameForUser(userId string, category string, preferenceName string) (*model.Preference, *model.AppError) {
+ if result := <-a.Srv.Store.Preference().Get(userId, category, preferenceName); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return nil, result.Err
} else {
@@ -39,7 +40,7 @@ func GetPreferenceByCategoryAndNameForUser(userId string, category string, prefe
}
}
-func UpdatePreferences(userId string, preferences model.Preferences) *model.AppError {
+func (a *App) UpdatePreferences(userId string, preferences model.Preferences) *model.AppError {
for _, preference := range preferences {
if userId != preference.UserId {
return model.NewAppError("savePreferences", "api.preference.update_preferences.set.app_error", nil,
@@ -47,7 +48,7 @@ func UpdatePreferences(userId string, preferences model.Preferences) *model.AppE
}
}
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return result.Err
}
@@ -59,7 +60,7 @@ func UpdatePreferences(userId string, preferences model.Preferences) *model.AppE
return nil
}
-func DeletePreferences(userId string, preferences model.Preferences) *model.AppError {
+func (a *App) DeletePreferences(userId string, preferences model.Preferences) *model.AppError {
for _, preference := range preferences {
if userId != preference.UserId {
err := model.NewAppError("deletePreferences", "api.preference.delete_preferences.delete.app_error", nil,
@@ -69,7 +70,7 @@ func DeletePreferences(userId string, preferences model.Preferences) *model.AppE
}
for _, preference := range preferences {
- if result := <-Srv.Store.Preference().Delete(userId, preference.Category, preference.Name); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().Delete(userId, preference.Category, preference.Name); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return result.Err
}
diff --git a/app/reaction.go b/app/reaction.go
index adb92476f..b6395745e 100644
--- a/app/reaction.go
+++ b/app/reaction.go
@@ -7,54 +7,54 @@ import (
"github.com/mattermost/platform/model"
)
-func SaveReactionForPost(reaction *model.Reaction) (*model.Reaction, *model.AppError) {
- post, err := GetSinglePost(reaction.PostId)
+func (a *App) SaveReactionForPost(reaction *model.Reaction) (*model.Reaction, *model.AppError) {
+ post, err := a.GetSinglePost(reaction.PostId)
if err != nil {
return nil, err
}
- if result := <-Srv.Store.Reaction().Save(reaction); result.Err != nil {
+ if result := <-a.Srv.Store.Reaction().Save(reaction); result.Err != nil {
return nil, result.Err
} else {
reaction = result.Data.(*model.Reaction)
- go sendReactionEvent(model.WEBSOCKET_EVENT_REACTION_ADDED, reaction, post)
+ go a.sendReactionEvent(model.WEBSOCKET_EVENT_REACTION_ADDED, reaction, post)
return reaction, nil
}
}
-func GetReactionsForPost(postId string) ([]*model.Reaction, *model.AppError) {
- if result := <-Srv.Store.Reaction().GetForPost(postId, true); result.Err != nil {
+func (a *App) GetReactionsForPost(postId string) ([]*model.Reaction, *model.AppError) {
+ if result := <-a.Srv.Store.Reaction().GetForPost(postId, true); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Reaction), nil
}
}
-func DeleteReactionForPost(reaction *model.Reaction) *model.AppError {
- post, err := GetSinglePost(reaction.PostId)
+func (a *App) DeleteReactionForPost(reaction *model.Reaction) *model.AppError {
+ post, err := a.GetSinglePost(reaction.PostId)
if err != nil {
return err
}
- if result := <-Srv.Store.Reaction().Delete(reaction); result.Err != nil {
+ if result := <-a.Srv.Store.Reaction().Delete(reaction); result.Err != nil {
return result.Err
} else {
- go sendReactionEvent(model.WEBSOCKET_EVENT_REACTION_REMOVED, reaction, post)
+ go a.sendReactionEvent(model.WEBSOCKET_EVENT_REACTION_REMOVED, reaction, post)
}
return nil
}
-func sendReactionEvent(event string, reaction *model.Reaction, post *model.Post) {
+func (a *App) sendReactionEvent(event string, reaction *model.Reaction, post *model.Post) {
// send out that a reaction has been added/removed
message := model.NewWebSocketEvent(event, "", post.ChannelId, "", nil)
message.Add("reaction", reaction.ToJson())
Publish(message)
// The post is always modified since the UpdateAt always changes
- InvalidateCacheForChannelPosts(post.ChannelId)
+ a.InvalidateCacheForChannelPosts(post.ChannelId)
post.HasReactions = true
post.UpdateAt = model.GetMillis()
umessage := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_EDITED, "", post.ChannelId, "", nil)
diff --git a/app/saml.go b/app/saml.go
index 6b0966ebf..616765542 100644
--- a/app/saml.go
+++ b/app/saml.go
@@ -9,10 +9,11 @@ import (
"net/http"
"os"
+ "path/filepath"
+
"github.com/mattermost/platform/einterfaces"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "path/filepath"
)
func GetSamlMetadata() (string, *model.AppError) {
diff --git a/app/security_update_check.go b/app/security_update_check.go
index 607dd1b8a..f735784b8 100644
--- a/app/security_update_check.go
+++ b/app/security_update_check.go
@@ -30,9 +30,9 @@ const (
PROP_SECURITY_UNIT_TESTS = "ut"
)
-func DoSecurityUpdateCheck() {
+func (a *App) DoSecurityUpdateCheck() {
if *utils.Cfg.ServiceSettings.EnableSecurityFixAlert {
- if result := <-Srv.Store.System().Get(); result.Err == nil {
+ if result := <-a.Srv.Store.System().Get(); result.Err == nil {
props := result.Data.(model.StringMap)
lastSecurityTime, _ := strconv.ParseInt(props[model.SYSTEM_LAST_SECURITY_TIME], 10, 0)
currentTime := model.GetMillis()
@@ -56,20 +56,20 @@ func DoSecurityUpdateCheck() {
systemSecurityLastTime := &model.System{Name: model.SYSTEM_LAST_SECURITY_TIME, Value: strconv.FormatInt(currentTime, 10)}
if lastSecurityTime == 0 {
- <-Srv.Store.System().Save(systemSecurityLastTime)
+ <-a.Srv.Store.System().Save(systemSecurityLastTime)
} else {
- <-Srv.Store.System().Update(systemSecurityLastTime)
+ <-a.Srv.Store.System().Update(systemSecurityLastTime)
}
- if ucr := <-Srv.Store.User().GetTotalUsersCount(); ucr.Err == nil {
+ if ucr := <-a.Srv.Store.User().GetTotalUsersCount(); ucr.Err == nil {
v.Set(PROP_SECURITY_USER_COUNT, strconv.FormatInt(ucr.Data.(int64), 10))
}
- if ucr := <-Srv.Store.Status().GetTotalActiveUsersCount(); ucr.Err == nil {
+ if ucr := <-a.Srv.Store.Status().GetTotalActiveUsersCount(); ucr.Err == nil {
v.Set(PROP_SECURITY_ACTIVE_USER_COUNT, strconv.FormatInt(ucr.Data.(int64), 10))
}
- if tcr := <-Srv.Store.Team().AnalyticsTeamCount(); tcr.Err == nil {
+ if tcr := <-a.Srv.Store.Team().AnalyticsTeamCount(); tcr.Err == nil {
v.Set(PROP_SECURITY_TEAM_COUNT, strconv.FormatInt(tcr.Data.(int64), 10))
}
@@ -86,7 +86,7 @@ func DoSecurityUpdateCheck() {
for _, bulletin := range bulletins {
if bulletin.AppliesToVersion == model.CurrentVersion {
if props["SecurityBulletin_"+bulletin.Id] == "" {
- if results := <-Srv.Store.User().GetSystemAdminProfiles(); results.Err != nil {
+ if results := <-a.Srv.Store.User().GetSystemAdminProfiles(); results.Err != nil {
l4g.Error(utils.T("mattermost.system_admins.error"))
return
} else {
@@ -112,7 +112,7 @@ func DoSecurityUpdateCheck() {
}
bulletinSeen := &model.System{Name: "SecurityBulletin_" + bulletin.Id, Value: bulletin.Id}
- <-Srv.Store.System().Save(bulletinSeen)
+ <-a.Srv.Store.System().Save(bulletinSeen)
}
}
}
diff --git a/app/server.go b/app/server.go
index ebea049f3..387cdf5e9 100644
--- a/app/server.go
+++ b/app/server.go
@@ -80,16 +80,14 @@ func (cw *CorsWrapper) ServeHTTP(w http.ResponseWriter, r *http.Request) {
const TIME_TO_WAIT_FOR_CONNECTIONS_TO_CLOSE_ON_SERVER_SHUTDOWN = time.Second
-var Srv *Server
-
-func NewServer() {
+func (a *App) NewServer() {
l4g.Info(utils.T("api.server.new_server.init.info"))
- Srv = &Server{}
+ a.Srv = &Server{}
}
-func InitStores() {
- Srv.Store = store.NewLayeredStore()
+func (a *App) InitStores() {
+ a.Srv.Store = store.NewLayeredStore()
}
type VaryBy struct{}
@@ -128,10 +126,10 @@ func redirectHTTPToHTTPS(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, url.String(), http.StatusFound)
}
-func StartServer() {
+func (a *App) StartServer() {
l4g.Info(utils.T("api.server.start_server.starting.info"))
- var handler http.Handler = &CorsWrapper{Srv.Router}
+ var handler http.Handler = &CorsWrapper{a.Srv.Router}
if *utils.Cfg.RateLimitSettings.Enable {
l4g.Info(utils.T("api.server.start_server.rate.info"))
@@ -165,7 +163,7 @@ func StartServer() {
handler = httpRateLimiter.RateLimit(handler)
}
- Srv.GracefulServer = &graceful.Server{
+ a.Srv.GracefulServer = &graceful.Server{
Timeout: TIME_TO_WAIT_FOR_CONNECTIONS_TO_CLOSE_ON_SERVER_SHUTDOWN,
Server: &http.Server{
Addr: *utils.Cfg.ServiceSettings.ListenAddress,
@@ -190,7 +188,7 @@ func StartServer() {
}
if utils.IsLicensed() && *utils.License().Features.FutureFeatures && *utils.Cfg.PluginSettings.Enable {
- StartupPlugins("plugins", "webapp/dist")
+ a.StartupPlugins("plugins", "webapp/dist")
}
go func() {
@@ -206,12 +204,12 @@ func StartServer() {
tlsConfig.NextProtos = append(tlsConfig.NextProtos, "h2")
- err = Srv.GracefulServer.ListenAndServeTLSConfig(tlsConfig)
+ err = a.Srv.GracefulServer.ListenAndServeTLSConfig(tlsConfig)
} else {
- err = Srv.GracefulServer.ListenAndServeTLS(*utils.Cfg.ServiceSettings.TLSCertFile, *utils.Cfg.ServiceSettings.TLSKeyFile)
+ err = a.Srv.GracefulServer.ListenAndServeTLS(*utils.Cfg.ServiceSettings.TLSCertFile, *utils.Cfg.ServiceSettings.TLSKeyFile)
}
} else {
- err = Srv.GracefulServer.ListenAndServe()
+ err = a.Srv.GracefulServer.ListenAndServe()
}
if err != nil {
l4g.Critical(utils.T("api.server.start_server.starting.critical"), err)
@@ -220,18 +218,18 @@ func StartServer() {
}()
}
-func StopServer() {
+func (a *App) StopServer() {
l4g.Info(utils.T("api.server.stop_server.stopping.info"))
- Srv.GracefulServer.Stop(TIME_TO_WAIT_FOR_CONNECTIONS_TO_CLOSE_ON_SERVER_SHUTDOWN)
- Srv.Store.Close()
+ a.Srv.GracefulServer.Stop(TIME_TO_WAIT_FOR_CONNECTIONS_TO_CLOSE_ON_SERVER_SHUTDOWN)
+ a.Srv.Store.Close()
HubStop()
l4g.Info(utils.T("api.server.stop_server.stopped.info"))
}
-func StartupPlugins(pluginPath, webappPath string) {
+func (a *App) StartupPlugins(pluginPath, webappPath string) {
l4g.Info("Starting up plugins")
err := os.Mkdir(pluginPath, 0744)
@@ -244,7 +242,7 @@ func StartupPlugins(pluginPath, webappPath string) {
}
}
- Srv.PluginEnv, err = pluginenv.New(
+ a.Srv.PluginEnv, err = pluginenv.New(
pluginenv.SearchPath(pluginPath),
pluginenv.WebappPath(webappPath),
)
@@ -253,5 +251,5 @@ func StartupPlugins(pluginPath, webappPath string) {
l4g.Error("failed to start up plugins: " + err.Error())
}
- ActivatePlugins()
+ a.ActivatePlugins()
}
diff --git a/app/session.go b/app/session.go
index 1a555b9cf..674a854a7 100644
--- a/app/session.go
+++ b/app/session.go
@@ -15,10 +15,10 @@ import (
var sessionCache *utils.Cache = utils.NewLru(model.SESSION_CACHE_SIZE)
-func CreateSession(session *model.Session) (*model.Session, *model.AppError) {
+func (a *App) CreateSession(session *model.Session) (*model.Session, *model.AppError) {
session.Token = ""
- if result := <-Srv.Store.Session().Save(session); result.Err != nil {
+ if result := <-a.Srv.Store.Session().Save(session); result.Err != nil {
return nil, result.Err
} else {
session := result.Data.(*model.Session)
@@ -29,7 +29,7 @@ func CreateSession(session *model.Session) (*model.Session, *model.AppError) {
}
}
-func GetSession(token string) (*model.Session, *model.AppError) {
+func (a *App) GetSession(token string) (*model.Session, *model.AppError) {
metrics := einterfaces.GetMetricsInterface()
var session *model.Session
@@ -45,7 +45,7 @@ func GetSession(token string) (*model.Session, *model.AppError) {
}
if session == nil {
- if sessionResult := <-Srv.Store.Session().Get(token); sessionResult.Err == nil {
+ if sessionResult := <-a.Srv.Store.Session().Get(token); sessionResult.Err == nil {
session = sessionResult.Data.(*model.Session)
if session != nil {
@@ -62,7 +62,7 @@ func GetSession(token string) (*model.Session, *model.AppError) {
if session == nil {
var err *model.AppError
- session, err = createSessionForUserAccessToken(token)
+ session, err = a.createSessionForUserAccessToken(token)
if err != nil {
return nil, model.NewAppError("GetSession", "api.context.invalid_token.error", map[string]interface{}{"Token": token}, err.Error(), http.StatusUnauthorized)
}
@@ -75,25 +75,25 @@ func GetSession(token string) (*model.Session, *model.AppError) {
return session, nil
}
-func GetSessions(userId string) ([]*model.Session, *model.AppError) {
- if result := <-Srv.Store.Session().GetSessions(userId); result.Err != nil {
+func (a *App) GetSessions(userId string) ([]*model.Session, *model.AppError) {
+ if result := <-a.Srv.Store.Session().GetSessions(userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Session), nil
}
}
-func RevokeAllSessions(userId string) *model.AppError {
- if result := <-Srv.Store.Session().GetSessions(userId); result.Err != nil {
+func (a *App) RevokeAllSessions(userId string) *model.AppError {
+ if result := <-a.Srv.Store.Session().GetSessions(userId); result.Err != nil {
return result.Err
} else {
sessions := result.Data.([]*model.Session)
for _, session := range sessions {
if session.IsOAuth {
- RevokeAccessToken(session.Token)
+ a.RevokeAccessToken(session.Token)
} else {
- if result := <-Srv.Store.Session().Remove(session.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Session().Remove(session.Id); result.Err != nil {
return result.Err
}
}
@@ -145,15 +145,15 @@ func SessionCacheLength() int {
return sessionCache.Len()
}
-func RevokeSessionsForDeviceId(userId string, deviceId string, currentSessionId string) *model.AppError {
- if result := <-Srv.Store.Session().GetSessions(userId); result.Err != nil {
+func (a *App) RevokeSessionsForDeviceId(userId string, deviceId string, currentSessionId string) *model.AppError {
+ if result := <-a.Srv.Store.Session().GetSessions(userId); result.Err != nil {
return result.Err
} else {
sessions := result.Data.([]*model.Session)
for _, session := range sessions {
if session.DeviceId == deviceId && session.Id != currentSessionId {
l4g.Debug(utils.T("api.user.login.revoking.app_error"), session.Id, userId)
- if err := RevokeSession(session); err != nil {
+ if err := a.RevokeSession(session); err != nil {
// Soft error so we still remove the other sessions
l4g.Error(err.Error())
}
@@ -164,22 +164,22 @@ func RevokeSessionsForDeviceId(userId string, deviceId string, currentSessionId
return nil
}
-func RevokeSessionById(sessionId string) *model.AppError {
- if result := <-Srv.Store.Session().Get(sessionId); result.Err != nil {
+func (a *App) RevokeSessionById(sessionId string) *model.AppError {
+ if result := <-a.Srv.Store.Session().Get(sessionId); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
return result.Err
} else {
- return RevokeSession(result.Data.(*model.Session))
+ return a.RevokeSession(result.Data.(*model.Session))
}
}
-func RevokeSession(session *model.Session) *model.AppError {
+func (a *App) RevokeSession(session *model.Session) *model.AppError {
if session.IsOAuth {
- if err := RevokeAccessToken(session.Token); err != nil {
+ if err := a.RevokeAccessToken(session.Token); err != nil {
return err
}
} else {
- if result := <-Srv.Store.Session().Remove(session.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Session().Remove(session.Id); result.Err != nil {
return result.Err
}
}
@@ -190,21 +190,21 @@ func RevokeSession(session *model.Session) *model.AppError {
return nil
}
-func AttachDeviceId(sessionId string, deviceId string, expiresAt int64) *model.AppError {
- if result := <-Srv.Store.Session().UpdateDeviceId(sessionId, deviceId, expiresAt); result.Err != nil {
+func (a *App) AttachDeviceId(sessionId string, deviceId string, expiresAt int64) *model.AppError {
+ if result := <-a.Srv.Store.Session().UpdateDeviceId(sessionId, deviceId, expiresAt); result.Err != nil {
return result.Err
}
return nil
}
-func UpdateLastActivityAtIfNeeded(session model.Session) {
+func (a *App) UpdateLastActivityAtIfNeeded(session model.Session) {
now := model.GetMillis()
if now-session.LastActivityAt < model.SESSION_ACTIVITY_TIMEOUT {
return
}
- if result := <-Srv.Store.Session().UpdateLastActivityAt(session.Id, now); result.Err != nil {
+ if result := <-a.Srv.Store.Session().UpdateLastActivityAt(session.Id, now); result.Err != nil {
l4g.Error(utils.T("api.status.last_activity.error"), session.UserId, session.Id)
}
@@ -212,16 +212,16 @@ func UpdateLastActivityAtIfNeeded(session model.Session) {
AddSessionToCache(&session)
}
-func CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) {
+func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableUserAccessTokens {
return nil, model.NewAppError("CreateUserAccessToken", "app.user_access_token.disabled", nil, "", http.StatusNotImplemented)
}
token.Token = model.NewId()
- uchan := Srv.Store.User().Get(token.UserId)
+ uchan := a.Srv.Store.User().Get(token.UserId)
- if result := <-Srv.Store.UserAccessToken().Save(token); result.Err != nil {
+ if result := <-a.Srv.Store.UserAccessToken().Save(token); result.Err != nil {
return nil, result.Err
} else {
token = result.Data.(*model.UserAccessToken)
@@ -240,20 +240,20 @@ func CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken
}
-func createSessionForUserAccessToken(tokenString string) (*model.Session, *model.AppError) {
+func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Session, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableUserAccessTokens {
return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, "EnableUserAccessTokens=false", http.StatusUnauthorized)
}
var token *model.UserAccessToken
- if result := <-Srv.Store.UserAccessToken().GetByToken(tokenString); result.Err != nil {
+ if result := <-a.Srv.Store.UserAccessToken().GetByToken(tokenString); result.Err != nil {
return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, result.Err.Error(), http.StatusUnauthorized)
} else {
token = result.Data.(*model.UserAccessToken)
}
var user *model.User
- if result := <-Srv.Store.User().Get(token.UserId); result.Err != nil {
+ if result := <-a.Srv.Store.User().Get(token.UserId); result.Err != nil {
return nil, result.Err
} else {
user = result.Data.(*model.User)
@@ -274,7 +274,7 @@ func createSessionForUserAccessToken(tokenString string) (*model.Session, *model
session.AddProp(model.SESSION_PROP_TYPE, model.SESSION_TYPE_USER_ACCESS_TOKEN)
session.SetExpireInDays(model.SESSION_USER_ACCESS_TOKEN_EXPIRY)
- if result := <-Srv.Store.Session().Save(session); result.Err != nil {
+ if result := <-a.Srv.Store.Session().Save(session); result.Err != nil {
return nil, result.Err
} else {
session := result.Data.(*model.Session)
@@ -285,13 +285,13 @@ func createSessionForUserAccessToken(tokenString string) (*model.Session, *model
}
}
-func RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError {
+func (a *App) RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError {
var session *model.Session
- if result := <-Srv.Store.Session().Get(token.Token); result.Err == nil {
+ if result := <-a.Srv.Store.Session().Get(token.Token); result.Err == nil {
session = result.Data.(*model.Session)
}
- if result := <-Srv.Store.UserAccessToken().Delete(token.Id); result.Err != nil {
+ if result := <-a.Srv.Store.UserAccessToken().Delete(token.Id); result.Err != nil {
return result.Err
}
@@ -299,11 +299,11 @@ func RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError {
return nil
}
- return RevokeSession(session)
+ return a.RevokeSession(session)
}
-func GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) {
- if result := <-Srv.Store.UserAccessToken().GetByUser(userId, page*perPage, perPage); result.Err != nil {
+func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) {
+ if result := <-a.Srv.Store.UserAccessToken().GetByUser(userId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
tokens := result.Data.([]*model.UserAccessToken)
@@ -315,8 +315,8 @@ func GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.User
}
}
-func GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAccessToken, *model.AppError) {
- if result := <-Srv.Store.UserAccessToken().Get(tokenId); result.Err != nil {
+func (a *App) GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAccessToken, *model.AppError) {
+ if result := <-a.Srv.Store.UserAccessToken().Get(tokenId); result.Err != nil {
return nil, result.Err
} else {
token := result.Data.(*model.UserAccessToken)
diff --git a/app/session_test.go b/app/session_test.go
index b3cd9fd57..edb4f987a 100644
--- a/app/session_test.go
+++ b/app/session_test.go
@@ -4,8 +4,9 @@
package app
import (
- "github.com/mattermost/platform/model"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestCache(t *testing.T) {
diff --git a/app/slackimport.go b/app/slackimport.go
index 23dd37695..0ddf3b3e7 100644
--- a/app/slackimport.go
+++ b/app/slackimport.go
@@ -15,10 +15,11 @@ import (
"strings"
"unicode/utf8"
+ "net/http"
+
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "net/http"
)
type SlackChannel struct {
@@ -128,7 +129,7 @@ func SlackParsePosts(data io.Reader) ([]SlackPost, error) {
return posts, nil
}
-func SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map[string]*model.User {
+func (a *App) SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map[string]*model.User {
// Log header
log.WriteString(utils.T("api.slackimport.slack_add_users.created"))
log.WriteString("===============\r\n\r\n")
@@ -137,7 +138,7 @@ func SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map
// Need the team
var team *model.Team
- if result := <-Srv.Store.Team().Get(teamId); result.Err != nil {
+ if result := <-a.Srv.Store.Team().Get(teamId); result.Err != nil {
log.WriteString(utils.T("api.slackimport.slack_import.team_fail"))
return addedUsers
} else {
@@ -164,10 +165,10 @@ func SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map
password := model.NewId()
// Check for email conflict and use existing user if found
- if result := <-Srv.Store.User().GetByEmail(email); result.Err == nil {
+ if result := <-a.Srv.Store.User().GetByEmail(email); result.Err == nil {
existingUser := result.Data.(*model.User)
addedUsers[sUser.Id] = existingUser
- if err := JoinUserToTeam(team, addedUsers[sUser.Id], ""); err != nil {
+ if err := a.JoinUserToTeam(team, addedUsers[sUser.Id], ""); err != nil {
log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing_failed", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username}))
} else {
log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username}))
@@ -183,7 +184,7 @@ func SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map
Password: password,
}
- if mUser := OldImportUser(team, &newUser); mUser != nil {
+ if mUser := a.OldImportUser(team, &newUser); mUser != nil {
addedUsers[sUser.Id] = mUser
log.WriteString(utils.T("api.slackimport.slack_add_users.email_pwd", map[string]interface{}{"Email": newUser.Email, "Password": password}))
} else {
@@ -194,9 +195,9 @@ func SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map
return addedUsers
}
-func SlackAddBotUser(teamId string, log *bytes.Buffer) *model.User {
+func (a *App) SlackAddBotUser(teamId string, log *bytes.Buffer) *model.User {
var team *model.Team
- if result := <-Srv.Store.Team().Get(teamId); result.Err != nil {
+ if result := <-a.Srv.Store.Team().Get(teamId); result.Err != nil {
log.WriteString(utils.T("api.slackimport.slack_import.team_fail"))
return nil
} else {
@@ -215,7 +216,7 @@ func SlackAddBotUser(teamId string, log *bytes.Buffer) *model.User {
Password: password,
}
- if mUser := OldImportUser(team, &botUser); mUser != nil {
+ if mUser := a.OldImportUser(team, &botUser); mUser != nil {
log.WriteString(utils.T("api.slackimport.slack_add_bot_user.email_pwd", map[string]interface{}{"Email": botUser.Email, "Password": password}))
return mUser
} else {
@@ -224,7 +225,7 @@ func SlackAddBotUser(teamId string, log *bytes.Buffer) *model.User {
}
}
-func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, users map[string]*model.User, uploads map[string]*zip.File, botUser *model.User) {
+func (a *App) SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, users map[string]*model.User, uploads map[string]*zip.File, botUser *model.User) {
for _, sPost := range posts {
switch {
case sPost.Type == "message" && (sPost.SubType == "" || sPost.SubType == "file_share"):
@@ -242,14 +243,14 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
CreateAt: SlackConvertTimeStamp(sPost.TimeStamp),
}
if sPost.Upload {
- if fileInfo, ok := SlackUploadFile(sPost, uploads, teamId, newPost.ChannelId, newPost.UserId); ok == true {
+ if fileInfo, ok := a.SlackUploadFile(sPost, uploads, teamId, newPost.ChannelId, newPost.UserId); ok == true {
newPost.FileIds = append(newPost.FileIds, fileInfo.Id)
newPost.Message = sPost.File.Title
}
}
- OldImportPost(&newPost)
+ a.OldImportPost(&newPost)
for _, fileId := range newPost.FileIds {
- if result := <-Srv.Store.FileInfo().AttachToPost(fileId, newPost.Id); result.Err != nil {
+ if result := <-a.Srv.Store.FileInfo().AttachToPost(fileId, newPost.Id); result.Err != nil {
l4g.Error(utils.T("api.slackimport.slack_add_posts.attach_files.error"), newPost.Id, newPost.FileIds, result.Err)
}
}
@@ -271,7 +272,7 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
Message: sPost.Comment.Comment,
CreateAt: SlackConvertTimeStamp(sPost.TimeStamp),
}
- OldImportPost(&newPost)
+ a.OldImportPost(&newPost)
case sPost.Type == "message" && sPost.SubType == "bot_message":
if botUser == nil {
l4g.Warn(utils.T("api.slackimport.slack_add_posts.bot_user_no_exists.warn"))
@@ -295,7 +296,7 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
Type: model.POST_SLACK_ATTACHMENT,
}
- OldImportIncomingWebhookPost(post, props)
+ a.OldImportIncomingWebhookPost(post, props)
case sPost.Type == "message" && (sPost.SubType == "channel_join" || sPost.SubType == "channel_leave"):
if sPost.User == "" {
l4g.Debug(utils.T("api.slackimport.slack_add_posts.msg_no_usr.debug"))
@@ -322,7 +323,7 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
"username": users[sPost.User].Username,
},
}
- OldImportPost(&newPost)
+ a.OldImportPost(&newPost)
case sPost.Type == "message" && sPost.SubType == "me_message":
if sPost.User == "" {
l4g.Debug(utils.T("api.slackimport.slack_add_posts.without_user.debug"))
@@ -337,7 +338,7 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
Message: "*" + sPost.Text + "*",
CreateAt: SlackConvertTimeStamp(sPost.TimeStamp),
}
- OldImportPost(&newPost)
+ a.OldImportPost(&newPost)
case sPost.Type == "message" && sPost.SubType == "channel_topic":
if sPost.User == "" {
l4g.Debug(utils.T("api.slackimport.slack_add_posts.msg_no_usr.debug"))
@@ -353,7 +354,7 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
CreateAt: SlackConvertTimeStamp(sPost.TimeStamp),
Type: model.POST_HEADER_CHANGE,
}
- OldImportPost(&newPost)
+ a.OldImportPost(&newPost)
case sPost.Type == "message" && sPost.SubType == "channel_purpose":
if sPost.User == "" {
l4g.Debug(utils.T("api.slackimport.slack_add_posts.msg_no_usr.debug"))
@@ -369,7 +370,7 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
CreateAt: SlackConvertTimeStamp(sPost.TimeStamp),
Type: model.POST_PURPOSE_CHANGE,
}
- OldImportPost(&newPost)
+ a.OldImportPost(&newPost)
case sPost.Type == "message" && sPost.SubType == "channel_name":
if sPost.User == "" {
l4g.Debug(utils.T("api.slackimport.slack_add_posts.msg_no_usr.debug"))
@@ -385,14 +386,14 @@ func SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, use
CreateAt: SlackConvertTimeStamp(sPost.TimeStamp),
Type: model.POST_DISPLAYNAME_CHANGE,
}
- OldImportPost(&newPost)
+ a.OldImportPost(&newPost)
default:
l4g.Warn(utils.T("api.slackimport.slack_add_posts.unsupported.warn"), sPost.Type, sPost.SubType)
}
}
}
-func SlackUploadFile(sPost SlackPost, uploads map[string]*zip.File, teamId string, channelId string, userId string) (*model.FileInfo, bool) {
+func (a *App) SlackUploadFile(sPost SlackPost, uploads map[string]*zip.File, teamId string, channelId string, userId string) (*model.FileInfo, bool) {
if sPost.File != nil {
if file, ok := uploads[sPost.File.Id]; ok == true {
openFile, err := file.Open()
@@ -403,7 +404,7 @@ func SlackUploadFile(sPost SlackPost, uploads map[string]*zip.File, teamId strin
defer openFile.Close()
timestamp := utils.TimeFromMillis(SlackConvertTimeStamp(sPost.TimeStamp))
- uploadedFile, err := OldImportFile(timestamp, openFile, teamId, channelId, userId, filepath.Base(file.Name))
+ uploadedFile, err := a.OldImportFile(timestamp, openFile, teamId, channelId, userId, filepath.Base(file.Name))
if err != nil {
l4g.Warn(utils.T("api.slackimport.slack_add_posts.upload_file_upload_failed.warn", map[string]interface{}{"FileId": sPost.File.Id, "Error": err.Error()}))
return nil, false
@@ -420,19 +421,19 @@ func SlackUploadFile(sPost SlackPost, uploads map[string]*zip.File, teamId strin
}
}
-func deactivateSlackBotUser(user *model.User) {
- _, err := UpdateActive(user, false)
+func (a *App) deactivateSlackBotUser(user *model.User) {
+ _, err := a.UpdateActive(user, false)
if err != nil {
l4g.Warn(utils.T("api.slackimport.slack_deactivate_bot_user.failed_to_deactivate", err))
}
}
-func addSlackUsersToChannel(members []string, users map[string]*model.User, channel *model.Channel, log *bytes.Buffer) {
+func (a *App) addSlackUsersToChannel(members []string, users map[string]*model.User, channel *model.Channel, log *bytes.Buffer) {
for _, member := range members {
if user, ok := users[member]; !ok {
log.WriteString(utils.T("api.slackimport.slack_add_channels.failed_to_add_user", map[string]interface{}{"Username": "?"}))
} else {
- if _, err := AddUserToChannel(user, channel); err != nil {
+ if _, err := a.AddUserToChannel(user, channel); err != nil {
log.WriteString(utils.T("api.slackimport.slack_add_channels.failed_to_add_user", map[string]interface{}{"Username": user.Username}))
}
}
@@ -463,7 +464,7 @@ func SlackSanitiseChannelProperties(channel model.Channel) model.Channel {
return channel
}
-func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[string][]SlackPost, users map[string]*model.User, uploads map[string]*zip.File, botUser *model.User, log *bytes.Buffer) map[string]*model.Channel {
+func (a *App) SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[string][]SlackPost, users map[string]*model.User, uploads map[string]*zip.File, botUser *model.User, log *bytes.Buffer) map[string]*model.Channel {
// Write Header
log.WriteString(utils.T("api.slackimport.slack_add_channels.added"))
log.WriteString("=================\r\n\r\n")
@@ -481,11 +482,11 @@ func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[str
newChannel = SlackSanitiseChannelProperties(newChannel)
var mChannel *model.Channel
- if result := <-Srv.Store.Channel().GetByName(teamId, sChannel.Name, true); result.Err == nil {
+ if result := <-a.Srv.Store.Channel().GetByName(teamId, sChannel.Name, true); result.Err == nil {
// The channel already exists as an active channel. Merge with the existing one.
mChannel = result.Data.(*model.Channel)
log.WriteString(utils.T("api.slackimport.slack_add_channels.merge", map[string]interface{}{"DisplayName": newChannel.DisplayName}))
- } else if result := <-Srv.Store.Channel().GetDeletedByName(teamId, sChannel.Name); result.Err == nil {
+ } else if result := <-a.Srv.Store.Channel().GetDeletedByName(teamId, sChannel.Name); result.Err == nil {
// The channel already exists but has been deleted. Generate a random string for the handle instead.
newChannel.Name = model.NewId()
newChannel = SlackSanitiseChannelProperties(newChannel)
@@ -493,7 +494,7 @@ func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[str
if mChannel == nil {
// Haven't found an existing channel to merge with. Try importing it as a new one.
- mChannel = OldImportChannel(&newChannel)
+ mChannel = a.OldImportChannel(&newChannel)
if mChannel == nil {
l4g.Warn(utils.T("api.slackimport.slack_add_channels.import_failed.warn"), newChannel.DisplayName)
log.WriteString(utils.T("api.slackimport.slack_add_channels.import_failed", map[string]interface{}{"DisplayName": newChannel.DisplayName}))
@@ -501,10 +502,10 @@ func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[str
}
}
- addSlackUsersToChannel(sChannel.Members, users, mChannel, log)
+ a.addSlackUsersToChannel(sChannel.Members, users, mChannel, log)
log.WriteString(newChannel.DisplayName + "\r\n")
addedChannels[sChannel.Id] = mChannel
- SlackAddPosts(teamId, mChannel, posts[sChannel.Name], users, uploads, botUser)
+ a.SlackAddPosts(teamId, mChannel, posts[sChannel.Name], users, uploads, botUser)
}
return addedChannels
@@ -625,7 +626,7 @@ func SlackConvertPostsMarkup(posts map[string][]SlackPost) map[string][]SlackPos
return posts
}
-func SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer) {
+func (a *App) SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer) {
// Create log file
log := bytes.NewBufferString(utils.T("api.slackimport.slack_import.log"))
@@ -669,16 +670,16 @@ func SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model
posts = SlackConvertChannelMentions(channels, posts)
posts = SlackConvertPostsMarkup(posts)
- addedUsers := SlackAddUsers(teamID, users, log)
- botUser := SlackAddBotUser(teamID, log)
+ addedUsers := a.SlackAddUsers(teamID, users, log)
+ botUser := a.SlackAddBotUser(teamID, log)
- SlackAddChannels(teamID, channels, posts, addedUsers, uploads, botUser, log)
+ a.SlackAddChannels(teamID, channels, posts, addedUsers, uploads, botUser, log)
if botUser != nil {
- deactivateSlackBotUser(botUser)
+ a.deactivateSlackBotUser(botUser)
}
- InvalidateAllCaches()
+ a.InvalidateAllCaches()
log.WriteString(utils.T("api.slackimport.slack_import.notes"))
log.WriteString("=======\r\n\r\n")
diff --git a/app/status.go b/app/status.go
index 9f6ad2e05..8e721a907 100644
--- a/app/status.go
+++ b/app/status.go
@@ -57,7 +57,7 @@ func GetAllStatuses() map[string]*model.Status {
return statusMap
}
-func GetStatusesByIds(userIds []string) (map[string]interface{}, *model.AppError) {
+func (a *App) GetStatusesByIds(userIds []string) (map[string]interface{}, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableUserStatuses {
return map[string]interface{}{}, nil
}
@@ -81,7 +81,7 @@ func GetStatusesByIds(userIds []string) (map[string]interface{}, *model.AppError
}
if len(missingUserIds) > 0 {
- if result := <-Srv.Store.Status().GetByIds(missingUserIds); result.Err != nil {
+ if result := <-a.Srv.Store.Status().GetByIds(missingUserIds); result.Err != nil {
return nil, result.Err
} else {
statuses := result.Data.([]*model.Status)
@@ -104,7 +104,7 @@ func GetStatusesByIds(userIds []string) (map[string]interface{}, *model.AppError
}
//GetUserStatusesByIds used by apiV4
-func GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError) {
+func (a *App) GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableUserStatuses {
return []*model.Status{}, nil
}
@@ -128,7 +128,7 @@ func GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError) {
}
if len(missingUserIds) > 0 {
- if result := <-Srv.Store.Status().GetByIds(missingUserIds); result.Err != nil {
+ if result := <-a.Srv.Store.Status().GetByIds(missingUserIds); result.Err != nil {
return nil, result.Err
} else {
statuses := result.Data.([]*model.Status)
@@ -161,7 +161,7 @@ func GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError) {
return statusMap, nil
}
-func SetStatusOnline(userId string, sessionId string, manual bool) {
+func (a *App) SetStatusOnline(userId string, sessionId string, manual bool) {
if !*utils.Cfg.ServiceSettings.EnableUserStatuses {
return
}
@@ -174,7 +174,7 @@ func SetStatusOnline(userId string, sessionId string, manual bool) {
var status *model.Status
var err *model.AppError
- if status, err = GetStatus(userId); err != nil {
+ if status, err = a.GetStatus(userId); err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
broadcast = true
} else {
@@ -203,9 +203,9 @@ func SetStatusOnline(userId string, sessionId string, manual bool) {
var schan store.StoreChannel
if broadcast {
- schan = Srv.Store.Status().SaveOrUpdate(status)
+ schan = a.Srv.Store.Status().SaveOrUpdate(status)
} else {
- schan = Srv.Store.Status().UpdateLastActivityAt(status.UserId, status.LastActivityAt)
+ schan = a.Srv.Store.Status().UpdateLastActivityAt(status.UserId, status.LastActivityAt)
}
if result := <-schan; result.Err != nil {
@@ -225,12 +225,12 @@ func BroadcastStatus(status *model.Status) {
go Publish(event)
}
-func SetStatusOffline(userId string, manual bool) {
+func (a *App) SetStatusOffline(userId string, manual bool) {
if !*utils.Cfg.ServiceSettings.EnableUserStatuses {
return
}
- status, err := GetStatus(userId)
+ status, err := a.GetStatus(userId)
if err == nil && status.Manual && !manual {
return // manually set status always overrides non-manual one
}
@@ -239,7 +239,7 @@ func SetStatusOffline(userId string, manual bool) {
AddStatusCache(status)
- if result := <-Srv.Store.Status().SaveOrUpdate(status); result.Err != nil {
+ if result := <-a.Srv.Store.Status().SaveOrUpdate(status); result.Err != nil {
l4g.Error(utils.T("api.status.save_status.error"), userId, result.Err)
}
@@ -249,12 +249,12 @@ func SetStatusOffline(userId string, manual bool) {
go Publish(event)
}
-func SetStatusAwayIfNeeded(userId string, manual bool) {
+func (a *App) SetStatusAwayIfNeeded(userId string, manual bool) {
if !*utils.Cfg.ServiceSettings.EnableUserStatuses {
return
}
- status, err := GetStatus(userId)
+ status, err := a.GetStatus(userId)
if err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: 0, ActiveChannel: ""}
@@ -280,7 +280,7 @@ func SetStatusAwayIfNeeded(userId string, manual bool) {
AddStatusCache(status)
- if result := <-Srv.Store.Status().SaveOrUpdate(status); result.Err != nil {
+ if result := <-a.Srv.Store.Status().SaveOrUpdate(status); result.Err != nil {
l4g.Error(utils.T("api.status.save_status.error"), userId, result.Err)
}
@@ -301,7 +301,7 @@ func GetStatusFromCache(userId string) *model.Status {
return nil
}
-func GetStatus(userId string) (*model.Status, *model.AppError) {
+func (a *App) GetStatus(userId string) (*model.Status, *model.AppError) {
if !*utils.Cfg.ServiceSettings.EnableUserStatuses {
return &model.Status{}, nil
}
@@ -311,7 +311,7 @@ func GetStatus(userId string) (*model.Status, *model.AppError) {
return status, nil
}
- if result := <-Srv.Store.Status().Get(userId); result.Err != nil {
+ if result := <-a.Srv.Store.Status().Get(userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Status), nil
diff --git a/app/team.go b/app/team.go
index f06f8bafa..85e55131d 100644
--- a/app/team.go
+++ b/app/team.go
@@ -16,13 +16,13 @@ import (
"github.com/mattermost/platform/utils"
)
-func CreateTeam(team *model.Team) (*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().Save(team); result.Err != nil {
+func (a *App) CreateTeam(team *model.Team) (*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().Save(team); result.Err != nil {
return nil, result.Err
} else {
rteam := result.Data.(*model.Team)
- if _, err := CreateDefaultChannels(rteam.Id); err != nil {
+ if _, err := a.CreateDefaultChannels(rteam.Id); err != nil {
return nil, err
}
@@ -30,10 +30,10 @@ func CreateTeam(team *model.Team) (*model.Team, *model.AppError) {
}
}
-func CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.AppError) {
+func (a *App) CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return nil, err
} else {
team.Email = user.Email
@@ -44,11 +44,11 @@ func CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.Ap
}
var rteam *model.Team
- if rteam, err = CreateTeam(team); err != nil {
+ if rteam, err = a.CreateTeam(team); err != nil {
return nil, err
}
- if err = JoinUserToTeam(rteam, user, ""); err != nil {
+ if err = a.JoinUserToTeam(rteam, user, ""); err != nil {
return nil, err
}
@@ -86,10 +86,10 @@ func isTeamEmailAllowed(user *model.User) bool {
return isTeamEmailAddressAllowed(email)
}
-func UpdateTeam(team *model.Team) (*model.Team, *model.AppError) {
+func (a *App) UpdateTeam(team *model.Team) (*model.Team, *model.AppError) {
var oldTeam *model.Team
var err *model.AppError
- if oldTeam, err = GetTeam(team.Id); err != nil {
+ if oldTeam, err = a.GetTeam(team.Id); err != nil {
return nil, err
}
@@ -100,7 +100,7 @@ func UpdateTeam(team *model.Team) (*model.Team, *model.AppError) {
oldTeam.CompanyName = team.CompanyName
oldTeam.AllowedDomains = team.AllowedDomains
- if result := <-Srv.Store.Team().Update(oldTeam); result.Err != nil {
+ if result := <-a.Srv.Store.Team().Update(oldTeam); result.Err != nil {
return nil, result.Err
}
@@ -111,15 +111,15 @@ func UpdateTeam(team *model.Team) (*model.Team, *model.AppError) {
return oldTeam, nil
}
-func PatchTeam(teamId string, patch *model.TeamPatch) (*model.Team, *model.AppError) {
- team, err := GetTeam(teamId)
+func (a *App) PatchTeam(teamId string, patch *model.TeamPatch) (*model.Team, *model.AppError) {
+ team, err := a.GetTeam(teamId)
if err != nil {
return nil, err
}
team.Patch(patch)
- updatedTeam, err := UpdateTeam(team)
+ updatedTeam, err := a.UpdateTeam(team)
if err != nil {
return nil, err
}
@@ -137,9 +137,9 @@ func sendUpdatedTeamEvent(team *model.Team) {
go Publish(message)
}
-func UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*model.TeamMember, *model.AppError) {
+func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*model.TeamMember, *model.AppError) {
var member *model.TeamMember
- if result := <-Srv.Store.Team().GetTeamsForUser(userId); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetTeamsForUser(userId); result.Err != nil {
return nil, result.Err
} else {
members := result.Data.([]*model.TeamMember)
@@ -157,7 +157,7 @@ func UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*mode
member.Roles = newRoles
- if result := <-Srv.Store.Team().UpdateMember(member); result.Err != nil {
+ if result := <-a.Srv.Store.Team().UpdateMember(member); result.Err != nil {
return nil, result.Err
}
@@ -175,9 +175,9 @@ func sendUpdatedMemberRoleEvent(userId string, member *model.TeamMember) {
go Publish(message)
}
-func AddUserToTeam(teamId string, userId string, userRequestorId string) (*model.Team, *model.AppError) {
- tchan := Srv.Store.Team().Get(teamId)
- uchan := Srv.Store.User().Get(userId)
+func (a *App) AddUserToTeam(teamId string, userId string, userRequestorId string) (*model.Team, *model.AppError) {
+ tchan := a.Srv.Store.Team().Get(teamId)
+ uchan := a.Srv.Store.User().Get(userId)
var team *model.Team
if result := <-tchan; result.Err != nil {
@@ -193,22 +193,22 @@ func AddUserToTeam(teamId string, userId string, userRequestorId string) (*model
user = result.Data.(*model.User)
}
- if err := JoinUserToTeam(team, user, userRequestorId); err != nil {
+ if err := a.JoinUserToTeam(team, user, userRequestorId); err != nil {
return nil, err
}
return team, nil
}
-func AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError {
- if result := <-Srv.Store.Team().Get(teamId); result.Err != nil {
+func (a *App) AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError {
+ if result := <-a.Srv.Store.Team().Get(teamId); result.Err != nil {
return result.Err
} else {
- return JoinUserToTeam(result.Data.(*model.Team), user, "")
+ return a.JoinUserToTeam(result.Data.(*model.Team), user, "")
}
}
-func AddUserToTeamByHash(userId string, hash string, data string) (*model.Team, *model.AppError) {
+func (a *App) AddUserToTeamByHash(userId string, hash string, data string) (*model.Team, *model.AppError) {
props := model.MapFromJson(strings.NewReader(data))
if hash != utils.HashSha256(fmt.Sprintf("%v:%v", data, utils.Cfg.EmailSettings.InviteSalt)) {
@@ -220,8 +220,8 @@ func AddUserToTeamByHash(userId string, hash string, data string) (*model.Team,
return nil, model.NewAppError("JoinUserToTeamByHash", "api.user.create_user.signup_link_expired.app_error", nil, "", http.StatusBadRequest)
}
- tchan := Srv.Store.Team().Get(props["id"])
- uchan := Srv.Store.User().Get(userId)
+ tchan := a.Srv.Store.Team().Get(props["id"])
+ uchan := a.Srv.Store.User().Get(userId)
var team *model.Team
if result := <-tchan; result.Err != nil {
@@ -237,16 +237,16 @@ func AddUserToTeamByHash(userId string, hash string, data string) (*model.Team,
user = result.Data.(*model.User)
}
- if err := JoinUserToTeam(team, user, ""); err != nil {
+ if err := a.JoinUserToTeam(team, user, ""); err != nil {
return nil, err
}
return team, nil
}
-func AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *model.AppError) {
- tchan := Srv.Store.Team().GetByInviteId(inviteId)
- uchan := Srv.Store.User().Get(userId)
+func (a *App) AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *model.AppError) {
+ tchan := a.Srv.Store.Team().GetByInviteId(inviteId)
+ uchan := a.Srv.Store.User().Get(userId)
var team *model.Team
if result := <-tchan; result.Err != nil {
@@ -262,14 +262,14 @@ func AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *mode
user = result.Data.(*model.User)
}
- if err := JoinUserToTeam(team, user, ""); err != nil {
+ if err := a.JoinUserToTeam(team, user, ""); err != nil {
return nil, err
}
return team, nil
}
-func joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError) {
+func (a *App) joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError) {
tm := &model.TeamMember{
TeamId: team.Id,
UserId: user.Id,
@@ -280,7 +280,7 @@ func joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError)
tm.Roles = model.ROLE_TEAM_USER.Id + " " + model.ROLE_TEAM_ADMIN.Id
}
- if etmr := <-Srv.Store.Team().GetMember(team.Id, user.Id); etmr.Err == nil {
+ if etmr := <-a.Srv.Store.Team().GetMember(team.Id, user.Id); etmr.Err == nil {
// Membership alredy exists. Check if deleted and and update, otherwise do nothing
rtm := etmr.Data.(*model.TeamMember)
@@ -289,12 +289,12 @@ func joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError)
return true, nil
}
- if tmr := <-Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
+ if tmr := <-a.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil {
return false, tmr.Err
}
} else {
// Membership appears to be missing. Lets try to add.
- if tmr := <-Srv.Store.Team().SaveMember(tm); tmr.Err != nil {
+ if tmr := <-a.Srv.Store.Team().SaveMember(tm); tmr.Err != nil {
return false, tmr.Err
}
}
@@ -302,14 +302,14 @@ func joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError)
return false, nil
}
-func JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError {
- if alreadyAdded, err := joinUserToTeam(team, user); err != nil {
+func (a *App) JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError {
+ if alreadyAdded, err := a.joinUserToTeam(team, user); err != nil {
return err
} else if alreadyAdded {
return nil
}
- if uua := <-Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil {
+ if uua := <-a.Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil {
return uua.Err
}
@@ -320,12 +320,12 @@ func JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string)
}
// Soft error if there is an issue joining the default channels
- if err := JoinDefaultChannels(team.Id, user, channelRole, userRequestorId); err != nil {
+ if err := a.JoinDefaultChannels(team.Id, user, channelRole, userRequestorId); err != nil {
l4g.Error(utils.T("api.user.create_user.joining.error"), user.Id, team.Id, err)
}
ClearSessionCacheForUser(user.Id)
- InvalidateCacheForUser(user.Id)
+ a.InvalidateCacheForUser(user.Id)
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_ADDED_TO_TEAM, "", "", user.Id, nil)
message.Add("team_id", team.Id)
@@ -335,16 +335,16 @@ func JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string)
return nil
}
-func GetTeam(teamId string) (*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().Get(teamId); result.Err != nil {
+func (a *App) GetTeam(teamId string) (*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().Get(teamId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Team), nil
}
}
-func GetTeamByName(name string) (*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().GetByName(name); result.Err != nil {
+func (a *App) GetTeamByName(name string) (*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetByName(name); result.Err != nil {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else {
@@ -352,110 +352,110 @@ func GetTeamByName(name string) (*model.Team, *model.AppError) {
}
}
-func GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil {
+func (a *App) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.Team), nil
}
}
-func GetAllTeams() ([]*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().GetAll(); result.Err != nil {
+func (a *App) GetAllTeams() ([]*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetAll(); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Team), nil
}
}
-func GetAllTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().GetAllPage(offset, limit); result.Err != nil {
+func (a *App) GetAllTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetAllPage(offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Team), nil
}
}
-func GetAllOpenTeams() ([]*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().GetAllTeamListing(); result.Err != nil {
+func (a *App) GetAllOpenTeams() ([]*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetAllTeamListing(); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Team), nil
}
}
-func SearchAllTeams(term string) ([]*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().SearchAll(term); result.Err != nil {
+func (a *App) SearchAllTeams(term string) ([]*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().SearchAll(term); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Team), nil
}
}
-func SearchOpenTeams(term string) ([]*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().SearchOpen(term); result.Err != nil {
+func (a *App) SearchOpenTeams(term string) ([]*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().SearchOpen(term); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Team), nil
}
}
-func GetAllOpenTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().GetAllTeamPageListing(offset, limit); result.Err != nil {
+func (a *App) GetAllOpenTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetAllTeamPageListing(offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Team), nil
}
}
-func GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) {
- if result := <-Srv.Store.Team().GetTeamsByUserId(userId); result.Err != nil {
+func (a *App) GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetTeamsByUserId(userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.Team), nil
}
}
-func GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) {
- if result := <-Srv.Store.Team().GetMember(teamId, userId); result.Err != nil {
+func (a *App) GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetMember(teamId, userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.TeamMember), nil
}
}
-func GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.AppError) {
- if result := <-Srv.Store.Team().GetTeamsForUser(userId); result.Err != nil {
+func (a *App) GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetTeamsForUser(userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.TeamMember), nil
}
}
-func GetTeamMembers(teamId string, offset int, limit int) ([]*model.TeamMember, *model.AppError) {
- if result := <-Srv.Store.Team().GetMembers(teamId, offset, limit); result.Err != nil {
+func (a *App) GetTeamMembers(teamId string, offset int, limit int) ([]*model.TeamMember, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetMembers(teamId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.TeamMember), nil
}
}
-func GetTeamMembersByIds(teamId string, userIds []string) ([]*model.TeamMember, *model.AppError) {
- if result := <-Srv.Store.Team().GetMembersByIds(teamId, userIds); result.Err != nil {
+func (a *App) GetTeamMembersByIds(teamId string, userIds []string) ([]*model.TeamMember, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetMembersByIds(teamId, userIds); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.TeamMember), nil
}
}
-func AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) {
- if _, err := AddUserToTeam(teamId, userId, ""); err != nil {
+func (a *App) AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) {
+ if _, err := a.AddUserToTeam(teamId, userId, ""); err != nil {
return nil, err
}
var teamMember *model.TeamMember
var err *model.AppError
- if teamMember, err = GetTeamMember(teamId, userId); err != nil {
+ if teamMember, err = a.GetTeamMember(teamId, userId); err != nil {
return nil, err
}
@@ -467,15 +467,15 @@ func AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) {
return teamMember, nil
}
-func AddTeamMembers(teamId string, userIds []string, userRequestorId string) ([]*model.TeamMember, *model.AppError) {
+func (a *App) AddTeamMembers(teamId string, userIds []string, userRequestorId string) ([]*model.TeamMember, *model.AppError) {
var members []*model.TeamMember
for _, userId := range userIds {
- if _, err := AddUserToTeam(teamId, userId, userRequestorId); err != nil {
+ if _, err := a.AddUserToTeam(teamId, userId, userRequestorId); err != nil {
return nil, err
}
- if teamMember, err := GetTeamMember(teamId, userId); err != nil {
+ if teamMember, err := a.GetTeamMember(teamId, userId); err != nil {
return nil, err
} else {
members = append(members, teamMember)
@@ -490,38 +490,38 @@ func AddTeamMembers(teamId string, userIds []string, userRequestorId string) ([]
return members, nil
}
-func AddTeamMemberByHash(userId, hash, data string) (*model.TeamMember, *model.AppError) {
+func (a *App) AddTeamMemberByHash(userId, hash, data string) (*model.TeamMember, *model.AppError) {
var team *model.Team
var err *model.AppError
- if team, err = AddUserToTeamByHash(userId, hash, data); err != nil {
+ if team, err = a.AddUserToTeamByHash(userId, hash, data); err != nil {
return nil, err
}
- if teamMember, err := GetTeamMember(team.Id, userId); err != nil {
+ if teamMember, err := a.GetTeamMember(team.Id, userId); err != nil {
return nil, err
} else {
return teamMember, nil
}
}
-func AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMember, *model.AppError) {
+func (a *App) AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMember, *model.AppError) {
var team *model.Team
var err *model.AppError
- if team, err = AddUserToTeamByInviteId(inviteId, userId); err != nil {
+ if team, err = a.AddUserToTeamByInviteId(inviteId, userId); err != nil {
return nil, err
}
- if teamMember, err := GetTeamMember(team.Id, userId); err != nil {
+ if teamMember, err := a.GetTeamMember(team.Id, userId); err != nil {
return nil, err
} else {
return teamMember, nil
}
}
-func GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError) {
- result := <-Srv.Store.Team().GetChannelUnreadsForTeam(teamId, userId)
+func (a *App) GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError) {
+ result := <-a.Srv.Store.Team().GetChannelUnreadsForTeam(teamId, userId)
if result.Err != nil {
return nil, result.Err
}
@@ -544,9 +544,9 @@ func GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError) {
return teamUnread, nil
}
-func RemoveUserFromTeam(teamId string, userId string) *model.AppError {
- tchan := Srv.Store.Team().Get(teamId)
- uchan := Srv.Store.User().Get(userId)
+func (a *App) RemoveUserFromTeam(teamId string, userId string) *model.AppError {
+ tchan := a.Srv.Store.Team().Get(teamId)
+ uchan := a.Srv.Store.User().Get(userId)
var team *model.Team
if result := <-tchan; result.Err != nil {
@@ -562,24 +562,24 @@ func RemoveUserFromTeam(teamId string, userId string) *model.AppError {
user = result.Data.(*model.User)
}
- if err := LeaveTeam(team, user); err != nil {
+ if err := a.LeaveTeam(team, user); err != nil {
return err
}
return nil
}
-func LeaveTeam(team *model.Team, user *model.User) *model.AppError {
+func (a *App) LeaveTeam(team *model.Team, user *model.User) *model.AppError {
var teamMember *model.TeamMember
var err *model.AppError
- if teamMember, err = GetTeamMember(team.Id, user.Id); err != nil {
+ if teamMember, err = a.GetTeamMember(team.Id, user.Id); err != nil {
return model.NewAppError("LeaveTeam", "api.team.remove_user_from_team.missing.app_error", nil, err.Error(), http.StatusBadRequest)
}
var channelList *model.ChannelList
- if result := <-Srv.Store.Channel().GetChannels(team.Id, user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().GetChannels(team.Id, user.Id); result.Err != nil {
if result.Err.Id == "store.sql_channel.get_channels.not_found.app_error" {
channelList = &model.ChannelList{}
} else {
@@ -592,8 +592,8 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError {
for _, channel := range *channelList {
if !channel.IsGroupOrDirect() {
- InvalidateCacheForChannelMembers(channel.Id)
- if result := <-Srv.Store.Channel().RemoveMember(channel.Id, user.Id); result.Err != nil {
+ a.InvalidateCacheForChannelMembers(channel.Id)
+ if result := <-a.Srv.Store.Channel().RemoveMember(channel.Id, user.Id); result.Err != nil {
return result.Err
}
}
@@ -608,26 +608,26 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError {
teamMember.Roles = ""
teamMember.DeleteAt = model.GetMillis()
- if result := <-Srv.Store.Team().UpdateMember(teamMember); result.Err != nil {
+ if result := <-a.Srv.Store.Team().UpdateMember(teamMember); result.Err != nil {
return result.Err
}
- if uua := <-Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil {
+ if uua := <-a.Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil {
return uua.Err
}
// delete the preferences that set the last channel used in the team and other team specific preferences
- if result := <-Srv.Store.Preference().DeleteCategory(user.Id, team.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().DeleteCategory(user.Id, team.Id); result.Err != nil {
return result.Err
}
ClearSessionCacheForUser(user.Id)
- InvalidateCacheForUser(user.Id)
+ a.InvalidateCacheForUser(user.Id)
return nil
}
-func InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.AppError {
+func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.AppError {
if len(emailList) == 0 {
err := model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.no_one.app_error", nil, "", http.StatusBadRequest)
return err
@@ -647,8 +647,8 @@ func InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.Ap
return err
}
- tchan := Srv.Store.Team().Get(teamId)
- uchan := Srv.Store.User().Get(senderId)
+ tchan := a.Srv.Store.Team().Get(teamId)
+ uchan := a.Srv.Store.User().Get(senderId)
var team *model.Team
if result := <-tchan; result.Err != nil {
@@ -670,16 +670,16 @@ func InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.Ap
return nil
}
-func FindTeamByName(name string) bool {
- if result := <-Srv.Store.Team().GetByName(name); result.Err != nil {
+func (a *App) FindTeamByName(name string) bool {
+ if result := <-a.Srv.Store.Team().GetByName(name); result.Err != nil {
return false
} else {
return true
}
}
-func GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*model.TeamUnread, *model.AppError) {
- if result := <-Srv.Store.Team().GetChannelUnreadsForAllTeams(excludeTeamId, userId); result.Err != nil {
+func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*model.TeamUnread, *model.AppError) {
+ if result := <-a.Srv.Store.Team().GetChannelUnreadsForAllTeams(excludeTeamId, userId); result.Err != nil {
return nil, result.Err
} else {
data := result.Data.([]*model.ChannelUnread)
@@ -717,64 +717,64 @@ func GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*model.TeamUn
}
}
-func PermanentDeleteTeamId(teamId string) *model.AppError {
- team, err := GetTeam(teamId)
+func (a *App) PermanentDeleteTeamId(teamId string) *model.AppError {
+ team, err := a.GetTeam(teamId)
if err != nil {
return err
}
- return PermanentDeleteTeam(team)
+ return a.PermanentDeleteTeam(team)
}
-func PermanentDeleteTeam(team *model.Team) *model.AppError {
+func (a *App) PermanentDeleteTeam(team *model.Team) *model.AppError {
team.DeleteAt = model.GetMillis()
- if result := <-Srv.Store.Team().Update(team); result.Err != nil {
+ if result := <-a.Srv.Store.Team().Update(team); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Channel().GetTeamChannels(team.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().GetTeamChannels(team.Id); result.Err != nil {
if result.Err.Id != "store.sql_channel.get_channels.not_found.app_error" {
return result.Err
}
} else {
channels := result.Data.(*model.ChannelList)
for _, c := range *channels {
- PermanentDeleteChannel(c)
+ a.PermanentDeleteChannel(c)
}
}
- if result := <-Srv.Store.Team().RemoveAllMembersByTeam(team.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Team().RemoveAllMembersByTeam(team.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Command().PermanentDeleteByTeam(team.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Command().PermanentDeleteByTeam(team.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Team().PermanentDelete(team.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Team().PermanentDelete(team.Id); result.Err != nil {
return result.Err
}
return nil
}
-func SoftDeleteTeam(teamId string) *model.AppError {
- team, err := GetTeam(teamId)
+func (a *App) SoftDeleteTeam(teamId string) *model.AppError {
+ team, err := a.GetTeam(teamId)
if err != nil {
return err
}
team.DeleteAt = model.GetMillis()
- if result := <-Srv.Store.Team().Update(team); result.Err != nil {
+ if result := <-a.Srv.Store.Team().Update(team); result.Err != nil {
return result.Err
}
return nil
}
-func GetTeamStats(teamId string) (*model.TeamStats, *model.AppError) {
- tchan := Srv.Store.Team().GetTotalMemberCount(teamId)
- achan := Srv.Store.Team().GetActiveMemberCount(teamId)
+func (a *App) GetTeamStats(teamId string) (*model.TeamStats, *model.AppError) {
+ tchan := a.Srv.Store.Team().GetTotalMemberCount(teamId)
+ achan := a.Srv.Store.Team().GetActiveMemberCount(teamId)
stats := &model.TeamStats{}
stats.TeamId = teamId
@@ -794,7 +794,7 @@ func GetTeamStats(teamId string) (*model.TeamStats, *model.AppError) {
return stats, nil
}
-func GetTeamIdFromQuery(query url.Values) (string, *model.AppError) {
+func (a *App) GetTeamIdFromQuery(query url.Values) (string, *model.AppError) {
hash := query.Get("h")
inviteId := query.Get("id")
@@ -813,7 +813,7 @@ func GetTeamIdFromQuery(query url.Values) (string, *model.AppError) {
return props["id"], nil
} else if len(inviteId) > 0 {
- if result := <-Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil {
// soft fail, so we still create user but don't auto-join team
l4g.Error("%v", result.Err)
} else {
diff --git a/app/team_test.go b/app/team_test.go
index 4e0ea82f5..ecbcdfb03 100644
--- a/app/team_test.go
+++ b/app/team_test.go
@@ -11,7 +11,8 @@ import (
)
func TestCreateTeam(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
id := model.NewId()
team := &model.Team{
@@ -21,18 +22,19 @@ func TestCreateTeam(t *testing.T) {
Type: model.TEAM_OPEN,
}
- if _, err := CreateTeam(team); err != nil {
+ if _, err := a.CreateTeam(team); err != nil {
t.Log(err)
t.Fatal("Should create a new team")
}
- if _, err := CreateTeam(th.BasicTeam); err == nil {
+ if _, err := a.CreateTeam(th.BasicTeam); err == nil {
t.Fatal("Should not create a new team - team already exist")
}
}
func TestCreateTeamWithUser(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
id := model.NewId()
team := &model.Team{
@@ -42,17 +44,17 @@ func TestCreateTeamWithUser(t *testing.T) {
Type: model.TEAM_OPEN,
}
- if _, err := CreateTeamWithUser(team, th.BasicUser.Id); err != nil {
+ if _, err := a.CreateTeamWithUser(team, th.BasicUser.Id); err != nil {
t.Log(err)
t.Fatal("Should create a new team with existing user")
}
- if _, err := CreateTeamWithUser(team, model.NewId()); err == nil {
+ if _, err := a.CreateTeamWithUser(team, model.NewId()); err == nil {
t.Fatal("Should not create a new team - user does not exist")
}
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""}
- ruser, _ := CreateUser(&user)
+ ruser, _ := a.CreateUser(&user)
id = model.NewId()
team2 := &model.Team{
@@ -63,7 +65,7 @@ func TestCreateTeamWithUser(t *testing.T) {
}
//Fail to create a team with user when user has set email without domain
- if _, err := CreateTeamWithUser(team2, ruser.Id); err == nil {
+ if _, err := a.CreateTeamWithUser(team2, ruser.Id); err == nil {
t.Log(err.Message)
t.Fatal("Should not create a team with user when user has set email without domain")
} else {
@@ -75,11 +77,12 @@ func TestCreateTeamWithUser(t *testing.T) {
}
func TestUpdateTeam(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
th.BasicTeam.DisplayName = "Testing 123"
- if updatedTeam, err := UpdateTeam(th.BasicTeam); err != nil {
+ if updatedTeam, err := a.UpdateTeam(th.BasicTeam); err != nil {
t.Log(err)
t.Fatal("Should update the team")
} else {
@@ -90,33 +93,36 @@ func TestUpdateTeam(t *testing.T) {
}
func TestAddUserToTeam(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@example.com", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""}
- ruser, _ := CreateUser(&user)
+ ruser, _ := a.CreateUser(&user)
- if _, err := AddUserToTeam(th.BasicTeam.Id, ruser.Id, ""); err != nil {
+ if _, err := a.AddUserToTeam(th.BasicTeam.Id, ruser.Id, ""); err != nil {
t.Log(err)
t.Fatal("Should add user to the team")
}
}
func TestAddUserToTeamByTeamId(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@example.com", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""}
- ruser, _ := CreateUser(&user)
+ ruser, _ := a.CreateUser(&user)
- if err := AddUserToTeamByTeamId(th.BasicTeam.Id, ruser); err != nil {
+ if err := a.AddUserToTeamByTeamId(th.BasicTeam.Id, ruser); err != nil {
t.Log(err)
t.Fatal("Should add user to the team")
}
}
func TestPermanentDeleteTeam(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
- team, err := CreateTeam(&model.Team{
+ team, err := a.CreateTeam(&model.Team{
DisplayName: "deletion-test",
Name: "deletion-test",
Email: "foo@foo.com",
@@ -126,10 +132,10 @@ func TestPermanentDeleteTeam(t *testing.T) {
t.Fatal(err.Error())
}
defer func() {
- PermanentDeleteTeam(team)
+ a.PermanentDeleteTeam(team)
}()
- command, err := CreateCommand(&model.Command{
+ command, err := a.CreateCommand(&model.Command{
CreatorId: th.BasicUser.Id,
TeamId: team.Id,
Trigger: "foo",
@@ -139,37 +145,37 @@ func TestPermanentDeleteTeam(t *testing.T) {
if err != nil {
t.Fatal(err.Error())
}
- defer DeleteCommand(command.Id)
+ defer a.DeleteCommand(command.Id)
- if command, err = GetCommand(command.Id); command == nil || err != nil {
+ if command, err = a.GetCommand(command.Id); command == nil || err != nil {
t.Fatal("unable to get new command")
}
- if err := PermanentDeleteTeam(team); err != nil {
+ if err := a.PermanentDeleteTeam(team); err != nil {
t.Fatal(err.Error())
}
- if command, err = GetCommand(command.Id); command != nil || err == nil {
+ if command, err = a.GetCommand(command.Id); command != nil || err == nil {
t.Fatal("command wasn't deleted")
}
// Test deleting a team with no channels.
team = th.CreateTeam()
defer func() {
- PermanentDeleteTeam(team)
+ a.PermanentDeleteTeam(team)
}()
- if channels, err := GetPublicChannelsForTeam(team.Id, 0, 1000); err != nil {
+ if channels, err := a.GetPublicChannelsForTeam(team.Id, 0, 1000); err != nil {
t.Fatal(err)
} else {
for _, channel := range *channels {
- if err2 := PermanentDeleteChannel(channel); err2 != nil {
+ if err2 := a.PermanentDeleteChannel(channel); err2 != nil {
t.Fatal(err)
}
}
}
- if err := PermanentDeleteTeam(team); err != nil {
+ if err := a.PermanentDeleteTeam(team); err != nil {
t.Fatal(err)
}
}
diff --git a/app/user.go b/app/user.go
index 8228c8518..1c728cf56 100644
--- a/app/user.go
+++ b/app/user.go
@@ -38,7 +38,7 @@ const (
IMAGE_PROFILE_PIXEL_DIMENSION = 128
)
-func CreateUserWithHash(user *model.User, hash string, data string) (*model.User, *model.AppError) {
+func (a *App) CreateUserWithHash(user *model.User, hash string, data string) (*model.User, *model.AppError) {
if err := IsUserSignUpAllowed(); err != nil {
return nil, err
}
@@ -56,7 +56,7 @@ func CreateUserWithHash(user *model.User, hash string, data string) (*model.User
teamId := props["id"]
var team *model.Team
- if result := <-Srv.Store.Team().Get(teamId); result.Err != nil {
+ if result := <-a.Srv.Store.Team().Get(teamId); result.Err != nil {
return nil, result.Err
} else {
team = result.Data.(*model.Team)
@@ -67,26 +67,26 @@ func CreateUserWithHash(user *model.User, hash string, data string) (*model.User
var ruser *model.User
var err *model.AppError
- if ruser, err = CreateUser(user); err != nil {
+ if ruser, err = a.CreateUser(user); err != nil {
return nil, err
}
- if err := JoinUserToTeam(team, ruser, ""); err != nil {
+ if err := a.JoinUserToTeam(team, ruser, ""); err != nil {
return nil, err
}
- AddDirectChannels(team.Id, ruser)
+ a.AddDirectChannels(team.Id, ruser)
return ruser, nil
}
-func CreateUserWithInviteId(user *model.User, inviteId string) (*model.User, *model.AppError) {
+func (a *App) CreateUserWithInviteId(user *model.User, inviteId string) (*model.User, *model.AppError) {
if err := IsUserSignUpAllowed(); err != nil {
return nil, err
}
var team *model.Team
- if result := <-Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil {
+ if result := <-a.Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil {
return nil, result.Err
} else {
team = result.Data.(*model.Team)
@@ -96,54 +96,54 @@ func CreateUserWithInviteId(user *model.User, inviteId string) (*model.User, *mo
var ruser *model.User
var err *model.AppError
- if ruser, err = CreateUser(user); err != nil {
+ if ruser, err = a.CreateUser(user); err != nil {
return nil, err
}
- if err := JoinUserToTeam(team, ruser, ""); err != nil {
+ if err := a.JoinUserToTeam(team, ruser, ""); err != nil {
return nil, err
}
- AddDirectChannels(team.Id, ruser)
+ a.AddDirectChannels(team.Id, ruser)
- if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
+ if err := a.SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error())
}
return ruser, nil
}
-func CreateUserAsAdmin(user *model.User) (*model.User, *model.AppError) {
- ruser, err := CreateUser(user)
+func (a *App) CreateUserAsAdmin(user *model.User) (*model.User, *model.AppError) {
+ ruser, err := a.CreateUser(user)
if err != nil {
return nil, err
}
- if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
+ if err := a.SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error())
}
return ruser, nil
}
-func CreateUserFromSignup(user *model.User) (*model.User, *model.AppError) {
+func (a *App) CreateUserFromSignup(user *model.User) (*model.User, *model.AppError) {
if err := IsUserSignUpAllowed(); err != nil {
return nil, err
}
- if !IsFirstUserAccount() && !*utils.Cfg.TeamSettings.EnableOpenServer {
+ if !a.IsFirstUserAccount() && !*utils.Cfg.TeamSettings.EnableOpenServer {
err := model.NewAppError("CreateUserFromSignup", "api.user.create_user.no_open_server", nil, "email="+user.Email, http.StatusForbidden)
return nil, err
}
user.EmailVerified = false
- ruser, err := CreateUser(user)
+ ruser, err := a.CreateUser(user)
if err != nil {
return nil, err
}
- if err := SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
+ if err := a.SendWelcomeEmail(ruser.Id, ruser.Email, ruser.EmailVerified, ruser.Locale, utils.GetSiteURL()); err != nil {
l4g.Error(err.Error())
}
@@ -158,9 +158,9 @@ func IsUserSignUpAllowed() *model.AppError {
return nil
}
-func IsFirstUserAccount() bool {
+func (a *App) IsFirstUserAccount() bool {
if SessionCacheLength() == 0 {
- if cr := <-Srv.Store.User().GetTotalUsersCount(); cr.Err != nil {
+ if cr := <-a.Srv.Store.User().GetTotalUsersCount(); cr.Err != nil {
l4g.Error(cr.Err)
return false
} else {
@@ -174,7 +174,7 @@ func IsFirstUserAccount() bool {
return false
}
-func CreateUser(user *model.User) (*model.User, *model.AppError) {
+func (a *App) CreateUser(user *model.User) (*model.User, *model.AppError) {
if !user.IsLDAPUser() && !user.IsSAMLUser() && !CheckUserDomain(user, utils.Cfg.TeamSettings.RestrictCreationToDomains) {
return nil, model.NewAppError("CreateUser", "api.user.create_user.accepted_domain.app_error", nil, "", http.StatusBadRequest)
}
@@ -183,7 +183,7 @@ func CreateUser(user *model.User) (*model.User, *model.AppError) {
// Below is a special case where the first user in the entire
// system is granted the system_admin role
- if result := <-Srv.Store.User().GetTotalUsersCount(); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetTotalUsersCount(); result.Err != nil {
return nil, result.Err
} else {
count := result.Data.(int64)
@@ -196,7 +196,7 @@ func CreateUser(user *model.User) (*model.User, *model.AppError) {
user.Locale = *utils.Cfg.LocalizationSettings.DefaultClientLocale
}
- if ruser, err := createUser(user); err != nil {
+ if ruser, err := a.createUser(user); err != nil {
return nil, err
} else {
// This message goes to everyone, so the teamId, channelId and userId are irrelevant
@@ -208,27 +208,27 @@ func CreateUser(user *model.User) (*model.User, *model.AppError) {
}
}
-func createUser(user *model.User) (*model.User, *model.AppError) {
+func (a *App) createUser(user *model.User) (*model.User, *model.AppError) {
user.MakeNonNil()
if err := utils.IsPasswordValid(user.Password); user.AuthService == "" && err != nil {
return nil, err
}
- if result := <-Srv.Store.User().Save(user); result.Err != nil {
+ if result := <-a.Srv.Store.User().Save(user); result.Err != nil {
l4g.Error(utils.T("api.user.create_user.save.error"), result.Err)
return nil, result.Err
} else {
ruser := result.Data.(*model.User)
if user.EmailVerified {
- if err := VerifyUserEmail(ruser.Id); err != nil {
+ if err := a.VerifyUserEmail(ruser.Id); err != nil {
l4g.Error(utils.T("api.user.create_user.verified.error"), err)
}
}
pref := model.Preference{UserId: ruser.Id, Category: model.PREFERENCE_CATEGORY_TUTORIAL_STEPS, Name: ruser.Id, Value: "0"}
- if presult := <-Srv.Store.Preference().Save(&model.Preferences{pref}); presult.Err != nil {
+ if presult := <-a.Srv.Store.Preference().Save(&model.Preferences{pref}); presult.Err != nil {
l4g.Error(utils.T("api.user.create_user.tutorial.error"), presult.Err.Message)
}
@@ -238,7 +238,7 @@ func createUser(user *model.User) (*model.User, *model.AppError) {
}
}
-func CreateOAuthUser(service string, userData io.Reader, teamId string) (*model.User, *model.AppError) {
+func (a *App) CreateOAuthUser(service string, userData io.Reader, teamId string) (*model.User, *model.AppError) {
if !utils.Cfg.TeamSettings.EnableUserCreation {
return nil, model.NewAppError("CreateOAuthUser", "api.user.create_user.disabled.app_error", nil, "", http.StatusNotImplemented)
}
@@ -255,13 +255,13 @@ func CreateOAuthUser(service string, userData io.Reader, teamId string) (*model.
return nil, model.NewAppError("CreateOAuthUser", "api.user.create_oauth_user.create.app_error", map[string]interface{}{"Service": service}, "", http.StatusInternalServerError)
}
- suchan := Srv.Store.User().GetByAuth(user.AuthData, service)
- euchan := Srv.Store.User().GetByEmail(user.Email)
+ suchan := a.Srv.Store.User().GetByAuth(user.AuthData, service)
+ euchan := a.Srv.Store.User().GetByEmail(user.Email)
found := true
count := 0
for found {
- if found = IsUsernameTaken(user.Username); found {
+ if found = a.IsUsernameTaken(user.Username); found {
user.Username = user.Username + strconv.Itoa(count)
count += 1
}
@@ -282,18 +282,18 @@ func CreateOAuthUser(service string, userData io.Reader, teamId string) (*model.
user.EmailVerified = true
- ruser, err := CreateUser(user)
+ ruser, err := a.CreateUser(user)
if err != nil {
return nil, err
}
if len(teamId) > 0 {
- err = AddUserToTeamByTeamId(teamId, user)
+ err = a.AddUserToTeamByTeamId(teamId, user)
if err != nil {
return nil, err
}
- err = AddDirectChannels(teamId, user)
+ err = a.AddDirectChannels(teamId, user)
if err != nil {
l4g.Error(err.Error())
}
@@ -320,29 +320,29 @@ func CheckUserDomain(user *model.User, domains string) bool {
}
// Check if the username is already used by another user. Return false if the username is invalid.
-func IsUsernameTaken(name string) bool {
+func (a *App) IsUsernameTaken(name string) bool {
if !model.IsValidUsername(name) {
return false
}
- if result := <-Srv.Store.User().GetByUsername(name); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetByUsername(name); result.Err != nil {
return false
}
return true
}
-func GetUser(userId string) (*model.User, *model.AppError) {
- if result := <-Srv.Store.User().Get(userId); result.Err != nil {
+func (a *App) GetUser(userId string) (*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().Get(userId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.User), nil
}
}
-func GetUserByUsername(username string) (*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetByUsername(username); result.Err != nil && result.Err.Id == "store.sql_user.get_by_username.app_error" {
+func (a *App) GetUserByUsername(username string) (*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetByUsername(username); result.Err != nil && result.Err.Id == "store.sql_user.get_by_username.app_error" {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else {
@@ -350,9 +350,9 @@ func GetUserByUsername(username string) (*model.User, *model.AppError) {
}
}
-func GetUserByEmail(email string) (*model.User, *model.AppError) {
+func (a *App) GetUserByEmail(email string) (*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetByEmail(email); result.Err != nil && result.Err.Id == "store.sql_user.missing_account.const" {
+ if result := <-a.Srv.Store.User().GetByEmail(email); result.Err != nil && result.Err.Id == "store.sql_user.missing_account.const" {
result.Err.StatusCode = http.StatusNotFound
return nil, result.Err
} else if result.Err != nil {
@@ -363,18 +363,18 @@ func GetUserByEmail(email string) (*model.User, *model.AppError) {
}
}
-func GetUserByAuth(authData *string, authService string) (*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetByAuth(authData, authService); result.Err != nil {
+func (a *App) GetUserByAuth(authData *string, authService string) (*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetByAuth(authData, authService); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.User), nil
}
}
-func GetUserForLogin(loginId string, onlyLdap bool) (*model.User, *model.AppError) {
+func (a *App) GetUserForLogin(loginId string, onlyLdap bool) (*model.User, *model.AppError) {
ldapAvailable := *utils.Cfg.LdapSettings.Enable && einterfaces.GetLdapInterface() != nil && utils.IsLicensed() && *utils.License().Features.LDAP
- if result := <-Srv.Store.User().GetForLogin(
+ if result := <-a.Srv.Store.User().GetForLogin(
loginId,
*utils.Cfg.EmailSettings.EnableSignInWithUsername && !onlyLdap,
*utils.Cfg.EmailSettings.EnableSignInWithEmail && !onlyLdap,
@@ -402,16 +402,16 @@ func GetUserForLogin(loginId string, onlyLdap bool) (*model.User, *model.AppErro
}
}
-func GetUsers(offset int, limit int) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetAllProfiles(offset, limit); result.Err != nil {
+func (a *App) GetUsers(offset int, limit int) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetAllProfiles(offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.User), nil
}
}
-func GetUsersMap(offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
- users, err := GetUsers(offset, limit)
+func (a *App) GetUsersMap(offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := a.GetUsers(offset, limit)
if err != nil {
return nil, err
}
@@ -426,8 +426,8 @@ func GetUsersMap(offset int, limit int, asAdmin bool) (map[string]*model.User, *
return userMap, nil
}
-func GetUsersPage(page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
- users, err := GetUsers(page*perPage, perPage)
+func (a *App) GetUsersPage(page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := a.GetUsers(page*perPage, perPage)
if err != nil {
return nil, err
}
@@ -435,28 +435,28 @@ func GetUsersPage(page int, perPage int, asAdmin bool) ([]*model.User, *model.Ap
return sanitizeProfiles(users, asAdmin), nil
}
-func GetUsersEtag() string {
- return (<-Srv.Store.User().GetEtagForAllProfiles()).Data.(string)
+func (a *App) GetUsersEtag() string {
+ return (<-a.Srv.Store.User().GetEtagForAllProfiles()).Data.(string)
}
-func GetUsersInTeam(teamId string, offset int, limit int) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfiles(teamId, offset, limit); result.Err != nil {
+func (a *App) GetUsersInTeam(teamId string, offset int, limit int) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetProfiles(teamId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.User), nil
}
}
-func GetUsersNotInTeam(teamId string, offset int, limit int) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfilesNotInTeam(teamId, offset, limit); result.Err != nil {
+func (a *App) GetUsersNotInTeam(teamId string, offset int, limit int) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetProfilesNotInTeam(teamId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.User), nil
}
}
-func GetUsersInTeamMap(teamId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
- users, err := GetUsersInTeam(teamId, offset, limit)
+func (a *App) GetUsersInTeamMap(teamId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := a.GetUsersInTeam(teamId, offset, limit)
if err != nil {
return nil, err
}
@@ -471,8 +471,8 @@ func GetUsersInTeamMap(teamId string, offset int, limit int, asAdmin bool) (map[
return userMap, nil
}
-func GetUsersInTeamPage(teamId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
- users, err := GetUsersInTeam(teamId, page*perPage, perPage)
+func (a *App) GetUsersInTeamPage(teamId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := a.GetUsersInTeam(teamId, page*perPage, perPage)
if err != nil {
return nil, err
}
@@ -480,8 +480,8 @@ func GetUsersInTeamPage(teamId string, page int, perPage int, asAdmin bool) ([]*
return sanitizeProfiles(users, asAdmin), nil
}
-func GetUsersNotInTeamPage(teamId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
- users, err := GetUsersNotInTeam(teamId, page*perPage, perPage)
+func (a *App) GetUsersNotInTeamPage(teamId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := a.GetUsersNotInTeam(teamId, page*perPage, perPage)
if err != nil {
return nil, err
}
@@ -489,24 +489,24 @@ func GetUsersNotInTeamPage(teamId string, page int, perPage int, asAdmin bool) (
return sanitizeProfiles(users, asAdmin), nil
}
-func GetUsersInTeamEtag(teamId string) string {
- return (<-Srv.Store.User().GetEtagForProfiles(teamId)).Data.(string)
+func (a *App) GetUsersInTeamEtag(teamId string) string {
+ return (<-a.Srv.Store.User().GetEtagForProfiles(teamId)).Data.(string)
}
-func GetUsersNotInTeamEtag(teamId string) string {
- return (<-Srv.Store.User().GetEtagForProfilesNotInTeam(teamId)).Data.(string)
+func (a *App) GetUsersNotInTeamEtag(teamId string) string {
+ return (<-a.Srv.Store.User().GetEtagForProfilesNotInTeam(teamId)).Data.(string)
}
-func GetUsersInChannel(channelId string, offset int, limit int) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfilesInChannel(channelId, offset, limit); result.Err != nil {
+func (a *App) GetUsersInChannel(channelId string, offset int, limit int) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetProfilesInChannel(channelId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.User), nil
}
}
-func GetUsersInChannelMap(channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
- users, err := GetUsersInChannel(channelId, offset, limit)
+func (a *App) GetUsersInChannelMap(channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := a.GetUsersInChannel(channelId, offset, limit)
if err != nil {
return nil, err
}
@@ -521,8 +521,8 @@ func GetUsersInChannelMap(channelId string, offset int, limit int, asAdmin bool)
return userMap, nil
}
-func GetUsersInChannelPage(channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
- users, err := GetUsersInChannel(channelId, page*perPage, perPage)
+func (a *App) GetUsersInChannelPage(channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := a.GetUsersInChannel(channelId, page*perPage, perPage)
if err != nil {
return nil, err
}
@@ -530,16 +530,16 @@ func GetUsersInChannelPage(channelId string, page int, perPage int, asAdmin bool
return sanitizeProfiles(users, asAdmin), nil
}
-func GetUsersNotInChannel(teamId string, channelId string, offset int, limit int) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfilesNotInChannel(teamId, channelId, offset, limit); result.Err != nil {
+func (a *App) GetUsersNotInChannel(teamId string, channelId string, offset int, limit int) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetProfilesNotInChannel(teamId, channelId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.User), nil
}
}
-func GetUsersNotInChannelMap(teamId string, channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
- users, err := GetUsersNotInChannel(teamId, channelId, offset, limit)
+func (a *App) GetUsersNotInChannelMap(teamId string, channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := a.GetUsersNotInChannel(teamId, channelId, offset, limit)
if err != nil {
return nil, err
}
@@ -554,8 +554,8 @@ func GetUsersNotInChannelMap(teamId string, channelId string, offset int, limit
return userMap, nil
}
-func GetUsersNotInChannelPage(teamId string, channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
- users, err := GetUsersNotInChannel(teamId, channelId, page*perPage, perPage)
+func (a *App) GetUsersNotInChannelPage(teamId string, channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := a.GetUsersNotInChannel(teamId, channelId, page*perPage, perPage)
if err != nil {
return nil, err
}
@@ -563,8 +563,8 @@ func GetUsersNotInChannelPage(teamId string, channelId string, page int, perPage
return sanitizeProfiles(users, asAdmin), nil
}
-func GetUsersWithoutTeamPage(page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
- users, err := GetUsersWithoutTeam(page*perPage, perPage)
+func (a *App) GetUsersWithoutTeamPage(page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := a.GetUsersWithoutTeam(page*perPage, perPage)
if err != nil {
return nil, err
}
@@ -572,16 +572,16 @@ func GetUsersWithoutTeamPage(page int, perPage int, asAdmin bool) ([]*model.User
return sanitizeProfiles(users, asAdmin), nil
}
-func GetUsersWithoutTeam(offset int, limit int) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfilesWithoutTeam(offset, limit); result.Err != nil {
+func (a *App) GetUsersWithoutTeam(offset int, limit int) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetProfilesWithoutTeam(offset, limit); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.User), nil
}
}
-func GetUsersByIds(userIds []string, asAdmin bool) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfileByIds(userIds, true); result.Err != nil {
+func (a *App) GetUsersByIds(userIds []string, asAdmin bool) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetProfileByIds(userIds, true); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -589,8 +589,8 @@ func GetUsersByIds(userIds []string, asAdmin bool) ([]*model.User, *model.AppErr
}
}
-func GetUsersByUsernames(usernames []string, asAdmin bool) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfilesByUsernames(usernames, ""); result.Err != nil {
+func (a *App) GetUsersByUsernames(usernames []string, asAdmin bool) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().GetProfilesByUsernames(usernames, ""); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -606,7 +606,7 @@ func sanitizeProfiles(users []*model.User, asAdmin bool) []*model.User {
return users
}
-func GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppError) {
+func (a *App) GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppError) {
mfaInterface := einterfaces.GetMfaInterface()
if mfaInterface == nil {
return nil, model.NewAppError("generateMfaSecret", "api.user.generate_mfa_qr.not_available.app_error", nil, "", http.StatusNotImplemented)
@@ -614,7 +614,7 @@ func GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return nil, err
}
@@ -627,7 +627,7 @@ func GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppError) {
return mfaSecret, nil
}
-func ActivateMfa(userId, token string) *model.AppError {
+func (a *App) ActivateMfa(userId, token string) *model.AppError {
mfaInterface := einterfaces.GetMfaInterface()
if mfaInterface == nil {
err := model.NewAppError("ActivateMfa", "api.user.update_mfa.not_available.app_error", nil, "", http.StatusNotImplemented)
@@ -635,7 +635,7 @@ func ActivateMfa(userId, token string) *model.AppError {
}
var user *model.User
- if result := <-Srv.Store.User().Get(userId); result.Err != nil {
+ if result := <-a.Srv.Store.User().Get(userId); result.Err != nil {
return result.Err
} else {
user = result.Data.(*model.User)
@@ -773,7 +773,7 @@ func GetProfileImage(user *model.User) ([]byte, bool, *model.AppError) {
return img, readFailed, nil
}
-func SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppError {
+func (a *App) SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppError {
file, err := imageData.Open()
defer file.Close()
if err != nil {
@@ -817,11 +817,11 @@ func SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppE
return model.NewAppError("SetProfileImage", "api.user.upload_profile_user.upload_profile.app_error", nil, "", http.StatusInternalServerError)
}
- <-Srv.Store.User().UpdateLastPictureUpdate(userId)
+ <-a.Srv.Store.User().UpdateLastPictureUpdate(userId)
- InvalidateCacheForUser(userId)
+ a.InvalidateCacheForUser(userId)
- if user, err := GetUser(userId); err != nil {
+ if user, err := a.GetUser(userId); err != nil {
l4g.Error(utils.T("api.user.get_me.getting.error"), userId)
} else {
options := utils.Cfg.GetSanitizeOptions()
@@ -838,11 +838,11 @@ func SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppE
return nil
}
-func UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.AppError {
+func (a *App) UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.AppError {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return err
}
@@ -856,7 +856,7 @@ func UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.Ap
return err
}
- if err := doubleCheckPassword(user, currentPassword); err != nil {
+ if err := a.doubleCheckPassword(user, currentPassword); err != nil {
if err.Id == "api.user.check_user_password.invalid.app_error" {
err = model.NewAppError("updatePassword", "api.user.update_password.incorrect.app_error", nil, "", http.StatusBadRequest)
}
@@ -865,17 +865,17 @@ func UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.Ap
T := utils.GetUserTranslations(user.Locale)
- if err := UpdatePasswordSendEmail(user, newPassword, T("api.user.update_password.menu")); err != nil {
+ if err := a.UpdatePasswordSendEmail(user, newPassword, T("api.user.update_password.menu")); err != nil {
return err
}
return nil
}
-func UpdateActiveNoLdap(userId string, active bool) (*model.User, *model.AppError) {
+func (a *App) UpdateActiveNoLdap(userId string, active bool) (*model.User, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return nil, err
}
@@ -885,26 +885,26 @@ func UpdateActiveNoLdap(userId string, active bool) (*model.User, *model.AppErro
return nil, err
}
- return UpdateActive(user, active)
+ return a.UpdateActive(user, active)
}
-func UpdateActive(user *model.User, active bool) (*model.User, *model.AppError) {
+func (a *App) UpdateActive(user *model.User, active bool) (*model.User, *model.AppError) {
if active {
user.DeleteAt = 0
} else {
user.DeleteAt = model.GetMillis()
}
- if result := <-Srv.Store.User().Update(user, true); result.Err != nil {
+ if result := <-a.Srv.Store.User().Update(user, true); result.Err != nil {
return nil, result.Err
} else {
if user.DeleteAt > 0 {
- if err := RevokeAllSessions(user.Id); err != nil {
+ if err := a.RevokeAllSessions(user.Id); err != nil {
return nil, err
}
}
- if extra := <-Srv.Store.Channel().ExtraUpdateByUser(user.Id, model.GetMillis()); extra.Err != nil {
+ if extra := <-a.Srv.Store.Channel().ExtraUpdateByUser(user.Id, model.GetMillis()); extra.Err != nil {
return nil, extra.Err
}
@@ -914,7 +914,7 @@ func UpdateActive(user *model.User, active bool) (*model.User, *model.AppError)
ruser.Sanitize(options)
if !active {
- SetStatusOffline(ruser.Id, false)
+ a.SetStatusOffline(ruser.Id, false)
}
return ruser, nil
@@ -931,8 +931,8 @@ func SanitizeProfile(user *model.User, asAdmin bool) {
user.SanitizeProfile(options)
}
-func UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError) {
- updatedUser, err := UpdateUser(user, true)
+func (a *App) UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError) {
+ updatedUser, err := a.UpdateUser(user, true)
if err != nil {
return nil, err
}
@@ -942,15 +942,15 @@ func UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppEr
return updatedUser, nil
}
-func PatchUser(userId string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError) {
- user, err := GetUser(userId)
+func (a *App) PatchUser(userId string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError) {
+ user, err := a.GetUser(userId)
if err != nil {
return nil, err
}
user.Patch(patch)
- updatedUser, err := UpdateUser(user, true)
+ updatedUser, err := a.UpdateUser(user, true)
if err != nil {
return nil, err
}
@@ -970,8 +970,8 @@ func sendUpdatedUserEvent(user model.User, asAdmin bool) {
go Publish(message)
}
-func UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError) {
- if result := <-Srv.Store.User().Update(user, false); result.Err != nil {
+func (a *App) UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().Update(user, false); result.Err != nil {
return nil, result.Err
} else {
rusers := result.Data.([2]*model.User)
@@ -985,7 +985,7 @@ func UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.A
}()
if utils.Cfg.EmailSettings.RequireEmailVerification {
- if err := SendEmailVerification(rusers[0]); err != nil {
+ if err := a.SendEmailVerification(rusers[0]); err != nil {
l4g.Error(err.Error())
}
}
@@ -1000,32 +1000,32 @@ func UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.A
}
}
- InvalidateCacheForUser(user.Id)
+ a.InvalidateCacheForUser(user.Id)
return rusers[0], nil
}
}
-func UpdateUserNotifyProps(userId string, props map[string]string) (*model.User, *model.AppError) {
+func (a *App) UpdateUserNotifyProps(userId string, props map[string]string) (*model.User, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return nil, err
}
user.NotifyProps = props
var ruser *model.User
- if ruser, err = UpdateUser(user, true); err != nil {
+ if ruser, err = a.UpdateUser(user, true); err != nil {
return nil, err
}
return ruser, nil
}
-func UpdateMfa(activate bool, userId, token string) *model.AppError {
+func (a *App) UpdateMfa(activate bool, userId, token string) *model.AppError {
if activate {
- if err := ActivateMfa(userId, token); err != nil {
+ if err := a.ActivateMfa(userId, token); err != nil {
return err
}
} else {
@@ -1038,7 +1038,7 @@ func UpdateMfa(activate bool, userId, token string) *model.AppError {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
l4g.Error(err.Error())
return
}
@@ -1051,32 +1051,32 @@ func UpdateMfa(activate bool, userId, token string) *model.AppError {
return nil
}
-func UpdatePasswordByUserIdSendEmail(userId, newPassword, method string) *model.AppError {
+func (a *App) UpdatePasswordByUserIdSendEmail(userId, newPassword, method string) *model.AppError {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
return err
}
- return UpdatePasswordSendEmail(user, newPassword, method)
+ return a.UpdatePasswordSendEmail(user, newPassword, method)
}
-func UpdatePassword(user *model.User, newPassword string) *model.AppError {
+func (a *App) UpdatePassword(user *model.User, newPassword string) *model.AppError {
if err := utils.IsPasswordValid(newPassword); err != nil {
return err
}
hashedPassword := model.HashPassword(newPassword)
- if result := <-Srv.Store.User().UpdatePassword(user.Id, hashedPassword); result.Err != nil {
+ if result := <-a.Srv.Store.User().UpdatePassword(user.Id, hashedPassword); result.Err != nil {
return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, result.Err.Error(), http.StatusInternalServerError)
}
return nil
}
-func UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError {
- if err := UpdatePassword(user, newPassword); err != nil {
+func (a *App) UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError {
+ if err := a.UpdatePassword(user, newPassword); err != nil {
return err
}
@@ -1089,10 +1089,10 @@ func UpdatePasswordSendEmail(user *model.User, newPassword, method string) *mode
return nil
}
-func ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.AppError {
+func (a *App) ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.AppError {
var token *model.Token
var err *model.AppError
- if token, err = GetPasswordRecoveryToken(userSuppliedTokenString); err != nil {
+ if token, err = a.GetPasswordRecoveryToken(userSuppliedTokenString); err != nil {
return err
} else {
if model.GetMillis()-token.CreateAt >= PASSWORD_RECOVER_EXPIRY_TIME {
@@ -1101,7 +1101,7 @@ func ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.
}
var user *model.User
- if user, err = GetUser(token.Extra); err != nil {
+ if user, err = a.GetUser(token.Extra); err != nil {
return err
}
@@ -1111,21 +1111,21 @@ func ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.
T := utils.GetUserTranslations(user.Locale)
- if err := UpdatePasswordSendEmail(user, newPassword, T("api.user.reset_password.method")); err != nil {
+ if err := a.UpdatePasswordSendEmail(user, newPassword, T("api.user.reset_password.method")); err != nil {
return err
}
- if err := DeleteToken(token); err != nil {
+ if err := a.DeleteToken(token); err != nil {
l4g.Error(err.Error())
}
return nil
}
-func SendPasswordReset(email string, siteURL string) (bool, *model.AppError) {
+func (a *App) SendPasswordReset(email string, siteURL string) (bool, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUserByEmail(email); err != nil {
+ if user, err = a.GetUserByEmail(email); err != nil {
return false, nil
}
@@ -1134,7 +1134,7 @@ func SendPasswordReset(email string, siteURL string) (bool, *model.AppError) {
}
var token *model.Token
- if token, err = CreatePasswordRecoveryToken(user.Id); err != nil {
+ if token, err = a.CreatePasswordRecoveryToken(user.Id); err != nil {
return false, err
}
@@ -1145,18 +1145,18 @@ func SendPasswordReset(email string, siteURL string) (bool, *model.AppError) {
return true, nil
}
-func CreatePasswordRecoveryToken(userId string) (*model.Token, *model.AppError) {
+func (a *App) CreatePasswordRecoveryToken(userId string) (*model.Token, *model.AppError) {
token := model.NewToken(TOKEN_TYPE_PASSWORD_RECOVERY, userId)
- if result := <-Srv.Store.Token().Save(token); result.Err != nil {
+ if result := <-a.Srv.Store.Token().Save(token); result.Err != nil {
return nil, result.Err
}
return token, nil
}
-func GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError) {
- if result := <-Srv.Store.Token().GetByToken(token); result.Err != nil {
+func (a *App) GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError) {
+ if result := <-a.Srv.Store.Token().GetByToken(token); result.Err != nil {
return nil, model.NewAppError("GetPasswordRecoveryToken", "api.user.reset_password.invalid_link.app_error", nil, result.Err.Error(), http.StatusBadRequest)
} else {
token := result.Data.(*model.Token)
@@ -1167,25 +1167,25 @@ func GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError) {
}
}
-func DeleteToken(token *model.Token) *model.AppError {
- if result := <-Srv.Store.Token().Delete(token.Token); result.Err != nil {
+func (a *App) DeleteToken(token *model.Token) *model.AppError {
+ if result := <-a.Srv.Store.Token().Delete(token.Token); result.Err != nil {
return result.Err
}
return nil
}
-func UpdateUserRoles(userId string, newRoles string) (*model.User, *model.AppError) {
+func (a *App) UpdateUserRoles(userId string, newRoles string) (*model.User, *model.AppError) {
var user *model.User
var err *model.AppError
- if user, err = GetUser(userId); err != nil {
+ if user, err = a.GetUser(userId); err != nil {
err.StatusCode = http.StatusBadRequest
return nil, err
}
user.Roles = newRoles
- uchan := Srv.Store.User().Update(user, true)
- schan := Srv.Store.Session().UpdateRoles(user.Id, newRoles)
+ uchan := a.Srv.Store.User().Update(user, true)
+ schan := a.Srv.Store.Session().UpdateRoles(user.Id, newRoles)
var ruser *model.User
if result := <-uchan; result.Err != nil {
@@ -1204,61 +1204,61 @@ func UpdateUserRoles(userId string, newRoles string) (*model.User, *model.AppErr
return ruser, nil
}
-func PermanentDeleteUser(user *model.User) *model.AppError {
+func (a *App) PermanentDeleteUser(user *model.User) *model.AppError {
l4g.Warn(utils.T("api.user.permanent_delete_user.attempting.warn"), user.Email, user.Id)
if user.IsInRole(model.ROLE_SYSTEM_ADMIN.Id) {
l4g.Warn(utils.T("api.user.permanent_delete_user.system_admin.warn"), user.Email)
}
- if _, err := UpdateActive(user, false); err != nil {
+ if _, err := a.UpdateActive(user, false); err != nil {
return err
}
- if result := <-Srv.Store.Session().PermanentDeleteSessionsByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Session().PermanentDeleteSessionsByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.UserAccessToken().DeleteAllForUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.UserAccessToken().DeleteAllForUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.OAuth().PermanentDeleteAuthDataByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.OAuth().PermanentDeleteAuthDataByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Webhook().PermanentDeleteIncomingByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().PermanentDeleteIncomingByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Webhook().PermanentDeleteOutgoingByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().PermanentDeleteOutgoingByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Command().PermanentDeleteByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Command().PermanentDeleteByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Preference().PermanentDeleteByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Preference().PermanentDeleteByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Channel().PermanentDeleteMembersByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Channel().PermanentDeleteMembersByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Post().PermanentDeleteByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Post().PermanentDeleteByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.User().PermanentDelete(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.User().PermanentDelete(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Audit().PermanentDeleteByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Audit().PermanentDeleteByUser(user.Id); result.Err != nil {
return result.Err
}
- if result := <-Srv.Store.Team().RemoveAllMembersByUser(user.Id); result.Err != nil {
+ if result := <-a.Srv.Store.Team().RemoveAllMembersByUser(user.Id); result.Err != nil {
return result.Err
}
@@ -1267,45 +1267,45 @@ func PermanentDeleteUser(user *model.User) *model.AppError {
return nil
}
-func PermanentDeleteAllUsers() *model.AppError {
- if result := <-Srv.Store.User().GetAll(); result.Err != nil {
+func (a *App) PermanentDeleteAllUsers() *model.AppError {
+ if result := <-a.Srv.Store.User().GetAll(); result.Err != nil {
return result.Err
} else {
users := result.Data.([]*model.User)
for _, user := range users {
- PermanentDeleteUser(user)
+ a.PermanentDeleteUser(user)
}
}
return nil
}
-func SendEmailVerification(user *model.User) *model.AppError {
- token, err := CreateVerifyEmailToken(user.Id)
+func (a *App) SendEmailVerification(user *model.User) *model.AppError {
+ token, err := a.CreateVerifyEmailToken(user.Id)
if err != nil {
return err
}
- if _, err := GetStatus(user.Id); err != nil {
+ if _, err := a.GetStatus(user.Id); err != nil {
return SendVerifyEmail(user.Email, user.Locale, utils.GetSiteURL(), token.Token)
} else {
return SendEmailChangeVerifyEmail(user.Email, user.Locale, utils.GetSiteURL(), token.Token)
}
}
-func VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError {
+func (a *App) VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError {
var token *model.Token
var err *model.AppError
- if token, err = GetVerifyEmailToken(userSuppliedTokenString); err != nil {
+ if token, err = a.GetVerifyEmailToken(userSuppliedTokenString); err != nil {
return err
} else {
if model.GetMillis()-token.CreateAt >= PASSWORD_RECOVER_EXPIRY_TIME {
return model.NewAppError("resetPassword", "api.user.reset_password.link_expired.app_error", nil, "", http.StatusBadRequest)
}
- if err := VerifyUserEmail(token.Extra); err != nil {
+ if err := a.VerifyUserEmail(token.Extra); err != nil {
return err
}
- if err := DeleteToken(token); err != nil {
+ if err := a.DeleteToken(token); err != nil {
l4g.Error(err.Error())
}
}
@@ -1313,18 +1313,18 @@ func VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError {
return nil
}
-func CreateVerifyEmailToken(userId string) (*model.Token, *model.AppError) {
+func (a *App) CreateVerifyEmailToken(userId string) (*model.Token, *model.AppError) {
token := model.NewToken(TOKEN_TYPE_VERIFY_EMAIL, userId)
- if result := <-Srv.Store.Token().Save(token); result.Err != nil {
+ if result := <-a.Srv.Store.Token().Save(token); result.Err != nil {
return nil, result.Err
}
return token, nil
}
-func GetVerifyEmailToken(token string) (*model.Token, *model.AppError) {
- if result := <-Srv.Store.Token().GetByToken(token); result.Err != nil {
+func (a *App) GetVerifyEmailToken(token string) (*model.Token, *model.AppError) {
+ if result := <-a.Srv.Store.Token().GetByToken(token); result.Err != nil {
return nil, model.NewAppError("GetVerifyEmailToken", "api.user.verify_email.bad_link.app_error", nil, result.Err.Error(), http.StatusBadRequest)
} else {
token := result.Data.(*model.Token)
@@ -1335,30 +1335,30 @@ func GetVerifyEmailToken(token string) (*model.Token, *model.AppError) {
}
}
-func VerifyUserEmail(userId string) *model.AppError {
- if err := (<-Srv.Store.User().VerifyEmail(userId)).Err; err != nil {
+func (a *App) VerifyUserEmail(userId string) *model.AppError {
+ if err := (<-a.Srv.Store.User().VerifyEmail(userId)).Err; err != nil {
return err
}
return nil
}
-func SearchUsers(props *model.UserSearch, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
+func (a *App) SearchUsers(props *model.UserSearch, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
if props.WithoutTeam {
- return SearchUsersWithoutTeam(props.Term, searchOptions, asAdmin)
+ return a.SearchUsersWithoutTeam(props.Term, searchOptions, asAdmin)
} else if props.InChannelId != "" {
- return SearchUsersInChannel(props.InChannelId, props.Term, searchOptions, asAdmin)
+ return a.SearchUsersInChannel(props.InChannelId, props.Term, searchOptions, asAdmin)
} else if props.NotInChannelId != "" {
- return SearchUsersNotInChannel(props.TeamId, props.NotInChannelId, props.Term, searchOptions, asAdmin)
+ return a.SearchUsersNotInChannel(props.TeamId, props.NotInChannelId, props.Term, searchOptions, asAdmin)
} else if props.NotInTeamId != "" {
- return SearchUsersNotInTeam(props.NotInTeamId, props.Term, searchOptions, asAdmin)
+ return a.SearchUsersNotInTeam(props.NotInTeamId, props.Term, searchOptions, asAdmin)
} else {
- return SearchUsersInTeam(props.TeamId, props.Term, searchOptions, asAdmin)
+ return a.SearchUsersInTeam(props.TeamId, props.Term, searchOptions, asAdmin)
}
}
-func SearchUsersInChannel(channelId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().SearchInChannel(channelId, term, searchOptions); result.Err != nil {
+func (a *App) SearchUsersInChannel(channelId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().SearchInChannel(channelId, term, searchOptions); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -1371,8 +1371,8 @@ func SearchUsersInChannel(channelId string, term string, searchOptions map[strin
}
}
-func SearchUsersNotInChannel(teamId string, channelId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().SearchNotInChannel(teamId, channelId, term, searchOptions); result.Err != nil {
+func (a *App) SearchUsersNotInChannel(teamId string, channelId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().SearchNotInChannel(teamId, channelId, term, searchOptions); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -1385,8 +1385,8 @@ func SearchUsersNotInChannel(teamId string, channelId string, term string, searc
}
}
-func SearchUsersInTeam(teamId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().Search(teamId, term, searchOptions); result.Err != nil {
+func (a *App) SearchUsersInTeam(teamId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().Search(teamId, term, searchOptions); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -1399,8 +1399,8 @@ func SearchUsersInTeam(teamId string, term string, searchOptions map[string]bool
}
}
-func SearchUsersNotInTeam(notInTeamId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().SearchNotInTeam(notInTeamId, term, searchOptions); result.Err != nil {
+func (a *App) SearchUsersNotInTeam(notInTeamId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().SearchNotInTeam(notInTeamId, term, searchOptions); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -1413,8 +1413,8 @@ func SearchUsersNotInTeam(notInTeamId string, term string, searchOptions map[str
}
}
-func SearchUsersWithoutTeam(term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().SearchWithoutTeam(term, searchOptions); result.Err != nil {
+func (a *App) SearchUsersWithoutTeam(term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) {
+ if result := <-a.Srv.Store.User().SearchWithoutTeam(term, searchOptions); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -1427,9 +1427,9 @@ func SearchUsersWithoutTeam(term string, searchOptions map[string]bool, asAdmin
}
}
-func AutocompleteUsersInChannel(teamId string, channelId string, term string, searchOptions map[string]bool, asAdmin bool) (*model.UserAutocompleteInChannel, *model.AppError) {
- uchan := Srv.Store.User().SearchInChannel(channelId, term, searchOptions)
- nuchan := Srv.Store.User().SearchNotInChannel(teamId, channelId, term, searchOptions)
+func (a *App) AutocompleteUsersInChannel(teamId string, channelId string, term string, searchOptions map[string]bool, asAdmin bool) (*model.UserAutocompleteInChannel, *model.AppError) {
+ uchan := a.Srv.Store.User().SearchInChannel(channelId, term, searchOptions)
+ nuchan := a.Srv.Store.User().SearchNotInChannel(teamId, channelId, term, searchOptions)
autocomplete := &model.UserAutocompleteInChannel{}
@@ -1460,10 +1460,10 @@ func AutocompleteUsersInChannel(teamId string, channelId string, term string, se
return autocomplete, nil
}
-func AutocompleteUsersInTeam(teamId string, term string, searchOptions map[string]bool, asAdmin bool) (*model.UserAutocompleteInTeam, *model.AppError) {
+func (a *App) AutocompleteUsersInTeam(teamId string, term string, searchOptions map[string]bool, asAdmin bool) (*model.UserAutocompleteInTeam, *model.AppError) {
autocomplete := &model.UserAutocompleteInTeam{}
- if result := <-Srv.Store.User().Search(teamId, term, searchOptions); result.Err != nil {
+ if result := <-a.Srv.Store.User().Search(teamId, term, searchOptions); result.Err != nil {
return nil, result.Err
} else {
users := result.Data.([]*model.User)
@@ -1478,7 +1478,7 @@ func AutocompleteUsersInTeam(teamId string, term string, searchOptions map[strin
return autocomplete, nil
}
-func UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OauthProvider, service string) *model.AppError {
+func (a *App) UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OauthProvider, service string) *model.AppError {
oauthUser := provider.GetUserFromJson(userData)
if oauthUser == nil {
@@ -1488,7 +1488,7 @@ func UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterf
userAttrsChanged := false
if oauthUser.Username != user.Username {
- if existingUser, _ := GetUserByUsername(oauthUser.Username); existingUser == nil {
+ if existingUser, _ := a.GetUserByUsername(oauthUser.Username); existingUser == nil {
user.Username = oauthUser.Username
userAttrsChanged = true
}
@@ -1501,7 +1501,7 @@ func UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterf
}
if oauthUser.Email != user.Email {
- if existingUser, _ := GetUserByEmail(oauthUser.Email); existingUser == nil {
+ if existingUser, _ := a.GetUserByEmail(oauthUser.Email); existingUser == nil {
user.Email = oauthUser.Email
userAttrsChanged = true
}
@@ -1509,12 +1509,12 @@ func UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterf
if userAttrsChanged {
var result store.StoreResult
- if result = <-Srv.Store.User().Update(user, true); result.Err != nil {
+ if result = <-a.Srv.Store.User().Update(user, true); result.Err != nil {
return result.Err
}
user = result.Data.([2]*model.User)[0]
- InvalidateCacheForUser(user.Id)
+ a.InvalidateCacheForUser(user.Id)
}
return nil
diff --git a/app/user_test.go b/app/user_test.go
index 34ac46615..25d6ec92c 100644
--- a/app/user_test.go
+++ b/app/user_test.go
@@ -20,9 +20,10 @@ import (
)
func TestIsUsernameTaken(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
user := th.BasicUser
- taken := IsUsernameTaken(user.Username)
+ taken := a.IsUsernameTaken(user.Username)
if !taken {
t.Logf("the username '%v' should be taken", user.Username)
@@ -30,7 +31,7 @@ func TestIsUsernameTaken(t *testing.T) {
}
newUsername := "randomUsername"
- taken = IsUsernameTaken(newUsername)
+ taken = a.IsUsernameTaken(newUsername)
if taken {
t.Logf("the username '%v' should not be taken", newUsername)
@@ -39,7 +40,8 @@ func TestIsUsernameTaken(t *testing.T) {
}
func TestCheckUserDomain(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
user := th.BasicUser
cases := []struct {
@@ -65,12 +67,13 @@ func TestCheckUserDomain(t *testing.T) {
}
func TestCreateOAuthUser(t *testing.T) {
- th := Setup().InitBasic()
+ a := Global()
+ th := a.Setup().InitBasic()
r := rand.New(rand.NewSource(time.Now().UnixNano()))
glUser := oauthgitlab.GitLabUser{Id: int64(r.Intn(1000)) + 1, Username: "o" + model.NewId(), Email: model.NewId() + "@simulator.amazonses.com", Name: "Joram Wilander"}
json := glUser.ToJson()
- user, err := CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
+ user, err := a.CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
if err != nil {
t.Fatal(err)
}
@@ -79,7 +82,7 @@ func TestCreateOAuthUser(t *testing.T) {
t.Fatal("usernames didn't match")
}
- PermanentDeleteUser(user)
+ a.PermanentDeleteUser(user)
userCreation := utils.Cfg.TeamSettings.EnableUserCreation
defer func() {
@@ -87,7 +90,7 @@ func TestCreateOAuthUser(t *testing.T) {
}()
utils.Cfg.TeamSettings.EnableUserCreation = false
- _, err = CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
+ _, err = a.CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
if err == nil {
t.Fatal("should have failed - user creation disabled")
}
@@ -115,7 +118,8 @@ func TestCreateProfileImage(t *testing.T) {
}
func TestUpdateOAuthUserAttrs(t *testing.T) {
- Setup()
+ a := Global()
+ a.Setup()
id := model.NewId()
id2 := model.NewId()
gitlabProvider := einterfaces.GetOauthProvider("gitlab")
@@ -138,7 +142,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t)
- UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
+ a.UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t)
if user.Username != gitlabUserObj.Username {
@@ -153,7 +157,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t)
- UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
+ a.UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t)
if user.Username == gitlabUserObj.Username {
@@ -169,7 +173,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t)
- UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
+ a.UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t)
if user.Email != gitlabUserObj.Email {
@@ -188,7 +192,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t)
- UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
+ a.UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t)
if user.Email == gitlabUserObj.Email {
@@ -203,7 +207,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t)
- UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
+ a.UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t)
if user.FirstName != "Updated" {
@@ -217,7 +221,7 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
data := bytes.NewReader(gitlabUser)
user = getUserFromDB(user.Id, t)
- UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
+ a.UpdateOAuthUserAttrs(data, user, gitlabProvider, "gitlab")
user = getUserFromDB(user.Id, t)
if user.LastName != "Lastname" {
@@ -227,7 +231,8 @@ func TestUpdateOAuthUserAttrs(t *testing.T) {
}
func getUserFromDB(id string, t *testing.T) *model.User {
- if user, err := GetUser(id); err != nil {
+ a := Global()
+ if user, err := a.GetUser(id); err != nil {
t.Fatal("user is not found")
return nil
} else {
@@ -246,6 +251,7 @@ func getGitlabUserPayload(gitlabUser oauthgitlab.GitLabUser, t *testing.T) []byt
}
func createGitlabUser(t *testing.T, email string, username string) (*model.User, oauthgitlab.GitLabUser) {
+ a := Global()
r := rand.New(rand.NewSource(time.Now().UnixNano()))
gitlabUserObj := oauthgitlab.GitLabUser{Id: int64(r.Intn(1000)) + 1, Username: username, Login: "user1", Email: email, Name: "Test User"}
gitlabUser := getGitlabUserPayload(gitlabUserObj, t)
@@ -253,7 +259,7 @@ func createGitlabUser(t *testing.T, email string, username string) (*model.User,
var user *model.User
var err *model.AppError
- if user, err = CreateOAuthUser("gitlab", bytes.NewReader(gitlabUser), ""); err != nil {
+ if user, err = a.CreateOAuthUser("gitlab", bytes.NewReader(gitlabUser), ""); err != nil {
t.Fatal("unable to create the user")
}
diff --git a/app/web_conn.go b/app/web_conn.go
index f57d99cde..2f49ac1bd 100644
--- a/app/web_conn.go
+++ b/app/web_conn.go
@@ -42,11 +42,11 @@ type WebConn struct {
Sequence int64
}
-func NewWebConn(ws *websocket.Conn, session model.Session, t goi18n.TranslateFunc, locale string) *WebConn {
+func (a *App) NewWebConn(ws *websocket.Conn, session model.Session, t goi18n.TranslateFunc, locale string) *WebConn {
if len(session.UserId) > 0 {
go func() {
- SetStatusOnline(session.UserId, session.Id, false)
- UpdateLastActivityAtIfNeeded(session)
+ a.SetStatusOnline(session.UserId, session.Id, false)
+ a.UpdateLastActivityAtIfNeeded(session)
}()
}
@@ -103,7 +103,7 @@ func (c *WebConn) ReadPump() {
c.WebSocket.SetPongHandler(func(string) error {
c.WebSocket.SetReadDeadline(time.Now().Add(PONG_WAIT))
if c.IsAuthenticated() {
- go SetStatusAwayIfNeeded(c.UserId, false)
+ go Global().SetStatusAwayIfNeeded(c.UserId, false)
}
return nil
})
@@ -120,7 +120,7 @@ func (c *WebConn) ReadPump() {
return
} else {
- Srv.WebSocketRouter.ServeWebSocket(c, &req)
+ Global().Srv.WebSocketRouter.ServeWebSocket(c, &req)
}
}
}
@@ -231,7 +231,7 @@ func (webCon *WebConn) IsAuthenticated() bool {
return false
}
- session, err := GetSession(webCon.GetSessionToken())
+ session, err := Global().GetSession(webCon.GetSessionToken())
if err != nil {
l4g.Error(utils.T("api.websocket.invalid_session.error"), err.Error())
webCon.SetSessionToken("")
@@ -283,7 +283,7 @@ func (webCon *WebConn) ShouldSendEvent(msg *model.WebSocketEvent) bool {
}
if webCon.AllChannelMembers == nil {
- if result := <-Srv.Store.Channel().GetAllChannelMembersForUser(webCon.UserId, true); result.Err != nil {
+ if result := <-Global().Srv.Store.Channel().GetAllChannelMembersForUser(webCon.UserId, true); result.Err != nil {
l4g.Error("webhub.shouldSendEvent: " + result.Err.Error())
return false
} else {
@@ -313,7 +313,7 @@ func (webCon *WebConn) IsMemberOfTeam(teamId string) bool {
currentSession := webCon.GetSession()
if currentSession == nil || len(currentSession.Token) == 0 {
- session, err := GetSession(webCon.GetSessionToken())
+ session, err := Global().GetSession(webCon.GetSessionToken())
if err != nil {
l4g.Error(utils.T("api.websocket.invalid_session.error"), err.Error())
return false
diff --git a/app/web_hub.go b/app/web_hub.go
index 0faa5fc5b..fbb62c74c 100644
--- a/app/web_hub.go
+++ b/app/web_hub.go
@@ -176,9 +176,9 @@ func PublishSkipClusterSend(message *model.WebSocketEvent) {
}
}
-func InvalidateCacheForChannel(channel *model.Channel) {
- InvalidateCacheForChannelSkipClusterSend(channel.Id)
- InvalidateCacheForChannelByNameSkipClusterSend(channel.TeamId, channel.Name)
+func (a *App) InvalidateCacheForChannel(channel *model.Channel) {
+ a.InvalidateCacheForChannelSkipClusterSend(channel.Id)
+ a.InvalidateCacheForChannelByNameSkipClusterSend(channel.TeamId, channel.Name)
if cluster := einterfaces.GetClusterInterface(); cluster != nil {
msg := &model.ClusterMessage{
@@ -206,12 +206,12 @@ func InvalidateCacheForChannel(channel *model.Channel) {
}
}
-func InvalidateCacheForChannelSkipClusterSend(channelId string) {
- Srv.Store.Channel().InvalidateChannel(channelId)
+func (a *App) InvalidateCacheForChannelSkipClusterSend(channelId string) {
+ a.Srv.Store.Channel().InvalidateChannel(channelId)
}
-func InvalidateCacheForChannelMembers(channelId string) {
- InvalidateCacheForChannelMembersSkipClusterSend(channelId)
+func (a *App) InvalidateCacheForChannelMembers(channelId string) {
+ a.InvalidateCacheForChannelMembersSkipClusterSend(channelId)
if einterfaces.GetClusterInterface() != nil {
msg := &model.ClusterMessage{
@@ -223,13 +223,13 @@ func InvalidateCacheForChannelMembers(channelId string) {
}
}
-func InvalidateCacheForChannelMembersSkipClusterSend(channelId string) {
- Srv.Store.User().InvalidateProfilesInChannelCache(channelId)
- Srv.Store.Channel().InvalidateMemberCount(channelId)
+func (a *App) InvalidateCacheForChannelMembersSkipClusterSend(channelId string) {
+ a.Srv.Store.User().InvalidateProfilesInChannelCache(channelId)
+ a.Srv.Store.Channel().InvalidateMemberCount(channelId)
}
-func InvalidateCacheForChannelMembersNotifyProps(channelId string) {
- InvalidateCacheForChannelMembersNotifyPropsSkipClusterSend(channelId)
+func (a *App) InvalidateCacheForChannelMembersNotifyProps(channelId string) {
+ a.InvalidateCacheForChannelMembersNotifyPropsSkipClusterSend(channelId)
if einterfaces.GetClusterInterface() != nil {
msg := &model.ClusterMessage{
@@ -241,20 +241,20 @@ func InvalidateCacheForChannelMembersNotifyProps(channelId string) {
}
}
-func InvalidateCacheForChannelMembersNotifyPropsSkipClusterSend(channelId string) {
- Srv.Store.Channel().InvalidateCacheForChannelMembersNotifyProps(channelId)
+func (a *App) InvalidateCacheForChannelMembersNotifyPropsSkipClusterSend(channelId string) {
+ a.Srv.Store.Channel().InvalidateCacheForChannelMembersNotifyProps(channelId)
}
-func InvalidateCacheForChannelByNameSkipClusterSend(teamId, name string) {
+func (a *App) InvalidateCacheForChannelByNameSkipClusterSend(teamId, name string) {
if teamId == "" {
teamId = "dm"
}
- Srv.Store.Channel().InvalidateChannelByName(teamId, name)
+ a.Srv.Store.Channel().InvalidateChannelByName(teamId, name)
}
-func InvalidateCacheForChannelPosts(channelId string) {
- InvalidateCacheForChannelPostsSkipClusterSend(channelId)
+func (a *App) InvalidateCacheForChannelPosts(channelId string) {
+ a.InvalidateCacheForChannelPostsSkipClusterSend(channelId)
if einterfaces.GetClusterInterface() != nil {
msg := &model.ClusterMessage{
@@ -266,12 +266,12 @@ func InvalidateCacheForChannelPosts(channelId string) {
}
}
-func InvalidateCacheForChannelPostsSkipClusterSend(channelId string) {
- Srv.Store.Post().InvalidateLastPostTimeCache(channelId)
+func (a *App) InvalidateCacheForChannelPostsSkipClusterSend(channelId string) {
+ a.Srv.Store.Post().InvalidateLastPostTimeCache(channelId)
}
-func InvalidateCacheForUser(userId string) {
- InvalidateCacheForUserSkipClusterSend(userId)
+func (a *App) InvalidateCacheForUser(userId string) {
+ a.InvalidateCacheForUserSkipClusterSend(userId)
if einterfaces.GetClusterInterface() != nil {
msg := &model.ClusterMessage{
@@ -283,18 +283,18 @@ func InvalidateCacheForUser(userId string) {
}
}
-func InvalidateCacheForUserSkipClusterSend(userId string) {
- Srv.Store.Channel().InvalidateAllChannelMembersForUser(userId)
- Srv.Store.User().InvalidateProfilesInChannelCacheByUser(userId)
- Srv.Store.User().InvalidatProfileCacheForUser(userId)
+func (a *App) InvalidateCacheForUserSkipClusterSend(userId string) {
+ a.Srv.Store.Channel().InvalidateAllChannelMembersForUser(userId)
+ a.Srv.Store.User().InvalidateProfilesInChannelCacheByUser(userId)
+ a.Srv.Store.User().InvalidatProfileCacheForUser(userId)
if len(hubs) != 0 {
GetHubForUserId(userId).InvalidateUser(userId)
}
}
-func InvalidateCacheForWebhook(webhookId string) {
- InvalidateCacheForWebhookSkipClusterSend(webhookId)
+func (a *App) InvalidateCacheForWebhook(webhookId string) {
+ a.InvalidateCacheForWebhookSkipClusterSend(webhookId)
if einterfaces.GetClusterInterface() != nil {
msg := &model.ClusterMessage{
@@ -306,8 +306,8 @@ func InvalidateCacheForWebhook(webhookId string) {
}
}
-func InvalidateCacheForWebhookSkipClusterSend(webhookId string) {
- Srv.Store.Webhook().InvalidateWebhookCache(webhookId)
+func (a *App) InvalidateCacheForWebhookSkipClusterSend(webhookId string) {
+ a.Srv.Store.Webhook().InvalidateWebhookCache(webhookId)
}
func InvalidateWebConnSessionCacheForUser(userId string) {
@@ -398,7 +398,7 @@ func (h *Hub) Start() {
}
if !found {
- go SetStatusOffline(userId, false)
+ go Global().SetStatusOffline(userId, false)
}
case userId := <-h.invalidateUser:
diff --git a/app/webhook.go b/app/webhook.go
index a22cc74c4..87797edb8 100644
--- a/app/webhook.go
+++ b/app/webhook.go
@@ -22,7 +22,7 @@ const (
TRIGGERWORDS_STARTS_WITH = 1
)
-func handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Channel, user *model.User) *model.AppError {
+func (a *App) handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Channel, user *model.User) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil
}
@@ -31,7 +31,7 @@ func handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Chan
return nil
}
- hchan := Srv.Store.Webhook().GetOutgoingByTeam(team.Id, -1, -1)
+ hchan := a.Srv.Store.Webhook().GetOutgoingByTeam(team.Id, -1, -1)
result := <-hchan
if result.Err != nil {
return result.Err
@@ -80,13 +80,13 @@ func handleWebhookEvents(post *model.Post, team *model.Team, channel *model.Chan
TriggerWord: triggerWord,
FileIds: strings.Join(post.FileIds, ","),
}
- go TriggerWebhook(payload, hook, post, channel)
+ go a.TriggerWebhook(payload, hook, post, channel)
}
return nil
}
-func TriggerWebhook(payload *model.OutgoingWebhookPayload, hook *model.OutgoingWebhook, post *model.Post, channel *model.Channel) {
+func (a *App) TriggerWebhook(payload *model.OutgoingWebhookPayload, hook *model.OutgoingWebhook, post *model.Post, channel *model.Channel) {
var body io.Reader
var contentType string
if hook.ContentType == "application/json" {
@@ -109,7 +109,7 @@ func TriggerWebhook(payload *model.OutgoingWebhookPayload, hook *model.OutgoingW
respProps := model.MapFromJson(resp.Body)
if text, ok := respProps["text"]; ok {
- if _, err := CreateWebhookPost(hook.CreatorId, channel, text, respProps["username"], respProps["icon_url"], post.Props, post.Type); err != nil {
+ if _, err := a.CreateWebhookPost(hook.CreatorId, channel, text, respProps["username"], respProps["icon_url"], post.Props, post.Type); err != nil {
l4g.Error(utils.T("api.post.handle_webhook_events_and_forget.create_post.error"), err)
}
}
@@ -118,7 +118,7 @@ func TriggerWebhook(payload *model.OutgoingWebhookPayload, hook *model.OutgoingW
}
}
-func CreateWebhookPost(userId string, channel *model.Channel, text, overrideUsername, overrideIconUrl string, props model.StringInterface, postType string) (*model.Post, *model.AppError) {
+func (a *App) CreateWebhookPost(userId string, channel *model.Channel, text, overrideUsername, overrideIconUrl string, props model.StringInterface, postType string) (*model.Post, *model.AppError) {
// parse links into Markdown format
linkWithTextRegex := regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`)
text = linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})")
@@ -173,7 +173,7 @@ func CreateWebhookPost(userId string, channel *model.Channel, text, overrideUser
post.UpdateAt = 0
post.CreateAt = 0
post.Message = txt
- if _, err := CreatePostMissingChannel(post, false); err != nil {
+ if _, err := a.CreatePostMissingChannel(post, false); err != nil {
return nil, model.NewAppError("CreateWebhookPost", "api.post.create_webhook_post.creating.app_error", nil, "err="+err.Message, http.StatusInternalServerError)
}
@@ -189,7 +189,7 @@ func CreateWebhookPost(userId string, channel *model.Channel, text, overrideUser
return firstPost, nil
}
-func CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError) {
+func (a *App) CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("CreateIncomingWebhookForChannel", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
@@ -197,14 +197,14 @@ func CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, h
hook.UserId = creatorId
hook.TeamId = channel.TeamId
- if result := <-Srv.Store.Webhook().SaveIncoming(hook); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().SaveIncoming(hook); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.IncomingWebhook), nil
}
}
-func UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError) {
+func (a *App) UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("UpdateIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
@@ -216,70 +216,70 @@ func UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.
updatedHook.TeamId = oldHook.TeamId
updatedHook.DeleteAt = oldHook.DeleteAt
- if result := <-Srv.Store.Webhook().UpdateIncoming(updatedHook); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().UpdateIncoming(updatedHook); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.IncomingWebhook), nil
}
}
-func DeleteIncomingWebhook(hookId string) *model.AppError {
+func (a *App) DeleteIncomingWebhook(hookId string) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return model.NewAppError("DeleteIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().DeleteIncoming(hookId, model.GetMillis()); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().DeleteIncoming(hookId, model.GetMillis()); result.Err != nil {
return result.Err
}
- InvalidateCacheForWebhook(hookId)
+ a.InvalidateCacheForWebhook(hookId)
return nil
}
-func GetIncomingWebhook(hookId string) (*model.IncomingWebhook, *model.AppError) {
+func (a *App) GetIncomingWebhook(hookId string) (*model.IncomingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("GetIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().GetIncoming(hookId, true); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetIncoming(hookId, true); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.IncomingWebhook), nil
}
}
-func GetIncomingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) {
+func (a *App) GetIncomingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("GetIncomingWebhooksForTeamPage", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().GetIncomingByTeam(teamId, page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetIncomingByTeam(teamId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.IncomingWebhook), nil
}
}
-func GetIncomingWebhooksPage(page, perPage int) ([]*model.IncomingWebhook, *model.AppError) {
+func (a *App) GetIncomingWebhooksPage(page, perPage int) ([]*model.IncomingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("GetIncomingWebhooksPage", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().GetIncomingList(page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetIncomingList(page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.IncomingWebhook), nil
}
}
-func CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) {
+func (a *App) CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("CreateOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
if len(hook.ChannelId) != 0 {
- cchan := Srv.Store.Channel().Get(hook.ChannelId, true)
+ cchan := a.Srv.Store.Channel().Get(hook.ChannelId, true)
var channel *model.Channel
if result := <-cchan; result.Err != nil {
@@ -299,7 +299,7 @@ func CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook,
return nil, model.NewAppError("CreateOutgoingWebhook", "api.webhook.create_outgoing.triggers.app_error", nil, "", http.StatusBadRequest)
}
- if result := <-Srv.Store.Webhook().GetOutgoingByTeam(hook.TeamId, -1, -1); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetOutgoingByTeam(hook.TeamId, -1, -1); result.Err != nil {
return nil, result.Err
} else {
allHooks := result.Data.([]*model.OutgoingWebhook)
@@ -314,20 +314,20 @@ func CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook,
}
}
- if result := <-Srv.Store.Webhook().SaveOutgoing(hook); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().SaveOutgoing(hook); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.OutgoingWebhook), nil
}
}
-func UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) {
+func (a *App) UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("UpdateOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
if len(updatedHook.ChannelId) > 0 {
- channel, err := GetChannel(updatedHook.ChannelId)
+ channel, err := a.GetChannel(updatedHook.ChannelId)
if err != nil {
return nil, err
}
@@ -344,7 +344,7 @@ func UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.
}
var result store.StoreResult
- if result = <-Srv.Store.Webhook().GetOutgoingByTeam(oldHook.TeamId, -1, -1); result.Err != nil {
+ if result = <-a.Srv.Store.Webhook().GetOutgoingByTeam(oldHook.TeamId, -1, -1); result.Err != nil {
return nil, result.Err
}
@@ -365,93 +365,93 @@ func UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.
updatedHook.TeamId = oldHook.TeamId
updatedHook.UpdateAt = model.GetMillis()
- if result = <-Srv.Store.Webhook().UpdateOutgoing(updatedHook); result.Err != nil {
+ if result = <-a.Srv.Store.Webhook().UpdateOutgoing(updatedHook); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.OutgoingWebhook), nil
}
}
-func GetOutgoingWebhook(hookId string) (*model.OutgoingWebhook, *model.AppError) {
+func (a *App) GetOutgoingWebhook(hookId string) (*model.OutgoingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().GetOutgoing(hookId); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetOutgoing(hookId); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.OutgoingWebhook), nil
}
}
-func GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
+func (a *App) GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhooksPage", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().GetOutgoingList(page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetOutgoingList(page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.OutgoingWebhook), nil
}
}
-func GetOutgoingWebhooksForChannelPage(channelId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
+func (a *App) GetOutgoingWebhooksForChannelPage(channelId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhooksForChannelPage", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().GetOutgoingByChannel(channelId, page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetOutgoingByChannel(channelId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.OutgoingWebhook), nil
}
}
-func GetOutgoingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
+func (a *App) GetOutgoingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhooksForTeamPage", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().GetOutgoingByTeam(teamId, page*perPage, perPage); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().GetOutgoingByTeam(teamId, page*perPage, perPage); result.Err != nil {
return nil, result.Err
} else {
return result.Data.([]*model.OutgoingWebhook), nil
}
}
-func DeleteOutgoingWebhook(hookId string) *model.AppError {
+func (a *App) DeleteOutgoingWebhook(hookId string) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return model.NewAppError("DeleteOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-Srv.Store.Webhook().DeleteOutgoing(hookId, model.GetMillis()); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().DeleteOutgoing(hookId, model.GetMillis()); result.Err != nil {
return result.Err
}
return nil
}
-func RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) {
+func (a *App) RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) {
if !utils.Cfg.ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("RegenOutgoingWebhookToken", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
hook.Token = model.NewId()
- if result := <-Srv.Store.Webhook().UpdateOutgoing(hook); result.Err != nil {
+ if result := <-a.Srv.Store.Webhook().UpdateOutgoing(hook); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.OutgoingWebhook), nil
}
}
-func HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *model.AppError {
+func (a *App) HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *model.AppError {
if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- hchan := Srv.Store.Webhook().GetIncoming(hookId, true)
+ hchan := a.Srv.Store.Webhook().GetIncoming(hookId, true)
if req == nil {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.parse.app_error", nil, "", http.StatusBadRequest)
@@ -493,22 +493,22 @@ func HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *mo
if len(channelName) != 0 {
if channelName[0] == '@' {
- if result := <-Srv.Store.User().GetByUsername(channelName[1:]); result.Err != nil {
+ if result := <-a.Srv.Store.User().GetByUsername(channelName[1:]); result.Err != nil {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.user.app_error", nil, "err="+result.Err.Message, http.StatusBadRequest)
} else {
- if ch, err := GetDirectChannel(hook.UserId, result.Data.(*model.User).Id); err != nil {
+ if ch, err := a.GetDirectChannel(hook.UserId, result.Data.(*model.User).Id); err != nil {
return err
} else {
channel = ch
}
}
} else if channelName[0] == '#' {
- cchan = Srv.Store.Channel().GetByName(hook.TeamId, channelName[1:], true)
+ cchan = a.Srv.Store.Channel().GetByName(hook.TeamId, channelName[1:], true)
} else {
- cchan = Srv.Store.Channel().GetByName(hook.TeamId, channelName, true)
+ cchan = a.Srv.Store.Channel().GetByName(hook.TeamId, channelName, true)
}
} else {
- cchan = Srv.Store.Channel().Get(hook.ChannelId, true)
+ cchan = a.Srv.Store.Channel().Get(hook.ChannelId, true)
}
if channel == nil {
@@ -525,21 +525,21 @@ func HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *mo
return model.NewLocAppError("HandleIncomingWebhook", "api.post.create_post.town_square_read_only", nil, "")
}
- if channel.Type != model.CHANNEL_OPEN && !HasPermissionToChannel(hook.UserId, channel.Id, model.PERMISSION_READ_CHANNEL) {
+ if channel.Type != model.CHANNEL_OPEN && !a.HasPermissionToChannel(hook.UserId, channel.Id, model.PERMISSION_READ_CHANNEL) {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.permissions.app_error", nil, "", http.StatusForbidden)
}
overrideUsername := req.Username
overrideIconUrl := req.IconURL
- if _, err := CreateWebhookPost(hook.UserId, channel, text, overrideUsername, overrideIconUrl, req.Props, webhookType); err != nil {
+ if _, err := a.CreateWebhookPost(hook.UserId, channel, text, overrideUsername, overrideIconUrl, req.Props, webhookType); err != nil {
return err
}
return nil
}
-func CreateCommandWebhook(commandId string, args *model.CommandArgs) (*model.CommandWebhook, *model.AppError) {
+func (a *App) CreateCommandWebhook(commandId string, args *model.CommandArgs) (*model.CommandWebhook, *model.AppError) {
hook := &model.CommandWebhook{
CommandId: commandId,
UserId: args.UserId,
@@ -548,27 +548,27 @@ func CreateCommandWebhook(commandId string, args *model.CommandArgs) (*model.Com
ParentId: args.ParentId,
}
- if result := <-Srv.Store.CommandWebhook().Save(hook); result.Err != nil {
+ if result := <-a.Srv.Store.CommandWebhook().Save(hook); result.Err != nil {
return nil, result.Err
} else {
return result.Data.(*model.CommandWebhook), nil
}
}
-func HandleCommandWebhook(hookId string, response *model.CommandResponse) *model.AppError {
+func (a *App) HandleCommandWebhook(hookId string, response *model.CommandResponse) *model.AppError {
if response == nil {
return model.NewAppError("HandleCommandWebhook", "web.command_webhook.parse.app_error", nil, "", http.StatusBadRequest)
}
var hook *model.CommandWebhook
- if result := <-Srv.Store.CommandWebhook().Get(hookId); result.Err != nil {
+ if result := <-a.Srv.Store.CommandWebhook().Get(hookId); result.Err != nil {
return model.NewAppError("HandleCommandWebhook", "web.command_webhook.invalid.app_error", nil, "err="+result.Err.Message, result.Err.StatusCode)
} else {
hook = result.Data.(*model.CommandWebhook)
}
var cmd *model.Command
- if result := <-Srv.Store.Command().Get(hook.CommandId); result.Err != nil {
+ if result := <-a.Srv.Store.Command().Get(hook.CommandId); result.Err != nil {
return model.NewAppError("HandleCommandWebhook", "web.command_webhook.command.app_error", nil, "err="+result.Err.Message, http.StatusBadRequest)
} else {
cmd = result.Data.(*model.Command)
@@ -582,10 +582,10 @@ func HandleCommandWebhook(hookId string, response *model.CommandResponse) *model
ParentId: hook.ParentId,
}
- if result := <-Srv.Store.CommandWebhook().TryUse(hook.Id, 5); result.Err != nil {
+ if result := <-a.Srv.Store.CommandWebhook().TryUse(hook.Id, 5); result.Err != nil {
return model.NewAppError("HandleCommandWebhook", "web.command_webhook.invalid.app_error", nil, "err="+result.Err.Message, result.Err.StatusCode)
}
- _, err := HandleCommandResponse(cmd, args, response, false)
+ _, err := a.HandleCommandResponse(cmd, args, response, false)
return err
}
diff --git a/app/webhook_test.go b/app/webhook_test.go
index 8333de0ee..49ffdf649 100644
--- a/app/webhook_test.go
+++ b/app/webhook_test.go
@@ -11,8 +11,9 @@ import (
)
func TestCreateWebhookPost(t *testing.T) {
- th := Setup().InitBasic()
- defer TearDown()
+ a := Global()
+ th := a.Setup().InitBasic()
+ defer a.TearDown()
enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks
defer func() {
@@ -22,13 +23,13 @@ func TestCreateWebhookPost(t *testing.T) {
utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true
utils.SetDefaultRolesBasedOnConfig()
- hook, err := CreateIncomingWebhookForChannel(th.BasicUser.Id, th.BasicChannel, &model.IncomingWebhook{ChannelId: th.BasicChannel.Id})
+ hook, err := a.CreateIncomingWebhookForChannel(th.BasicUser.Id, th.BasicChannel, &model.IncomingWebhook{ChannelId: th.BasicChannel.Id})
if err != nil {
t.Fatal(err.Error())
}
- defer DeleteIncomingWebhook(hook.Id)
+ defer a.DeleteIncomingWebhook(hook.Id)
- post, err := CreateWebhookPost(hook.UserId, th.BasicChannel, "foo", "user", "http://iconurl", model.StringInterface{
+ post, err := a.CreateWebhookPost(hook.UserId, th.BasicChannel, "foo", "user", "http://iconurl", model.StringInterface{
"attachments": []*model.SlackAttachment{
&model.SlackAttachment{
Text: "text",
diff --git a/app/websocket_router.go b/app/websocket_router.go
index a3c56454f..d308a14f7 100644
--- a/app/websocket_router.go
+++ b/app/websocket_router.go
@@ -6,9 +6,10 @@ package app
import (
l4g "github.com/alecthomas/log4go"
+ "net/http"
+
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "net/http"
)
type webSocketHandler interface {
@@ -53,14 +54,14 @@ func (wr *WebSocketRouter) ServeWebSocket(conn *WebConn, r *model.WebSocketReque
return
}
- session, err := GetSession(token)
+ session, err := Global().GetSession(token)
if err != nil {
conn.WebSocket.Close()
} else {
go func() {
- SetStatusOnline(session.UserId, session.Id, false)
- UpdateLastActivityAtIfNeeded(*session)
+ Global().SetStatusOnline(session.UserId, session.Id, false)
+ Global().UpdateLastActivityAtIfNeeded(*session)
}()
conn.SetSession(session)
diff --git a/cmd/platform/channel.go b/cmd/platform/channel.go
index c9256a37f..05c3c5eae 100644
--- a/cmd/platform/channel.go
+++ b/cmd/platform/channel.go
@@ -170,7 +170,7 @@ func createChannelCmdF(cmd *cobra.Command, args []string) error {
CreatorId: "",
}
- if _, err := app.CreateChannel(channel, false); err != nil {
+ if _, err := app.Global().CreateChannel(channel, false); err != nil {
return err
}
@@ -208,7 +208,7 @@ func removeUserFromChannel(channel *model.Channel, user *model.User, userArg str
CommandPrintErrorln("Can't find user '" + userArg + "'")
return
}
- if err := app.RemoveUserFromChannel(user.Id, "", channel); err != nil {
+ if err := app.Global().RemoveUserFromChannel(user.Id, "", channel); err != nil {
CommandPrintErrorln("Unable to remove '" + userArg + "' from " + channel.Name + ". Error: " + err.Error())
}
}
@@ -244,7 +244,7 @@ func addUserToChannel(channel *model.Channel, user *model.User, userArg string)
CommandPrintErrorln("Can't find user '" + userArg + "'")
return
}
- if _, err := app.AddUserToChannel(user, channel); err != nil {
+ if _, err := app.Global().AddUserToChannel(user, channel); err != nil {
CommandPrintErrorln("Unable to add '" + userArg + "' from " + channel.Name + ". Error: " + err.Error())
}
}
@@ -264,7 +264,7 @@ func archiveChannelsCmdF(cmd *cobra.Command, args []string) error {
CommandPrintErrorln("Unable to find channel '" + args[i] + "'")
continue
}
- if result := <-app.Srv.Store.Channel().Delete(channel.Id, model.GetMillis()); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Channel().Delete(channel.Id, model.GetMillis()); result.Err != nil {
CommandPrintErrorln("Unable to archive channel '" + channel.Name + "' error: " + result.Err.Error())
}
}
@@ -308,7 +308,7 @@ func deleteChannelsCmdF(cmd *cobra.Command, args []string) error {
}
func deleteChannel(channel *model.Channel) *model.AppError {
- return app.PermanentDeleteChannel(channel)
+ return app.Global().PermanentDeleteChannel(channel)
}
func moveChannelsCmdF(cmd *cobra.Command, args []string) error {
@@ -344,30 +344,30 @@ func moveChannelsCmdF(cmd *cobra.Command, args []string) error {
func moveChannel(team *model.Team, channel *model.Channel) *model.AppError {
oldTeamId := channel.TeamId
- if err := app.MoveChannel(team, channel); err != nil {
+ if err := app.Global().MoveChannel(team, channel); err != nil {
return err
}
- if incomingWebhooks, err := app.GetIncomingWebhooksForTeamPage(oldTeamId, 0, 10000000); err != nil {
+ if incomingWebhooks, err := app.Global().GetIncomingWebhooksForTeamPage(oldTeamId, 0, 10000000); err != nil {
return err
} else {
for _, webhook := range incomingWebhooks {
if webhook.ChannelId == channel.Id {
webhook.TeamId = team.Id
- if result := <-app.Srv.Store.Webhook().UpdateIncoming(webhook); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Webhook().UpdateIncoming(webhook); result.Err != nil {
CommandPrintErrorln("Failed to move incoming webhook '" + webhook.Id + "' to new team.")
}
}
}
}
- if outgoingWebhooks, err := app.GetOutgoingWebhooksForTeamPage(oldTeamId, 0, 10000000); err != nil {
+ if outgoingWebhooks, err := app.Global().GetOutgoingWebhooksForTeamPage(oldTeamId, 0, 10000000); err != nil {
return err
} else {
for _, webhook := range outgoingWebhooks {
if webhook.ChannelId == channel.Id {
webhook.TeamId = team.Id
- if result := <-app.Srv.Store.Webhook().UpdateOutgoing(webhook); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Webhook().UpdateOutgoing(webhook); result.Err != nil {
CommandPrintErrorln("Failed to move outgoing webhook '" + webhook.Id + "' to new team.")
}
}
@@ -396,7 +396,7 @@ func listChannelsCmdF(cmd *cobra.Command, args []string) error {
CommandPrintErrorln("Unable to find team '" + args[i] + "'")
continue
}
- if result := <-app.Srv.Store.Channel().GetAll(team.Id); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Channel().GetAll(team.Id); result.Err != nil {
CommandPrintErrorln("Unable to list channels for '" + args[i] + "'")
} else {
channels := result.Data.([]*model.Channel)
@@ -433,7 +433,7 @@ func restoreChannelsCmdF(cmd *cobra.Command, args []string) error {
CommandPrintErrorln("Unable to find channel '" + args[i] + "'")
continue
}
- if result := <-app.Srv.Store.Channel().SetDeleteAt(channel.Id, 0, model.GetMillis()); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Channel().SetDeleteAt(channel.Id, 0, model.GetMillis()); result.Err != nil {
CommandPrintErrorln("Unable to restore channel '" + args[i] + "'")
}
}
@@ -475,7 +475,7 @@ func modifyChannelCmdF(cmd *cobra.Command, args []string) error {
channel.Type = model.CHANNEL_PRIVATE
}
- if _, err := app.UpdateChannel(channel); err != nil {
+ if _, err := app.Global().UpdateChannel(channel); err != nil {
return errors.New("Failed to update channel '" + args[0] + "' - " + err.Error())
}
diff --git a/cmd/platform/channelargs.go b/cmd/platform/channelargs.go
index 02ee1b6ab..024073915 100644
--- a/cmd/platform/channelargs.go
+++ b/cmd/platform/channelargs.go
@@ -42,7 +42,7 @@ func getChannelFromChannelArg(channelArg string) *model.Channel {
return nil
}
- if result := <-app.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, channelPart, true); result.Err == nil {
+ if result := <-app.Global().Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, channelPart, true); result.Err == nil {
channel = result.Data.(*model.Channel)
} else {
fmt.Println(result.Err.Error())
@@ -50,7 +50,7 @@ func getChannelFromChannelArg(channelArg string) *model.Channel {
}
if channel == nil {
- if result := <-app.Srv.Store.Channel().Get(channelPart, true); result.Err == nil {
+ if result := <-app.Global().Srv.Store.Channel().Get(channelPart, true); result.Err == nil {
channel = result.Data.(*model.Channel)
}
}
diff --git a/cmd/platform/config.go b/cmd/platform/config.go
index f9b9daa85..40dd99fbb 100644
--- a/cmd/platform/config.go
+++ b/cmd/platform/config.go
@@ -5,10 +5,11 @@ package main
import (
"encoding/json"
"errors"
+ "os"
+
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
"github.com/spf13/cobra"
- "os"
)
var configCmd = &cobra.Command{
diff --git a/cmd/platform/import.go b/cmd/platform/import.go
index bf027340a..7fe573aaf 100644
--- a/cmd/platform/import.go
+++ b/cmd/platform/import.go
@@ -7,6 +7,7 @@ import (
"os"
"fmt"
+
"github.com/mattermost/platform/app"
"github.com/spf13/cobra"
)
@@ -70,7 +71,7 @@ func slackImportCmdF(cmd *cobra.Command, args []string) error {
CommandPrettyPrintln("Running Slack Import. This may take a long time for large teams or teams with many messages.")
- app.SlackImport(fileReader, fileInfo.Size(), team.Id)
+ app.Global().SlackImport(fileReader, fileInfo.Size(), team.Id)
CommandPrettyPrintln("Finished Slack Import.")
@@ -120,7 +121,7 @@ func bulkImportCmdF(cmd *cobra.Command, args []string) error {
CommandPrettyPrintln("")
- if err, lineNumber := app.BulkImport(fileReader, !apply, workers); err != nil {
+ if err, lineNumber := app.Global().BulkImport(fileReader, !apply, workers); err != nil {
CommandPrettyPrintln(err.Error())
if lineNumber != 0 {
CommandPrettyPrintln(fmt.Sprintf("Error occurred on data file line %v", lineNumber))
diff --git a/cmd/platform/init.go b/cmd/platform/init.go
index 5f915b9ab..c2b1c6bc0 100644
--- a/cmd/platform/init.go
+++ b/cmd/platform/init.go
@@ -28,10 +28,10 @@ func initDBCommandContext(configFileLocation string) error {
utils.ConfigureCmdLineLog()
- app.NewServer()
- app.InitStores()
+ app.Global().NewServer()
+ app.Global().InitStores()
if model.BuildEnterpriseReady == "true" {
- app.LoadLicense()
+ app.Global().LoadLicense()
}
return nil
diff --git a/cmd/platform/license.go b/cmd/platform/license.go
index dcb37092f..45a56a94c 100644
--- a/cmd/platform/license.go
+++ b/cmd/platform/license.go
@@ -42,7 +42,7 @@ func uploadLicenseCmdF(cmd *cobra.Command, args []string) error {
return err
}
- if _, err := app.SaveLicense(fileBytes); err != nil {
+ if _, err := app.Global().SaveLicense(fileBytes); err != nil {
return err
}
diff --git a/cmd/platform/mattermost.go b/cmd/platform/mattermost.go
index 4b564e1ab..a8845148a 100644
--- a/cmd/platform/mattermost.go
+++ b/cmd/platform/mattermost.go
@@ -79,7 +79,7 @@ func resetCmdF(cmd *cobra.Command, args []string) error {
}
}
- app.Srv.Store.DropAllTables()
+ app.Global().Srv.Store.DropAllTables()
CommandPrettyPrintln("Database sucessfully reset")
return nil
diff --git a/cmd/platform/roles.go b/cmd/platform/roles.go
index 97d6edf17..f41c0c206 100644
--- a/cmd/platform/roles.go
+++ b/cmd/platform/roles.go
@@ -52,7 +52,7 @@ func makeSystemAdminCmdF(cmd *cobra.Command, args []string) error {
return errors.New("Unable to find user '" + args[i] + "'")
}
- if _, err := app.UpdateUserRoles(user.Id, "system_admin system_user"); err != nil {
+ if _, err := app.Global().UpdateUserRoles(user.Id, "system_admin system_user"); err != nil {
return err
}
}
@@ -75,7 +75,7 @@ func makeMemberCmdF(cmd *cobra.Command, args []string) error {
return errors.New("Unable to find user '" + args[i] + "'")
}
- if _, err := app.UpdateUserRoles(user.Id, "system_user"); err != nil {
+ if _, err := app.Global().UpdateUserRoles(user.Id, "system_user"); err != nil {
return err
}
}
diff --git a/cmd/platform/server.go b/cmd/platform/server.go
index f5be5a5fc..1870641b7 100644
--- a/cmd/platform/server.go
+++ b/cmd/platform/server.go
@@ -71,18 +71,18 @@ func runServer(configFileLocation string) {
l4g.Error("Problem with file storage settings: " + err.Error())
}
- app.NewServer()
- app.InitStores()
+ app.Global().NewServer()
+ app.Global().InitStores()
api.InitRouter()
wsapi.InitRouter()
api4.InitApi(false)
api.InitApi()
- app.InitPlugins()
+ app.Global().InitPlugins()
wsapi.InitApi()
web.InitWeb()
if model.BuildEnterpriseReady == "true" {
- app.LoadLicense()
+ app.Global().LoadLicense()
}
if !utils.IsLicensed() && len(utils.Cfg.SqlSettings.DataSourceReplicas) > 1 {
@@ -98,7 +98,7 @@ func runServer(configFileLocation string) {
resetStatuses()
- app.StartServer()
+ app.Global().StartServer()
// If we allow testing then listen for manual testing URL hits
if utils.Cfg.ServiceSettings.EnableTesting {
@@ -118,7 +118,7 @@ func runServer(configFileLocation string) {
}
if einterfaces.GetClusterInterface() != nil {
- app.RegisterAllClusterMessageHandlers()
+ app.Global().RegisterAllClusterMessageHandlers()
einterfaces.GetClusterInterface().StartInterNodeCommunication()
}
@@ -132,7 +132,7 @@ func runServer(configFileLocation string) {
}
}
- jobs.Srv.Store = app.Srv.Store
+ jobs.Srv.Store = app.Global().Srv.Store
if *utils.Cfg.JobSettings.RunJobs {
jobs.Srv.StartWorkers()
}
@@ -157,7 +157,7 @@ func runServer(configFileLocation string) {
jobs.Srv.StopSchedulers()
jobs.Srv.StopWorkers()
- app.StopServer()
+ app.Global().StopServer()
}
func runSecurityJob() {
@@ -181,20 +181,20 @@ func runCommandWebhookCleanupJob() {
}
func resetStatuses() {
- if result := <-app.Srv.Store.Status().ResetAll(); result.Err != nil {
+ if result := <-app.Global().Srv.Store.Status().ResetAll(); result.Err != nil {
l4g.Error(utils.T("mattermost.reset_status.error"), result.Err.Error())
}
}
func setDiagnosticId() {
- if result := <-app.Srv.Store.System().Get(); result.Err == nil {
+ if result := <-app.Global().Srv.Store.System().Get(); result.Err == nil {
props := result.Data.(model.StringMap)
id := props[model.SYSTEM_DIAGNOSTIC_ID]
if len(id) == 0 {
id = model.NewId()
systemId := &model.System{Name: model.SYSTEM_DIAGNOSTIC_ID, Value: id}
- <-app.Srv.Store.System().Save(systemId)
+ <-app.Global().Srv.Store.System().Save(systemId)
}
utils.CfgDiagnosticId = id
@@ -202,19 +202,19 @@ func setDiagnosticId() {
}
func doSecurity() {
- app.DoSecurityUpdateCheck()
+ app.Global().DoSecurityUpdateCheck()
}
func doDiagnostics() {
if *utils.Cfg.LogSettings.EnableDiagnostics {
- app.SendDailyDiagnostics()
+ app.Global().SendDailyDiagnostics()
}
}
func doTokenCleanup() {
- app.Srv.Store.Token().Cleanup()
+ app.Global().Srv.Store.Token().Cleanup()
}
func doCommandWebhookCleanup() {
- app.Srv.Store.CommandWebhook().Cleanup()
+ app.Global().Srv.Store.CommandWebhook().Cleanup()
}
diff --git a/cmd/platform/team.go b/cmd/platform/team.go
index 4e6a592a7..af367a717 100644
--- a/cmd/platform/team.go
+++ b/cmd/platform/team.go
@@ -94,7 +94,7 @@ func createTeamCmdF(cmd *cobra.Command, args []string) error {
Type: teamType,
}
- if _, err := app.CreateTeam(team); err != nil {
+ if _, err := app.Global().CreateTeam(team); err != nil {
return errors.New("Team creation failed: " + err.Error())
}
@@ -128,7 +128,7 @@ func removeUserFromTeam(team *model.Team, user *model.User, userArg string) {
CommandPrintErrorln("Can't find user '" + userArg + "'")
return
}
- if err := app.LeaveTeam(team, user); err != nil {
+ if err := app.Global().LeaveTeam(team, user); err != nil {
CommandPrintErrorln("Unable to remove '" + userArg + "' from " + team.Name + ". Error: " + err.Error())
}
}
@@ -160,7 +160,7 @@ func addUserToTeam(team *model.Team, user *model.User, userArg string) {
CommandPrintErrorln("Can't find user '" + userArg + "'")
return
}
- if err := app.JoinUserToTeam(team, user, ""); err != nil {
+ if err := app.Global().JoinUserToTeam(team, user, ""); err != nil {
CommandPrintErrorln("Unable to add '" + userArg + "' to " + team.Name)
}
}
@@ -207,5 +207,5 @@ func deleteTeamsCmdF(cmd *cobra.Command, args []string) error {
}
func deleteTeam(team *model.Team) *model.AppError {
- return app.PermanentDeleteTeam(team)
+ return app.Global().PermanentDeleteTeam(team)
}
diff --git a/cmd/platform/teamargs.go b/cmd/platform/teamargs.go
index 31f7b489e..3b83aaa59 100644
--- a/cmd/platform/teamargs.go
+++ b/cmd/platform/teamargs.go
@@ -18,12 +18,12 @@ func getTeamsFromTeamArgs(teamArgs []string) []*model.Team {
func getTeamFromTeamArg(teamArg string) *model.Team {
var team *model.Team
- if result := <-app.Srv.Store.Team().GetByName(teamArg); result.Err == nil {
+ if result := <-app.Global().Srv.Store.Team().GetByName(teamArg); result.Err == nil {
team = result.Data.(*model.Team)
}
if team == nil {
- if result := <-app.Srv.Store.Team().Get(teamArg); result.Err == nil {
+ if result := <-app.Global().Srv.Store.Team().Get(teamArg); result.Err == nil {
team = result.Data.(*model.Team)
}
}
diff --git a/cmd/platform/test.go b/cmd/platform/test.go
index efc89a2b2..9b652931d 100644
--- a/cmd/platform/test.go
+++ b/cmd/platform/test.go
@@ -9,14 +9,15 @@ import (
"os"
"os/exec"
+ "os/signal"
+ "syscall"
+
"github.com/mattermost/platform/api"
"github.com/mattermost/platform/api4"
"github.com/mattermost/platform/app"
"github.com/mattermost/platform/utils"
"github.com/mattermost/platform/wsapi"
"github.com/spf13/cobra"
- "os/signal"
- "syscall"
)
var testCmd = &cobra.Command{
@@ -56,9 +57,9 @@ func webClientTestsCmdF(cmd *cobra.Command, args []string) error {
api.InitApi()
wsapi.InitApi()
setupClientTests()
- app.StartServer()
+ app.Global().StartServer()
runWebClientTests()
- app.StopServer()
+ app.Global().StopServer()
return nil
}
@@ -75,13 +76,13 @@ func serverForWebClientTestsCmdF(cmd *cobra.Command, args []string) error {
api.InitApi()
wsapi.InitApi()
setupClientTests()
- app.StartServer()
+ app.Global().StartServer()
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
<-c
- app.StopServer()
+ app.Global().StopServer()
return nil
}
diff --git a/cmd/platform/user.go b/cmd/platform/user.go
index cc0ceb2a0..c211ea75c 100644
--- a/cmd/platform/user.go
+++ b/cmd/platform/user.go
@@ -188,7 +188,7 @@ func changeUserActiveStatus(user *model.User, userArg string, activate bool) err
if user.IsLDAPUser() {
return errors.New("You can not modify the activation status of AD/LDAP accounts. Please modify through the AD/LDAP server.")
}
- if _, err := app.UpdateActive(user, activate); err != nil {
+ if _, err := app.Global().UpdateActive(user, activate); err != nil {
return fmt.Errorf("Unable to change activation status of user: %v", userArg)
}
@@ -241,13 +241,13 @@ func userCreateCmdF(cmd *cobra.Command, args []string) error {
Locale: locale,
}
- ruser, err := app.CreateUser(user)
+ ruser, err := app.Global().CreateUser(user)
if err != nil {
return errors.New("Unable to create user. Error: " + err.Error())
}
if systemAdmin {
- app.UpdateUserRoles(ruser.Id, "system_user system_admin")
+ app.Global().UpdateUserRoles(ruser.Id, "system_user system_admin")
}
CommandPrettyPrintln("Created User")
@@ -310,7 +310,7 @@ func resetUserPasswordCmdF(cmd *cobra.Command, args []string) error {
}
password := args[1]
- if result := <-app.Srv.Store.User().UpdatePassword(user.Id, model.HashPassword(password)); result.Err != nil {
+ if result := <-app.Global().Srv.Store.User().UpdatePassword(user.Id, model.HashPassword(password)); result.Err != nil {
return result.Err
}
@@ -373,7 +373,7 @@ func deleteUserCmdF(cmd *cobra.Command, args []string) error {
return errors.New("Unable to find user '" + args[i] + "'")
}
- if err := app.PermanentDeleteUser(user); err != nil {
+ if err := app.Global().PermanentDeleteUser(user); err != nil {
return err
}
}
@@ -406,7 +406,7 @@ func deleteAllUsersCommandF(cmd *cobra.Command, args []string) error {
}
}
- if err := app.PermanentDeleteAllUsers(); err != nil {
+ if err := app.Global().PermanentDeleteAllUsers(); err != nil {
return err
}
@@ -473,7 +473,7 @@ func verifyUserCmdF(cmd *cobra.Command, args []string) error {
CommandPrintErrorln("Unable to find user '" + args[i] + "'")
continue
}
- if cresult := <-app.Srv.Store.User().VerifyEmail(user.Id); cresult.Err != nil {
+ if cresult := <-app.Global().Srv.Store.User().VerifyEmail(user.Id); cresult.Err != nil {
CommandPrintErrorln("Unable to verify '" + args[i] + "' email. Error: " + cresult.Err.Error())
}
}
diff --git a/cmd/platform/userargs.go b/cmd/platform/userargs.go
index 43b53edd7..de45629c2 100644
--- a/cmd/platform/userargs.go
+++ b/cmd/platform/userargs.go
@@ -18,18 +18,18 @@ func getUsersFromUserArgs(userArgs []string) []*model.User {
func getUserFromUserArg(userArg string) *model.User {
var user *model.User
- if result := <-app.Srv.Store.User().GetByEmail(userArg); result.Err == nil {
+ if result := <-app.Global().Srv.Store.User().GetByEmail(userArg); result.Err == nil {
user = result.Data.(*model.User)
}
if user == nil {
- if result := <-app.Srv.Store.User().GetByUsername(userArg); result.Err == nil {
+ if result := <-app.Global().Srv.Store.User().GetByUsername(userArg); result.Err == nil {
user = result.Data.(*model.User)
}
}
if user == nil {
- if result := <-app.Srv.Store.User().Get(userArg); result.Err == nil {
+ if result := <-app.Global().Srv.Store.User().Get(userArg); result.Err == nil {
user = result.Data.(*model.User)
}
}
diff --git a/cmd/platform/version.go b/cmd/platform/version.go
index ccbd73e02..735057c0c 100644
--- a/cmd/platform/version.go
+++ b/cmd/platform/version.go
@@ -31,5 +31,5 @@ func printVersion() {
CommandPrintln("Build Date: " + model.BuildDate)
CommandPrintln("Build Hash: " + model.BuildHash)
CommandPrintln("Build Enterprise Ready: " + model.BuildEnterpriseReady)
- CommandPrintln("DB Version: " + app.Srv.Store.(*store.LayeredStore).DatabaseLayer.GetCurrentSchemaVersion())
+ CommandPrintln("DB Version: " + app.Global().Srv.Store.(*store.LayeredStore).DatabaseLayer.GetCurrentSchemaVersion())
}
diff --git a/jobs/jobs.go b/jobs/jobs.go
index e478c5a19..f61b35158 100644
--- a/jobs/jobs.go
+++ b/jobs/jobs.go
@@ -7,9 +7,10 @@ import (
"context"
"time"
+ "net/http"
+
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/model"
- "net/http"
)
const (
diff --git a/manualtesting/manual_testing.go b/manualtesting/manual_testing.go
index 85f0be2fb..cc37d73ae 100644
--- a/manualtesting/manual_testing.go
+++ b/manualtesting/manual_testing.go
@@ -29,7 +29,7 @@ type TestEnvironment struct {
}
func InitManualTesting() {
- app.Srv.Router.Handle("/manualtest", api.AppHandler(manualTest)).Methods("GET")
+ app.Global().Srv.Router.Handle("/manualtest", api.AppHandler(manualTest)).Methods("GET")
}
func manualTest(c *api.Context, w http.ResponseWriter, r *http.Request) {
@@ -72,7 +72,7 @@ func manualTest(c *api.Context, w http.ResponseWriter, r *http.Request) {
Type: model.TEAM_OPEN,
}
- if result := <-app.Srv.Store.Team().Save(team); result.Err != nil {
+ if result := <-c.App.Srv.Store.Team().Save(team); result.Err != nil {
c.Err = result.Err
return
} else {
@@ -80,7 +80,7 @@ func manualTest(c *api.Context, w http.ResponseWriter, r *http.Request) {
createdTeam := result.Data.(*model.Team)
channel := &model.Channel{DisplayName: "Town Square", Name: "town-square", Type: model.CHANNEL_OPEN, TeamId: createdTeam.Id}
- if _, err := app.CreateChannel(channel, false); err != nil {
+ if _, err := c.App.CreateChannel(channel, false); err != nil {
c.Err = err
return
}
@@ -100,8 +100,8 @@ func manualTest(c *api.Context, w http.ResponseWriter, r *http.Request) {
return
}
- <-app.Srv.Store.User().VerifyEmail(result.Data.(*model.User).Id)
- <-app.Srv.Store.Team().SaveMember(&model.TeamMember{TeamId: teamID, UserId: result.Data.(*model.User).Id})
+ <-c.App.Srv.Store.User().VerifyEmail(result.Data.(*model.User).Id)
+ <-c.App.Srv.Store.Team().SaveMember(&model.TeamMember{TeamId: teamID, UserId: result.Data.(*model.User).Id})
newuser := result.Data.(*model.User)
userID = newuser.Id
@@ -155,7 +155,7 @@ func manualTest(c *api.Context, w http.ResponseWriter, r *http.Request) {
func getChannelID(channelname string, teamid string, userid string) (id string, err bool) {
// Grab all the channels
- result := <-app.Srv.Store.Channel().GetChannels(teamid, userid)
+ result := <-app.Global().Srv.Store.Channel().GetChannels(teamid, userid)
if result.Err != nil {
l4g.Debug(utils.T("manaultesting.get_channel_id.unable.debug"))
return "", false
diff --git a/manualtesting/test_autolink.go b/manualtesting/test_autolink.go
index a2e02dc96..e6b93c1c1 100644
--- a/manualtesting/test_autolink.go
+++ b/manualtesting/test_autolink.go
@@ -4,10 +4,11 @@
package manualtesting
import (
+ "net/http"
+
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "net/http"
)
const LINK_POST_TEXT = `
diff --git a/model/gitlab/gitlab.go b/model/gitlab/gitlab.go
index 7f1447edd..17e0b5081 100644
--- a/model/gitlab/gitlab.go
+++ b/model/gitlab/gitlab.go
@@ -5,11 +5,12 @@ package oauthgitlab
import (
"encoding/json"
- "github.com/mattermost/platform/einterfaces"
- "github.com/mattermost/platform/model"
"io"
"strconv"
"strings"
+
+ "github.com/mattermost/platform/einterfaces"
+ "github.com/mattermost/platform/model"
)
type GitLabProvider struct {
diff --git a/model/manifest_test.go b/model/manifest_test.go
index 237640564..46975cf47 100644
--- a/model/manifest_test.go
+++ b/model/manifest_test.go
@@ -2,13 +2,14 @@ package model
import (
"encoding/json"
- "gopkg.in/yaml.v2"
"io/ioutil"
"os"
"path/filepath"
"strings"
"testing"
+ "gopkg.in/yaml.v2"
+
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
diff --git a/model/websocket_client.go b/model/websocket_client.go
index 2fa405f31..8c77e827c 100644
--- a/model/websocket_client.go
+++ b/model/websocket_client.go
@@ -5,6 +5,7 @@ package model
import (
"encoding/json"
+
"github.com/gorilla/websocket"
)
diff --git a/store/sql_command_store_test.go b/store/sql_command_store_test.go
index cd7db4c1d..fbd0f005e 100644
--- a/store/sql_command_store_test.go
+++ b/store/sql_command_store_test.go
@@ -4,8 +4,9 @@
package store
import (
- "github.com/mattermost/platform/model"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestCommandStoreSave(t *testing.T) {
diff --git a/store/sql_compliance_store_test.go b/store/sql_compliance_store_test.go
index 4f4b01012..b84e35b48 100644
--- a/store/sql_compliance_store_test.go
+++ b/store/sql_compliance_store_test.go
@@ -4,9 +4,10 @@
package store
import (
- "github.com/mattermost/platform/model"
"testing"
"time"
+
+ "github.com/mattermost/platform/model"
)
func TestSqlComplianceStore(t *testing.T) {
diff --git a/store/sql_emoji_store_test.go b/store/sql_emoji_store_test.go
index 25e0f7916..1e0a63f1e 100644
--- a/store/sql_emoji_store_test.go
+++ b/store/sql_emoji_store_test.go
@@ -4,9 +4,10 @@
package store
import (
- "github.com/mattermost/platform/model"
"testing"
"time"
+
+ "github.com/mattermost/platform/model"
)
func TestEmojiSaveDelete(t *testing.T) {
diff --git a/store/sql_job_store_test.go b/store/sql_job_store_test.go
index ac0fe3aed..ac71519ec 100644
--- a/store/sql_job_store_test.go
+++ b/store/sql_job_store_test.go
@@ -6,8 +6,9 @@ package store
import (
"testing"
- "github.com/mattermost/platform/model"
"time"
+
+ "github.com/mattermost/platform/model"
)
func TestJobSaveGet(t *testing.T) {
@@ -17,7 +18,7 @@ func TestJobSaveGet(t *testing.T) {
Id: model.NewId(),
Type: model.NewId(),
Status: model.NewId(),
- Data: map[string]string{
+ Data: map[string]string{
"Processed": "0",
"Total": "12345",
"LastProcessed": "abcd",
@@ -187,7 +188,7 @@ func TestJobGetAllByStatus(t *testing.T) {
Type: jobType,
CreateAt: 1000,
Status: status,
- Data: map[string]string{
+ Data: map[string]string{
"test": "data",
},
},
diff --git a/store/sql_license_store_test.go b/store/sql_license_store_test.go
index 737a79a60..f899e4d36 100644
--- a/store/sql_license_store_test.go
+++ b/store/sql_license_store_test.go
@@ -4,8 +4,9 @@
package store
import (
- "github.com/mattermost/platform/model"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestLicenseStoreSave(t *testing.T) {
diff --git a/store/sql_oauth_store_test.go b/store/sql_oauth_store_test.go
index 4dc09b830..afd75d6e5 100644
--- a/store/sql_oauth_store_test.go
+++ b/store/sql_oauth_store_test.go
@@ -4,8 +4,9 @@
package store
import (
- "github.com/mattermost/platform/model"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestOAuthStoreSaveApp(t *testing.T) {
diff --git a/store/sql_session_store_test.go b/store/sql_session_store_test.go
index 2867adadf..cbf3ece43 100644
--- a/store/sql_session_store_test.go
+++ b/store/sql_session_store_test.go
@@ -4,8 +4,9 @@
package store
import (
- "github.com/mattermost/platform/model"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestSessionStoreSave(t *testing.T) {
diff --git a/utils/license_test.go b/utils/license_test.go
index 1d948b02f..e8fb95135 100644
--- a/utils/license_test.go
+++ b/utils/license_test.go
@@ -4,8 +4,9 @@
package utils
import (
- "github.com/mattermost/platform/model"
"testing"
+
+ "github.com/mattermost/platform/model"
)
func TestSetLicense(t *testing.T) {
diff --git a/utils/logger/logger.go b/utils/logger/logger.go
index dc4aec19f..717f337ed 100644
--- a/utils/logger/logger.go
+++ b/utils/logger/logger.go
@@ -11,10 +11,11 @@ import (
l4g "github.com/alecthomas/log4go"
+ "strings"
+
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
"github.com/pkg/errors"
- "strings"
)
// this pattern allows us to "mock" the underlying l4g code when unit testing
diff --git a/utils/mail.go b/utils/mail.go
index b23e8c774..f3ca75d40 100644
--- a/utils/mail.go
+++ b/utils/mail.go
@@ -13,10 +13,11 @@ import (
"gopkg.in/gomail.v2"
+ "net/http"
+
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/html2text"
"github.com/mattermost/platform/model"
- "net/http"
)
func encodeRFC2047Word(s string) string {
diff --git a/web/web.go b/web/web.go
index 221e1dc1c..e54ae483d 100644
--- a/web/web.go
+++ b/web/web.go
@@ -21,7 +21,7 @@ import (
func InitWeb() {
l4g.Debug(utils.T("web.init.debug"))
- mainrouter := app.Srv.Router
+ mainrouter := app.Global().Srv.Router
if *utils.Cfg.ServiceSettings.WebserverMode != "disabled" {
staticDir, _ := utils.FindDir(model.CLIENT_DIR)
diff --git a/web/web_test.go b/web/web_test.go
index 4ea7cd8ee..bc3e72159 100644
--- a/web/web_test.go
+++ b/web/web_test.go
@@ -20,29 +20,29 @@ var ApiClient *model.Client
var URL string
func Setup() {
- if app.Srv == nil {
+ if app.Global().Srv == nil {
utils.TranslationsPreInit()
utils.LoadConfig("config.json")
utils.InitTranslations(utils.Cfg.LocalizationSettings)
- app.NewServer()
- app.InitStores()
+ app.Global().NewServer()
+ app.Global().InitStores()
api.InitRouter()
- app.StartServer()
+ app.Global().StartServer()
api4.InitApi(false)
api.InitApi()
InitWeb()
URL = "http://localhost" + *utils.Cfg.ServiceSettings.ListenAddress
ApiClient = model.NewClient(URL)
- app.Srv.Store.MarkSystemRanUnitTests()
+ app.Global().Srv.Store.MarkSystemRanUnitTests()
*utils.Cfg.TeamSettings.EnableOpenServer = true
}
}
func TearDown() {
- if app.Srv != nil {
- app.StopServer()
+ if app.Global().Srv != nil {
+ app.Global().StopServer()
}
}
@@ -68,16 +68,16 @@ func TestIncomingWebhook(t *testing.T) {
user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
user = ApiClient.Must(ApiClient.CreateUser(user, "")).Data.(*model.User)
- store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
+ store.Must(app.Global().Srv.Store.User().VerifyEmail(user.Id))
ApiClient.Login(user.Email, "passwd1")
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = ApiClient.Must(ApiClient.CreateTeam(team)).Data.(*model.Team)
- app.JoinUserToTeam(team, user, "")
+ app.Global().JoinUserToTeam(team, user, "")
- app.UpdateUserRoles(user.Id, model.ROLE_SYSTEM_ADMIN.Id)
+ app.Global().UpdateUserRoles(user.Id, model.ROLE_SYSTEM_ADMIN.Id)
ApiClient.SetTeamId(team.Id)
channel1 := &model.Channel{DisplayName: "Test API Name", Name: "zz" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id}
diff --git a/wsapi/api.go b/wsapi/api.go
index b7a06e42e..0a737fe5c 100644
--- a/wsapi/api.go
+++ b/wsapi/api.go
@@ -8,7 +8,7 @@ import (
)
func InitRouter() {
- app.Srv.WebSocketRouter = app.NewWebSocketRouter()
+ app.Global().Srv.WebSocketRouter = app.NewWebSocketRouter()
}
func InitApi() {
diff --git a/wsapi/status.go b/wsapi/status.go
index a69603399..58ddf2c1a 100644
--- a/wsapi/status.go
+++ b/wsapi/status.go
@@ -13,8 +13,8 @@ import (
func InitStatus() {
l4g.Debug(utils.T("wsapi.status.init.debug"))
- app.Srv.WebSocketRouter.Handle("get_statuses", ApiWebSocketHandler(getStatuses))
- app.Srv.WebSocketRouter.Handle("get_statuses_by_ids", ApiWebSocketHandler(getStatusesByIds))
+ app.Global().Srv.WebSocketRouter.Handle("get_statuses", ApiWebSocketHandler(getStatuses))
+ app.Global().Srv.WebSocketRouter.Handle("get_statuses_by_ids", ApiWebSocketHandler(getStatusesByIds))
}
func getStatuses(req *model.WebSocketRequest) (map[string]interface{}, *model.AppError) {
@@ -29,7 +29,7 @@ func getStatusesByIds(req *model.WebSocketRequest) (map[string]interface{}, *mod
return nil, NewInvalidWebSocketParamError(req.Action, "user_ids")
}
- statusMap, err := app.GetStatusesByIds(userIds)
+ statusMap, err := app.Global().GetStatusesByIds(userIds)
if err != nil {
return nil, err
}
diff --git a/wsapi/system.go b/wsapi/system.go
index 878bf50a7..ba1f862a5 100644
--- a/wsapi/system.go
+++ b/wsapi/system.go
@@ -13,7 +13,7 @@ import (
func InitSystem() {
l4g.Debug(utils.T("wsapi.system.init.debug"))
- app.Srv.WebSocketRouter.Handle("ping", ApiWebSocketHandler(ping))
+ app.Global().Srv.WebSocketRouter.Handle("ping", ApiWebSocketHandler(ping))
}
func ping(req *model.WebSocketRequest) (map[string]interface{}, *model.AppError) {
diff --git a/wsapi/user.go b/wsapi/user.go
index 7c4bdfa59..ccb6a3c3d 100644
--- a/wsapi/user.go
+++ b/wsapi/user.go
@@ -13,7 +13,7 @@ import (
func InitUser() {
l4g.Debug(utils.T("wsapi.user.init.debug"))
- app.Srv.WebSocketRouter.Handle("user_typing", ApiWebSocketHandler(userTyping))
+ app.Global().Srv.WebSocketRouter.Handle("user_typing", ApiWebSocketHandler(userTyping))
}
func userTyping(req *model.WebSocketRequest) (map[string]interface{}, *model.AppError) {
diff --git a/wsapi/webrtc.go b/wsapi/webrtc.go
index feb45b126..4a3638cc3 100644
--- a/wsapi/webrtc.go
+++ b/wsapi/webrtc.go
@@ -13,7 +13,7 @@ import (
func InitWebrtc() {
l4g.Debug(utils.T("wsapi.webtrc.init.debug"))
- app.Srv.WebSocketRouter.Handle("webrtc", ApiWebSocketHandler(webrtcMessage))
+ app.Global().Srv.WebSocketRouter.Handle("webrtc", ApiWebSocketHandler(webrtcMessage))
}
func webrtcMessage(req *model.WebSocketRequest) (map[string]interface{}, *model.AppError) {
diff --git a/wsapi/websocket_handler.go b/wsapi/websocket_handler.go
index a847a7df4..93f644958 100644
--- a/wsapi/websocket_handler.go
+++ b/wsapi/websocket_handler.go
@@ -6,10 +6,11 @@ package wsapi
import (
l4g "github.com/alecthomas/log4go"
+ "net/http"
+
"github.com/mattermost/platform/app"
"github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
- "net/http"
)
func ApiWebSocketHandler(wh func(*model.WebSocketRequest) (map[string]interface{}, *model.AppError)) webSocketHandler {
@@ -23,7 +24,7 @@ type webSocketHandler struct {
func (wh webSocketHandler) ServeWebSocket(conn *app.WebConn, r *model.WebSocketRequest) {
l4g.Debug("/api/v3/users/websocket:%s", r.Action)
- session, sessionErr := app.GetSession(conn.GetSessionToken())
+ session, sessionErr := app.Global().GetSession(conn.GetSessionToken())
if sessionErr != nil {
l4g.Error(utils.T("api.web_socket_handler.log.error"), "/api/v3/users/websocket", r.Action, r.Seq, conn.UserId, sessionErr.SystemMessage(utils.T), sessionErr.Error())
sessionErr.DetailedError = ""