diff options
Diffstat (limited to 'model')
112 files changed, 523 insertions, 148 deletions
diff --git a/model/access.go b/model/access.go index 520417f4e..9e16ed58b 100644 --- a/model/access.go +++ b/model/access.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model @@ -21,6 +21,7 @@ type AccessData struct { RefreshToken string `json:"refresh_token"` RedirectUri string `json:"redirect_uri"` ExpiresAt int64 `json:"expires_at"` + Scope string `json:"scope"` } type AccessResponse struct { diff --git a/model/access_test.go b/model/access_test.go index 77b4cf15b..f0ed2da77 100644 --- a/model/access_test.go +++ b/model/access_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/analytics_row.go b/model/analytics_row.go index ed1d69dd2..5493163dc 100644 --- a/model/analytics_row.go +++ b/model/analytics_row.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/analytics_row_test.go b/model/analytics_row_test.go index 1202d5b52..bd4e96c7d 100644 --- a/model/analytics_row_test.go +++ b/model/analytics_row_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/audit.go b/model/audit.go index 8fa1d5584..7699cf930 100644 --- a/model/audit.go +++ b/model/audit.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/audit_test.go b/model/audit_test.go index f4a2b6bcc..44e4cfb34 100644 --- a/model/audit_test.go +++ b/model/audit_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/audits.go b/model/audits.go index 36c80629f..e57e2a3ac 100644 --- a/model/audits.go +++ b/model/audits.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/audits_test.go b/model/audits_test.go index 6c7104475..3b22b2668 100644 --- a/model/audits_test.go +++ b/model/audits_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/authorization.go b/model/authorization.go index 384e4c865..458ed1bdb 100644 --- a/model/authorization.go +++ b/model/authorization.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/authorize.go b/model/authorize.go index 3f259718b..2f290fab2 100644 --- a/model/authorize.go +++ b/model/authorize.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/authorize_test.go b/model/authorize_test.go index 82a48332c..cbb57d54c 100644 --- a/model/authorize_test.go +++ b/model/authorize_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel.go b/model/channel.go index d80674444..50d487557 100644 --- a/model/channel.go +++ b/model/channel.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_count.go b/model/channel_count.go index 6cc1b2f2d..aecb0c712 100644 --- a/model/channel_count.go +++ b/model/channel_count.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_data.go b/model/channel_data.go index 731d50e70..41b7eaa65 100644 --- a/model/channel_data.go +++ b/model/channel_data.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_list.go b/model/channel_list.go index 7a46de45d..18c726908 100644 --- a/model/channel_list.go +++ b/model/channel_list.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_member.go b/model/channel_member.go index 32ffaf606..f6d58519a 100644 --- a/model/channel_member.go +++ b/model/channel_member.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_member_test.go b/model/channel_member_test.go index 6fb666300..26c9c3ddf 100644 --- a/model/channel_member_test.go +++ b/model/channel_member_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_search.go b/model/channel_search.go index 2c041503d..d915c164e 100644 --- a/model/channel_search.go +++ b/model/channel_search.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_search_test.go b/model/channel_search_test.go index f7f6d66f7..97c1b3ecd 100644 --- a/model/channel_search_test.go +++ b/model/channel_search_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_stats.go b/model/channel_stats.go index 079769eb0..758aa2b15 100644 --- a/model/channel_stats.go +++ b/model/channel_stats.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_test.go b/model/channel_test.go index 207ce4639..ee6a70b0d 100644 --- a/model/channel_test.go +++ b/model/channel_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/channel_view.go b/model/channel_view.go index 8be7af175..8a7ead76f 100644 --- a/model/channel_view.go +++ b/model/channel_view.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/client.go b/model/client.go index 74793c5eb..564aa2e48 100644 --- a/model/client.go +++ b/model/client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model @@ -1841,15 +1841,14 @@ func (c *Client) GetTeamStats(teamId string) (*Result, *AppError) { } } -// GetTeamStats will return a team stats object containing the number of users on the team -// based on the team id provided. Must be authenticated. +// GetTeamByName will return a team object based on the team name provided. Must be authenticated. func (c *Client) GetTeamByName(teamName string) (*Result, *AppError) { if r, err := c.DoApiGet(fmt.Sprintf("/teams/name/%v", teamName), "", ""); err != nil { return nil, err } else { defer closeBody(r) return &Result{r.Header.Get(HEADER_REQUEST_ID), - r.Header.Get(HEADER_ETAG_SERVER), TeamStatsFromJson(r.Body)}, nil + r.Header.Get(HEADER_ETAG_SERVER), TeamFromJson(r.Body)}, nil } } diff --git a/model/client4.go b/model/client4.go index cd9a6de75..ad3ff51a4 100644 --- a/model/client4.go +++ b/model/client4.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model @@ -226,6 +226,18 @@ func (c *Client4) GetCommandsRoute() string { return fmt.Sprintf("/commands") } +func (c *Client4) GetCommandRoute(commandId string) string { + return fmt.Sprintf(c.GetCommandsRoute()+"/%v", commandId) +} + +func (c *Client4) GetEmojisRoute() string { + return fmt.Sprintf("/emoji") +} + +func (c *Client4) GetEmojiRoute(emojiId string) string { + return fmt.Sprintf(c.GetEmojisRoute()+"/%v", emojiId) +} + func (c *Client4) DoApiGet(url string, etag string) (*http.Response, *AppError) { return c.DoApiRequest(http.MethodGet, url, "", etag) } @@ -285,6 +297,25 @@ func (c *Client4) DoUploadFile(url string, data []byte, contentType string) (*Fi } } +func (c *Client4) DoEmojiUploadFile(url string, data []byte, contentType string) (*Emoji, *Response) { + rq, _ := http.NewRequest("POST", c.ApiUrl+url, bytes.NewReader(data)) + rq.Header.Set("Content-Type", contentType) + rq.Close = true + + if len(c.AuthToken) > 0 { + rq.Header.Set(HEADER_AUTH, c.AuthType+" "+c.AuthToken) + } + + if rp, err := c.HttpClient.Do(rq); err != nil { + return nil, &Response{Error: NewAppError(url, "model.client.connecting.app_error", nil, err.Error(), 0)} + } else if rp.StatusCode >= 300 { + return nil, &Response{StatusCode: rp.StatusCode, Error: AppErrorFromJson(rp.Body)} + } else { + defer closeBody(rp) + return EmojiFromJson(rp.Body), BuildResponse(rp) + } +} + func (c *Client4) DoUploadImportTeam(url string, data []byte, contentType string) ([]byte, *Response) { rq, _ := http.NewRequest("POST", c.ApiUrl+url, bytes.NewReader(data)) rq.Header.Set("Content-Type", contentType) @@ -382,6 +413,16 @@ func (c *Client4) Logout() (bool, *Response) { } } +// SwitchAccountType changes a user's login type from one type to another. +func (c *Client4) SwitchAccountType(switchRequest *SwitchRequest) (string, *Response) { + if r, err := c.DoApiPost(c.GetUsersRoute()+"/login/switch", switchRequest.ToJson()); err != nil { + return "", &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return MapFromJson(r.Body)["follow_link"], BuildResponse(r) + } +} + // User Section // CreateUser creates a user in the system based on the provided user struct. @@ -652,6 +693,19 @@ func (c *Client4) UpdateUserRoles(userId, roles string) (bool, *Response) { } } +// UpdateUserActive updates status of a user whether active or not. +func (c *Client4) UpdateUserActive(userId string, active bool) (bool, *Response) { + requestBody := make(map[string]interface{}) + requestBody["active"] = active + + if r, err := c.DoApiPut(c.GetUserRoute(userId)+"/active", StringInterfaceToJson(requestBody)); err != nil { + return false, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return CheckStatusOK(r), BuildResponse(r) + } +} + // DeleteUser deactivates a user in the system based on the provided user id string. func (c *Client4) DeleteUser(userId string) (bool, *Response) { if r, err := c.DoApiDelete(c.GetUserRoute(userId)); err != nil { @@ -1415,6 +1469,47 @@ func (c *Client4) GetPostsForChannel(channelId string, page, perPage int, etag s } } +// GetFlaggedPostsForUser returns flagged posts of a user based on user id string. +func (c *Client4) GetFlaggedPostsForUser(userId string, page int, perPage int) (*PostList, *Response) { + query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) + if r, err := c.DoApiGet(c.GetUserRoute(userId)+"/posts/flagged"+query, ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return PostListFromJson(r.Body), BuildResponse(r) + } +} + +// GetFlaggedPostsForUserInTeam returns flagged posts in team of a user based on user id string. +func (c *Client4) GetFlaggedPostsForUserInTeam(userId string, teamId string, page int, perPage int) (*PostList, *Response) { + if len(teamId) == 0 || len(teamId) != 26 { + return nil, &Response{StatusCode: http.StatusBadRequest, Error: NewAppError("GetFlaggedPostsForUserInTeam", "model.client.get_flagged_posts_in_team.missing_parameter.app_error", nil, "", http.StatusBadRequest)} + } + + query := fmt.Sprintf("?in_team=%v&page=%v&per_page=%v", teamId, page, perPage) + if r, err := c.DoApiGet(c.GetUserRoute(userId)+"/posts/flagged"+query, ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return PostListFromJson(r.Body), BuildResponse(r) + } +} + +// GetFlaggedPostsForUserInChannel returns flagged posts in channel of a user based on user id string. +func (c *Client4) GetFlaggedPostsForUserInChannel(userId string, channelId string, page int, perPage int) (*PostList, *Response) { + if len(channelId) == 0 || len(channelId) != 26 { + return nil, &Response{StatusCode: http.StatusBadRequest, Error: NewAppError("GetFlaggedPostsForUserInChannel", "model.client.get_flagged_posts_in_channel.missing_parameter.app_error", nil, "", http.StatusBadRequest)} + } + + query := fmt.Sprintf("?in_channel=%v&page=%v&per_page=%v", channelId, page, perPage) + if r, err := c.DoApiGet(c.GetUserRoute(userId)+"/posts/flagged"+query, ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return PostListFromJson(r.Body), BuildResponse(r) + } +} + // GetPostsSince gets posts created after a specified time as Unix time in milliseconds. func (c *Client4) GetPostsSince(channelId string, time int64) (*PostList, *Response) { query := fmt.Sprintf("?since=%v", time) @@ -2124,6 +2219,26 @@ func (c *Client4) CreateCommand(cmd *Command) (*Command, *Response) { } } +// UpdateCommand updates a command based on the provided Command struct +func (c *Client4) UpdateCommand(cmd *Command) (*Command, *Response) { + if r, err := c.DoApiPut(c.GetCommandRoute(cmd.Id), cmd.ToJson()); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return CommandFromJson(r.Body), BuildResponse(r) + } +} + +// DeleteCommand deletes a command based on the provided command id string +func (c *Client4) DeleteCommand(commandId string) (bool, *Response) { + if r, err := c.DoApiDelete(c.GetCommandRoute(commandId)); err != nil { + return false, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return CheckStatusOK(r), BuildResponse(r) + } +} + // ListCommands will retrieve a list of commands available in the team. func (c *Client4) ListCommands(teamId string, customOnly bool) ([]*Command, *Response) { query := fmt.Sprintf("?team_id=%v&custom_only=%v", teamId, customOnly) @@ -2145,6 +2260,16 @@ func (c *Client4) ListAutocompleteCommands(teamId string) ([]*Command, *Response } } +// RegenCommandToken will create a new token if the user have the right permissions. +func (c *Client4) RegenCommandToken(commandId string) (string, *Response) { + if r, err := c.DoApiPut(c.GetCommandRoute(commandId)+"/regen_token", ""); err != nil { + return "", &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return MapFromJson(r.Body)["token"], BuildResponse(r) + } +} + // Status Section // GetUserStatus returns a user based on the provided user id string. @@ -2177,3 +2302,84 @@ func (c *Client4) UpdateUserStatus(userId string, userStatus *Status) (*Status, } } + +// Webrtc Section + +// GetWebrtcToken returns a valid token, stun server and turn server with credentials to +// use with the Mattermost WebRTC service. +func (c *Client4) GetWebrtcToken() (*WebrtcInfoResponse, *Response) { + if r, err := c.DoApiGet("/webrtc/token", ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return WebrtcInfoResponseFromJson(r.Body), BuildResponse(r) + } +} + +// Emoji Section + +// CreateEmoji will save an emoji to the server if the current user has permission +// to do so. If successful, the provided emoji will be returned with its Id field +// filled in. Otherwise, an error will be returned. +func (c *Client4) CreateEmoji(emoji *Emoji, image []byte, filename string) (*Emoji, *Response) { + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + + if part, err := writer.CreateFormFile("image", filename); err != nil { + return nil, &Response{StatusCode: http.StatusForbidden, Error: NewLocAppError("CreateEmoji", "model.client.create_emoji.image.app_error", nil, err.Error())} + } else if _, err = io.Copy(part, bytes.NewBuffer(image)); err != nil { + return nil, &Response{StatusCode: http.StatusForbidden, Error: NewLocAppError("CreateEmoji", "model.client.create_emoji.image.app_error", nil, err.Error())} + } + + if err := writer.WriteField("emoji", emoji.ToJson()); err != nil { + return nil, &Response{StatusCode: http.StatusForbidden, Error: NewLocAppError("CreateEmoji", "model.client.create_emoji.emoji.app_error", nil, err.Error())} + } + + if err := writer.Close(); err != nil { + return nil, &Response{StatusCode: http.StatusForbidden, Error: NewLocAppError("CreateEmoji", "model.client.create_emoji.writer.app_error", nil, err.Error())} + } + + return c.DoEmojiUploadFile(c.GetEmojisRoute(), body.Bytes(), writer.FormDataContentType()) +} + +// GetEmojiList returns a list of custom emoji in the system. +func (c *Client4) GetEmojiList() ([]*Emoji, *Response) { + if r, err := c.DoApiGet(c.GetEmojisRoute(), ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return EmojiListFromJson(r.Body), BuildResponse(r) + } +} + +// DeleteEmoji delete an custom emoji on the provided emoji id string. +func (c *Client4) DeleteEmoji(emojiId string) (bool, *Response) { + if r, err := c.DoApiDelete(c.GetEmojiRoute(emojiId)); err != nil { + return false, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return CheckStatusOK(r), BuildResponse(r) + } +} + +// GetEmoji returns a custom emoji in the system on the provided emoji id string. +func (c *Client4) GetEmoji(emojiId string) (*Emoji, *Response) { + if r, err := c.DoApiGet(c.GetEmojiRoute(emojiId), ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return EmojiFromJson(r.Body), BuildResponse(r) + } +} + +// Reaction Section + +// GetReactions returns a list of reactions to a post. +func (c *Client4) GetReactions(postId string) ([]*Reaction, *Response) { + if r, err := c.DoApiGet(c.GetPostRoute(postId)+"/reactions", ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return ReactionsFromJson(r.Body), BuildResponse(r) + } +} diff --git a/model/cluster_info.go b/model/cluster_info.go index 0e4b1e365..f76a03c0b 100644 --- a/model/cluster_info.go +++ b/model/cluster_info.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/cluster_info_test.go b/model/cluster_info_test.go index e7aa9cd16..038927120 100644 --- a/model/cluster_info_test.go +++ b/model/cluster_info_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/cluster_stats.go b/model/cluster_stats.go index f2efa323e..879487c6e 100644 --- a/model/cluster_stats.go +++ b/model/cluster_stats.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/cluster_stats_test.go b/model/cluster_stats_test.go index 13920b5d1..82bacf526 100644 --- a/model/cluster_stats_test.go +++ b/model/cluster_stats_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/command.go b/model/command.go index decb647b7..47378bbec 100644 --- a/model/command.go +++ b/model/command.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/command_args.go b/model/command_args.go index f512410a3..76b03a2fa 100644 --- a/model/command_args.go +++ b/model/command_args.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/command_response.go b/model/command_response.go index f69772353..1b2e06cdf 100644 --- a/model/command_response.go +++ b/model/command_response.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/command_response_test.go b/model/command_response_test.go index 131d87789..b57a77608 100644 --- a/model/command_response_test.go +++ b/model/command_response_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/command_test.go b/model/command_test.go index 2376e2ef7..53c15f74a 100644 --- a/model/command_test.go +++ b/model/command_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/compliance.go b/model/compliance.go index 4a96a597a..14f8f4a5e 100644 --- a/model/compliance.go +++ b/model/compliance.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/compliance_post.go b/model/compliance_post.go index 027e534b7..f39fea2f5 100644 --- a/model/compliance_post.go +++ b/model/compliance_post.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/compliance_post_test.go b/model/compliance_post_test.go index 49f41a121..4866b2494 100644 --- a/model/compliance_post_test.go +++ b/model/compliance_post_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/compliance_test.go b/model/compliance_test.go index 6acc5a882..32ce48db5 100644 --- a/model/compliance_test.go +++ b/model/compliance_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/config.go b/model/config.go index 10d44a0ca..303d7bb75 100644 --- a/model/config.go +++ b/model/config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model @@ -151,6 +151,7 @@ type ServiceSettings struct { AllowEditPost *string PostEditTimeLimit *int TimeBetweenUserTypingUpdatesMilliseconds *int64 + EnablePostSearch *bool EnableUserTypingMessages *bool ClusterLogTimeoutMilliseconds *int } @@ -1148,6 +1149,11 @@ func (o *Config) SetDefaults() { *o.ServiceSettings.TimeBetweenUserTypingUpdatesMilliseconds = 5000 } + if o.ServiceSettings.EnablePostSearch == nil { + o.ServiceSettings.EnablePostSearch = new(bool) + *o.ServiceSettings.EnablePostSearch = true + } + if o.ServiceSettings.EnableUserTypingMessages == nil { o.ServiceSettings.EnableUserTypingMessages = new(bool) *o.ServiceSettings.EnableUserTypingMessages = true diff --git a/model/emoji.go b/model/emoji.go index a66053aa0..7f2792777 100644 --- a/model/emoji.go +++ b/model/emoji.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/emoji_test.go b/model/emoji_test.go index cd6344ca5..81de50c6b 100644 --- a/model/emoji_test.go +++ b/model/emoji_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/file.go b/model/file.go index 20f6236de..f92581469 100644 --- a/model/file.go +++ b/model/file.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/file_info.go b/model/file_info.go index 687473d4f..8b5684127 100644 --- a/model/file_info.go +++ b/model/file_info.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/file_info_test.go b/model/file_info_test.go index d3671f252..f87dd4640 100644 --- a/model/file_info_test.go +++ b/model/file_info_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/gitlab.go b/model/gitlab.go index 3dfb1016a..8777614c1 100644 --- a/model/gitlab.go +++ b/model/gitlab.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/gitlab/gitlab.go b/model/gitlab/gitlab.go index 270d62d8b..7f1447edd 100644 --- a/model/gitlab/gitlab.go +++ b/model/gitlab/gitlab.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package oauthgitlab diff --git a/model/incoming_webhook.go b/model/incoming_webhook.go index 2cc26cbca..2235cb2c6 100644 --- a/model/incoming_webhook.go +++ b/model/incoming_webhook.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/incoming_webhook_test.go b/model/incoming_webhook_test.go index 46e5b6743..f6baca988 100644 --- a/model/incoming_webhook_test.go +++ b/model/incoming_webhook_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/initial_load.go b/model/initial_load.go index afb0a2762..71ba17696 100644 --- a/model/initial_load.go +++ b/model/initial_load.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/initial_load_test.go b/model/initial_load_test.go index 24a07e412..ecae7ac88 100644 --- a/model/initial_load_test.go +++ b/model/initial_load_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/job.go b/model/job.go index a139b154c..453828bd2 100644 --- a/model/job.go +++ b/model/job.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/job_test.go b/model/job_test.go index 8908fed58..6ba8edaf9 100644 --- a/model/job_test.go +++ b/model/job_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/ldap.go b/model/ldap.go index 71b1d8a6b..1453a4add 100644 --- a/model/ldap.go +++ b/model/ldap.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/license.go b/model/license.go index 09da61eb7..57c49d3d8 100644 --- a/model/license.go +++ b/model/license.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/license_test.go b/model/license_test.go index 25c74a2e3..94a6ad130 100644 --- a/model/license_test.go +++ b/model/license_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/mfa_secret.go b/model/mfa_secret.go index 717681b3d..99580f5f3 100644 --- a/model/mfa_secret.go +++ b/model/mfa_secret.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/mfa_secret_test.go b/model/mfa_secret_test.go index c062e7311..e61359310 100644 --- a/model/mfa_secret_test.go +++ b/model/mfa_secret_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/oauth.go b/model/oauth.go index cfe643c9a..a8aca0ca0 100644 --- a/model/oauth.go +++ b/model/oauth.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/oauth_test.go b/model/oauth_test.go index e1f88a993..5c0547717 100644 --- a/model/oauth_test.go +++ b/model/oauth_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/outgoing_webhook.go b/model/outgoing_webhook.go index ec2ed75c7..3cfed9e74 100644 --- a/model/outgoing_webhook.go +++ b/model/outgoing_webhook.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/outgoing_webhook_test.go b/model/outgoing_webhook_test.go index 2458c62e4..725423cdf 100644 --- a/model/outgoing_webhook_test.go +++ b/model/outgoing_webhook_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/password_recovery.go b/model/password_recovery.go index 303d4a12e..8af046642 100644 --- a/model/password_recovery.go +++ b/model/password_recovery.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/post.go b/model/post.go index 0d9651924..f5a398656 100644 --- a/model/post.go +++ b/model/post.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/post_list.go b/model/post_list.go index 9b56f0233..63f6d6825 100644 --- a/model/post_list.go +++ b/model/post_list.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/post_list_test.go b/model/post_list_test.go index 9ce6447e1..56886d4fd 100644 --- a/model/post_list_test.go +++ b/model/post_list_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/post_test.go b/model/post_test.go index cbd323fab..1096ccbd8 100644 --- a/model/post_test.go +++ b/model/post_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/preference.go b/model/preference.go index 94807d2c9..4d534b17b 100644 --- a/model/preference.go +++ b/model/preference.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/preference_test.go b/model/preference_test.go index df7fe612d..c56d46e2c 100644 --- a/model/preference_test.go +++ b/model/preference_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/preferences.go b/model/preferences.go index f11b5fd80..b982e309d 100644 --- a/model/preferences.go +++ b/model/preferences.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/push_notification.go b/model/push_notification.go index 753495b2f..49d4043eb 100644 --- a/model/push_notification.go +++ b/model/push_notification.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/push_notification_test.go b/model/push_notification_test.go index e8b2fa2d4..a6e158105 100644 --- a/model/push_notification_test.go +++ b/model/push_notification_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/push_response.go b/model/push_response.go index 0271bc94b..095986f3e 100644 --- a/model/push_response.go +++ b/model/push_response.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/reaction.go b/model/reaction.go index afbdd1e88..4a02df8cb 100644 --- a/model/reaction.go +++ b/model/reaction.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/reaction_test.go b/model/reaction_test.go index da73f477a..e980b106d 100644 --- a/model/reaction_test.go +++ b/model/reaction_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/saml.go b/model/saml.go index 1371c433f..f5826a95d 100644 --- a/model/saml.go +++ b/model/saml.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/saml_test.go b/model/saml_test.go index 578e78da5..d7745bd6b 100644 --- a/model/saml_test.go +++ b/model/saml_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/search_params.go b/model/search_params.go index bc604317e..070ac6d24 100644 --- a/model/search_params.go +++ b/model/search_params.go @@ -1,9 +1,10 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model import ( + "encoding/json" "regexp" "strings" ) @@ -19,6 +20,15 @@ type SearchParams struct { OrTerms bool } +func (o *SearchParams) ToJson() string { + b, err := json.Marshal(o) + if err != nil { + return "" + } else { + return string(b) + } +} + var searchFlags = [...]string{"from", "channel", "in"} func splitWordsNoQuotes(text string) []string { diff --git a/model/search_params_test.go b/model/search_params_test.go index 7138d82c4..0e55c7ead 100644 --- a/model/search_params_test.go +++ b/model/search_params_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/security_bulletin.go b/model/security_bulletin.go index 8d9be6d3b..b8c1dc48d 100644 --- a/model/security_bulletin.go +++ b/model/security_bulletin.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/session.go b/model/session.go index 277e910f6..90cebe59d 100644 --- a/model/session.go +++ b/model/session.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/session_test.go b/model/session_test.go index 4cffcb9c0..295f00076 100644 --- a/model/session_test.go +++ b/model/session_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/slack_attachment.go b/model/slack_attachment.go index e1639f2af..6fd0071b4 100644 --- a/model/slack_attachment.go +++ b/model/slack_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/status.go b/model/status.go index 59115b42d..d838eea01 100644 --- a/model/status.go +++ b/model/status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/status_test.go b/model/status_test.go index cb1720fd2..7730ff0ed 100644 --- a/model/status_test.go +++ b/model/status_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/suggest_command.go b/model/suggest_command.go index 7bc35369c..3d066499a 100644 --- a/model/suggest_command.go +++ b/model/suggest_command.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/suggest_command_test.go b/model/suggest_command_test.go index 6be700859..96f49e301 100644 --- a/model/suggest_command_test.go +++ b/model/suggest_command_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/switch_request.go b/model/switch_request.go new file mode 100644 index 000000000..964f47a90 --- /dev/null +++ b/model/switch_request.go @@ -0,0 +1,62 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package model + +import ( + "encoding/json" + "io" +) + +type SwitchRequest struct { + CurrentService string `json:"current_service"` + NewService string `json:"new_service"` + Email string `json:"email"` + Password string `json:"current_password"` + NewPassword string `json:"new_password"` + MfaCode string `json:"mfa_code"` + LdapId string `json:"ldap_id"` +} + +func (o *SwitchRequest) ToJson() string { + b, err := json.Marshal(o) + if err != nil { + return "" + } else { + return string(b) + } +} + +func SwitchRequestFromJson(data io.Reader) *SwitchRequest { + decoder := json.NewDecoder(data) + var o SwitchRequest + err := decoder.Decode(&o) + if err == nil { + return &o + } else { + return nil + } +} + +func (o *SwitchRequest) EmailToOAuth() bool { + return o.CurrentService == USER_AUTH_SERVICE_EMAIL && + (o.NewService == USER_AUTH_SERVICE_SAML || + o.NewService == USER_AUTH_SERVICE_GITLAB || + o.NewService == SERVICE_GOOGLE || + o.NewService == SERVICE_OFFICE365) +} + +func (o *SwitchRequest) OAuthToEmail() bool { + return (o.CurrentService == USER_AUTH_SERVICE_SAML || + o.CurrentService == USER_AUTH_SERVICE_GITLAB || + o.CurrentService == SERVICE_GOOGLE || + o.CurrentService == SERVICE_OFFICE365) && o.NewService == USER_AUTH_SERVICE_EMAIL +} + +func (o *SwitchRequest) EmailToLdap() bool { + return o.CurrentService == USER_AUTH_SERVICE_EMAIL && o.NewService == USER_AUTH_SERVICE_LDAP +} + +func (o *SwitchRequest) LdapToEmail() bool { + return o.CurrentService == USER_AUTH_SERVICE_LDAP && o.NewService == USER_AUTH_SERVICE_EMAIL +} diff --git a/model/switch_request_test.go b/model/switch_request_test.go new file mode 100644 index 000000000..49302fba6 --- /dev/null +++ b/model/switch_request_test.go @@ -0,0 +1,19 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package model + +import ( + "strings" + "testing" +) + +func TestSwitchRequestJson(t *testing.T) { + o := SwitchRequest{Email: NewId(), Password: NewId()} + json := o.ToJson() + ro := SwitchRequestFromJson(strings.NewReader(json)) + + if o.Email != ro.Email { + t.Fatal("Emails do not match") + } +} diff --git a/model/system.go b/model/system.go index 68d542c15..e2f4283a4 100644 --- a/model/system.go +++ b/model/system.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/system_test.go b/model/system_test.go index 3f60eb5f9..bf167a6cc 100644 --- a/model/system_test.go +++ b/model/system_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team.go b/model/team.go index 458f71e95..74d371ac2 100644 --- a/model/team.go +++ b/model/team.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team_member.go b/model/team_member.go index efd77e7ec..3a0befa31 100644 --- a/model/team_member.go +++ b/model/team_member.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team_member_test.go b/model/team_member_test.go index e957ffd4f..3661fff4b 100644 --- a/model/team_member_test.go +++ b/model/team_member_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team_search.go b/model/team_search.go index 4ab30f96b..e0676022d 100644 --- a/model/team_search.go +++ b/model/team_search.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team_search_test.go b/model/team_search_test.go index 996adad43..0f118c9ec 100644 --- a/model/team_search_test.go +++ b/model/team_search_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team_stats.go b/model/team_stats.go index 9042e76d6..e94ed37bc 100644 --- a/model/team_stats.go +++ b/model/team_stats.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/team_test.go b/model/team_test.go index d471bbf49..60ba92f99 100644 --- a/model/team_test.go +++ b/model/team_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/user.go b/model/user.go index 5cefdf1b1..2c2ba734b 100644 --- a/model/user.go +++ b/model/user.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model @@ -26,13 +26,12 @@ const ( PUSH_NOTIFY_PROP = "push" EMAIL_NOTIFY_PROP = "email" - DEFAULT_LOCALE = "en" - USER_AUTH_SERVICE_EMAIL = "email" - USER_AUTH_SERVICE_USERNAME = "username" + DEFAULT_LOCALE = "en" + USER_AUTH_SERVICE_EMAIL = "email" USER_EMAIL_MAX_LENGTH = 128 USER_NICKNAME_MAX_RUNES = 64 - USER_POSITION_MAX_RUNES = 35 + USER_POSITION_MAX_RUNES = 64 USER_FIRST_NAME_MAX_RUNES = 64 USER_LAST_NAME_MAX_RUNES = 64 USER_AUTH_DATA_MAX_LENGTH = 128 @@ -85,56 +84,65 @@ type UserPatch struct { func (u *User) IsValid() *AppError { if len(u.Id) != 26 { - return NewAppError("User.IsValid", "model.user.is_valid.id.app_error", nil, "", http.StatusBadRequest) + return InvalidUserError("id", "") } if u.CreateAt == 0 { - return NewAppError("User.IsValid", "model.user.is_valid.create_at.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("create_at", u.Id) } if u.UpdateAt == 0 { - return NewAppError("User.IsValid", "model.user.is_valid.update_at.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("update_at", u.Id) } if !IsValidUsername(u.Username) { - return NewAppError("User.IsValid", "model.user.is_valid.username.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("username", u.Id) } if len(u.Email) > USER_EMAIL_MAX_LENGTH || len(u.Email) == 0 { - return NewAppError("User.IsValid", "model.user.is_valid.email.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("email", u.Id) } if utf8.RuneCountInString(u.Nickname) > USER_NICKNAME_MAX_RUNES { - return NewAppError("User.IsValid", "model.user.is_valid.nickname.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("nickname", u.Id) } if utf8.RuneCountInString(u.Position) > USER_POSITION_MAX_RUNES { - return NewAppError("User.IsValid", "model.user.is_valid.position.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("position", u.Id) } if utf8.RuneCountInString(u.FirstName) > USER_FIRST_NAME_MAX_RUNES { - return NewAppError("User.IsValid", "model.user.is_valid.first_name.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("first_name", u.Id) } if utf8.RuneCountInString(u.LastName) > USER_LAST_NAME_MAX_RUNES { - return NewAppError("User.IsValid", "model.user.is_valid.last_name.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("last_name", u.Id) } if u.AuthData != nil && len(*u.AuthData) > USER_AUTH_DATA_MAX_LENGTH { - return NewAppError("User.IsValid", "model.user.is_valid.auth_data.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("auth_data", u.Id) } if u.AuthData != nil && len(*u.AuthData) > 0 && len(u.AuthService) == 0 { - return NewAppError("User.IsValid", "model.user.is_valid.auth_data_type.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("auth_data_type", u.Id) } if len(u.Password) > 0 && u.AuthData != nil && len(*u.AuthData) > 0 { - return NewAppError("User.IsValid", "model.user.is_valid.auth_data_pwd.app_error", nil, "user_id="+u.Id, http.StatusBadRequest) + return InvalidUserError("auth_data_pwd", u.Id) } return nil } +func InvalidUserError(fieldName string, userId string) *AppError { + id := fmt.Sprintf("model.user.is_valid.%s.app_error", fieldName) + details := "" + if userId != "" { + details = "user_id=" + userId + } + return NewAppError("User.IsValid", id, nil, details, http.StatusBadRequest) +} + // PreSave will set the Id and Username if missing. It will also fill // in the CreateAt, UpdateAt times. It will also hash the password. It should // be run before saving the user to the db. diff --git a/model/user_autocomplete.go b/model/user_autocomplete.go index b80c6f992..43c030b8e 100644 --- a/model/user_autocomplete.go +++ b/model/user_autocomplete.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/user_search.go b/model/user_search.go index 8d6a5c567..6213b16e4 100644 --- a/model/user_search.go +++ b/model/user_search.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/user_search_test.go b/model/user_search_test.go index b2543ffdb..0fada7781 100644 --- a/model/user_search_test.go +++ b/model/user_search_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/user_test.go b/model/user_test.go index 47ec38dbf..3eb931f5d 100644 --- a/model/user_test.go +++ b/model/user_test.go @@ -1,9 +1,11 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model import ( + "fmt" + "net/http" "strings" "testing" ) @@ -71,43 +73,43 @@ func TestUserUpdateMentionKeysFromUsername(t *testing.T) { func TestUserIsValid(t *testing.T) { user := User{} - if err := user.IsValid(); err == nil { - t.Fatal() + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "id", "") { + t.Fatal(err) } user.Id = NewId() - if err := user.IsValid(); err == nil { + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "create_at", user.Id) { t.Fatal() } user.CreateAt = GetMillis() - if err := user.IsValid(); err == nil { + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "update_at", user.Id) { t.Fatal() } user.UpdateAt = GetMillis() - if err := user.IsValid(); err == nil { + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "username", user.Id) { t.Fatal() } user.Username = NewId() + "^hello#" - if err := user.IsValid(); err == nil { + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "username", user.Id) { t.Fatal() } user.Username = "n" + NewId() - user.Email = strings.Repeat("01234567890", 20) - if err := user.IsValid(); err == nil { + user.Email = strings.Repeat("a", 129) + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "email", user.Id) { t.Fatal() } - user.Email = "test@nowhere.com" - user.Nickname = strings.Repeat("01234567890", 20) - if err := user.IsValid(); err == nil { + user.Email = strings.Repeat("a", 128) + user.Nickname = strings.Repeat("a", 65) + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "nickname", user.Id) { t.Fatal() } - user.Nickname = "" + user.Nickname = strings.Repeat("a", 64) if err := user.IsValid(); err != nil { t.Fatal(err) } @@ -118,29 +120,40 @@ func TestUserIsValid(t *testing.T) { t.Fatal(err) } - user.FirstName = strings.Repeat("01234567890", 20) - if err := user.IsValid(); err == nil { + user.FirstName = strings.Repeat("a", 65) + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "first_name", user.Id) { t.Fatal(err) } - user.FirstName = "" - user.LastName = strings.Repeat("01234567890", 20) - if err := user.IsValid(); err == nil { + user.FirstName = strings.Repeat("a", 64) + user.LastName = strings.Repeat("a", 65) + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "last_name", user.Id) { t.Fatal(err) } - user.LastName = "" - user.Position = "" + user.LastName = strings.Repeat("a", 64) + user.Position = strings.Repeat("a", 64) if err := user.IsValid(); err != nil { t.Fatal(err) } - user.Position = strings.Repeat("01234567890", 20) - if err := user.IsValid(); err == nil { + user.Position = strings.Repeat("a", 65) + if err := user.IsValid(); !HasExpectedUserIsValidError(err, "position", user.Id) { t.Fatal(err) } } +func HasExpectedUserIsValidError(err *AppError, fieldName string, userId string) bool { + if err == nil { + return false + } + + return err.Where == "User.IsValid" && + err.Id == fmt.Sprintf("model.user.is_valid.%s.app_error", fieldName) && + err.StatusCode == http.StatusBadRequest && + (userId == "" || err.DetailedError == "user_id="+userId) +} + func TestUserGetFullName(t *testing.T) { user := User{} diff --git a/model/utils.go b/model/utils.go index 8ae45b140..6d8fafeea 100644 --- a/model/utils.go +++ b/model/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/utils_test.go b/model/utils_test.go index 7c6100a04..e77ce80fb 100644 --- a/model/utils_test.go +++ b/model/utils_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/version.go b/model/version.go index 4eabf391f..01c243df7 100644 --- a/model/version.go +++ b/model/version.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/version_test.go b/model/version_test.go index e0346c43a..869ed8ad0 100644 --- a/model/version_test.go +++ b/model/version_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/webrtc.go b/model/webrtc.go index e746d62a8..fa15a4b71 100644 --- a/model/webrtc.go +++ b/model/webrtc.go @@ -1,3 +1,6 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + package model import ( @@ -5,6 +8,15 @@ import ( "io" ) +type WebrtcInfoResponse struct { + Token string `json:"token"` + GatewayUrl string `json:"gateway_url"` + StunUri string `json:"stun_uri,omitempty"` + TurnUri string `json:"turn_uri,omitempty"` + TurnPassword string `json:"turn_password,omitempty"` + TurnUsername string `json:"turn_username,omitempty"` +} + type GatewayResponse struct { Status string `json:"janus"` } @@ -19,3 +31,23 @@ func GatewayResponseFromJson(data io.Reader) *GatewayResponse { return nil } } + +func (o *WebrtcInfoResponse) ToJson() string { + b, err := json.Marshal(o) + if err != nil { + return "" + } else { + return string(b) + } +} + +func WebrtcInfoResponseFromJson(data io.Reader) *WebrtcInfoResponse { + decoder := json.NewDecoder(data) + var o WebrtcInfoResponse + err := decoder.Decode(&o) + if err == nil { + return &o + } else { + return nil + } +} diff --git a/model/webrtc_test.go b/model/webrtc_test.go new file mode 100644 index 000000000..2418bd53a --- /dev/null +++ b/model/webrtc_test.go @@ -0,0 +1,19 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package model + +import ( + "strings" + "testing" +) + +func TestWebrtcJson(t *testing.T) { + o := WebrtcInfoResponse{Token: NewId(), GatewayUrl: NewId()} + json := o.ToJson() + ro := WebrtcInfoResponseFromJson(strings.NewReader(json)) + + if o.Token != ro.Token { + t.Fatal("Tokens do not match") + } +} diff --git a/model/websocket_client.go b/model/websocket_client.go index 2da83be56..2fa405f31 100644 --- a/model/websocket_client.go +++ b/model/websocket_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/websocket_message.go b/model/websocket_message.go index c364f2613..0ed056cfe 100644 --- a/model/websocket_message.go +++ b/model/websocket_message.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/websocket_message_test.go b/model/websocket_message_test.go index dceb37eef..1b75d0f6e 100644 --- a/model/websocket_message_test.go +++ b/model/websocket_message_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/websocket_request.go b/model/websocket_request.go index d0f35f68b..7dc0b4335 100644 --- a/model/websocket_request.go +++ b/model/websocket_request.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model diff --git a/model/websocket_request_test.go b/model/websocket_request_test.go index 52de82069..0918fb714 100644 --- a/model/websocket_request_test.go +++ b/model/websocket_request_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package model |