MM-22051: Remove ToJson from model (part 1) (#18005)

https://mattermost.atlassian.net/browse/MM-22051

```release-note
Removed the following methods/functions:
(ad *AccessData) ToJson()
(ar *AccessResponse) ToJson()
(ar *AnalyticsRow) ToJson()
(ar AnalyticsRows) ToJson()
(o *Audit) ToJson()
(o Audits) ToJson()
(ad *AuthData) ToJson()
(ar *AuthorizeRequest) ToJson()
(o *ChannelPatch) ToJson()
(o *ChannelsWithCount) ToJson()
(o *ChannelCounts) ToJson()
(o *ChannelData) ToJson()
(o *ChannelMembers) ToJson()
(o *ChannelUnread) ToJson()
(o *ChannelUnreadAt) ToJson()
(o *ChannelStats) ToJson()
(o *ChannelView) ToJson()
(o *ChannelViewResponse) ToJson()
(o *ClusterDiscovery) ToJson()
(ci *ClusterInfo) ToJson()
(cs *ClusterStats) ToJson()
(o *Command) ToJson()
CommandListToJson(l []*Command) string
(o *CommandArgs) ToJson()
(cmr *CommandMoveRequest) ToJson()
(o *CommandResponse) ToJson()
(c *Compliance) ToJson()
(c Compliances) ToJson()
(o *Config) ToJson()
EmojiListToJson(emojiList []*Emoji)
```
Этот коммит содержится в:
Agniva De Sarker
2021-07-28 13:15:46 +05:30
коммит произвёл GitHub
родитель 1ae1c38c9f
Коммит 0d075c32db
35 изменённых файлов: 399 добавлений и 417 удалений

Просмотреть файл

@@ -261,7 +261,9 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
w.Write([]byte(model.CommandListToJson(commands)))
if err := json.NewEncoder(w).Encode(commands); err != nil {
mlog.Warn("Error writing response", mlog.Err(err))
}
}
func getCommand(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -374,7 +376,9 @@ func listAutocompleteCommands(c *Context, w http.ResponseWriter, r *http.Request
return
}
w.Write([]byte(model.CommandListToJson(commands)))
if err := json.NewEncoder(w).Encode(commands); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func listCommandAutocompleteSuggestions(c *Context, w http.ResponseWriter, r *http.Request) {

Просмотреть файл

@@ -121,7 +121,9 @@ func getEmojiList(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(model.EmojiListToJson(listEmoji)))
if err := json.NewEncoder(w).Encode(listEmoji); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -270,7 +272,9 @@ func searchEmojis(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(model.EmojiListToJson(emojis)))
if err := json.NewEncoder(w).Encode(emojis); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func autocompleteEmojis(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -287,5 +291,7 @@ func autocompleteEmojis(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(model.EmojiListToJson(emojis)))
if err := json.NewEncoder(w).Encode(emojis); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}

Просмотреть файл

@@ -42,34 +42,34 @@ func (cds *ClusterDiscoveryService) Start() {
exists, err := cds.srv.Store.ClusterDiscovery().Exists(&cds.ClusterDiscovery)
if err != nil {
mlog.Warn("ClusterDiscoveryService failed to check if row exists", mlog.String("ClusterDiscovery", cds.ClusterDiscovery.ToJson()), mlog.Err(err))
mlog.Warn("ClusterDiscoveryService failed to check if row exists", mlog.String("ClusterDiscoveryID", cds.ClusterDiscovery.Id), mlog.Err(err))
} else if exists {
if _, err := cds.srv.Store.ClusterDiscovery().Delete(&cds.ClusterDiscovery); err != nil {
mlog.Warn("ClusterDiscoveryService failed to start clean", mlog.String("ClusterDiscovery", cds.ClusterDiscovery.ToJson()), mlog.Err(err))
mlog.Warn("ClusterDiscoveryService failed to start clean", mlog.String("ClusterDiscoveryID", cds.ClusterDiscovery.Id), mlog.Err(err))
}
}
if err := cds.srv.Store.ClusterDiscovery().Save(&cds.ClusterDiscovery); err != nil {
mlog.Error("ClusterDiscoveryService failed to save", mlog.String("ClusterDiscovery", cds.ClusterDiscovery.ToJson()), mlog.Err(err))
mlog.Error("ClusterDiscoveryService failed to save", mlog.String("ClusterDiscoveryID", cds.ClusterDiscovery.Id), mlog.Err(err))
return
}
go func() {
mlog.Debug("ClusterDiscoveryService ping writer started", mlog.String("ClusterDiscovery", cds.ClusterDiscovery.ToJson()))
mlog.Debug("ClusterDiscoveryService ping writer started", mlog.String("ClusterDiscoveryID", cds.ClusterDiscovery.Id))
ticker := time.NewTicker(DiscoveryServiceWritePing)
defer func() {
ticker.Stop()
if _, err := cds.srv.Store.ClusterDiscovery().Delete(&cds.ClusterDiscovery); err != nil {
mlog.Warn("ClusterDiscoveryService failed to cleanup", mlog.String("ClusterDiscovery", cds.ClusterDiscovery.ToJson()), mlog.Err(err))
mlog.Warn("ClusterDiscoveryService failed to cleanup", mlog.String("ClusterDiscoveryID", cds.ClusterDiscovery.Id), mlog.Err(err))
}
mlog.Debug("ClusterDiscoveryService ping writer stopped", mlog.String("ClusterDiscovery", cds.ClusterDiscovery.ToJson()))
mlog.Debug("ClusterDiscoveryService ping writer stopped", mlog.String("ClusterDiscoveryID", cds.ClusterDiscovery.Id))
}()
for {
select {
case <-ticker.C:
if err := cds.srv.Store.ClusterDiscovery().SetLastPingAt(&cds.ClusterDiscovery); err != nil {
mlog.Error("ClusterDiscoveryService failed to write ping", mlog.String("ClusterDiscovery", cds.ClusterDiscovery.ToJson()), mlog.Err(err))
mlog.Error("ClusterDiscoveryService failed to write ping", mlog.String("ClusterDiscoveryID", cds.ClusterDiscovery.Id), mlog.Err(err))
}
case <-cds.stop:
return

Просмотреть файл

@@ -5,6 +5,7 @@ package commands
import (
"bytes"
"encoding/json"
"flag"
"fmt"
"io"
@@ -122,7 +123,11 @@ func (h *testHelper) SetConfig(config *model.Config) {
h.config = config
if err := ioutil.WriteFile(h.configFilePath, []byte(config.ToJson()), 0600); err != nil {
buf, err := json.Marshal(config)
if err != nil {
panic("failed to marshal config: " + err.Error())
}
if err := ioutil.WriteFile(h.configFilePath, buf, 0600); err != nil {
panic("failed to write file " + h.configFilePath + ": " + err.Error())
}
}

Просмотреть файл

@@ -4,7 +4,6 @@
package model
import (
"encoding/json"
"net/http"
)
@@ -72,13 +71,3 @@ func (ad *AccessData) IsExpired() bool {
return false
}
func (ad *AccessData) ToJson() string {
b, _ := json.Marshal(ad)
return string(b)
}
func (ar *AccessResponse) ToJson() string {
b, _ := json.Marshal(ar)
return string(b)
}

Просмотреть файл

@@ -3,26 +3,9 @@
package model
import (
"encoding/json"
)
type AnalyticsRow struct {
Name string `json:"name"`
Value float64 `json:"value"`
}
type AnalyticsRows []*AnalyticsRow
func (ar *AnalyticsRow) ToJson() string {
b, _ := json.Marshal(ar)
return string(b)
}
func (ar AnalyticsRows) ToJson() string {
b, err := json.Marshal(ar)
if err != nil {
return "[]"
}
return string(b)
}

Просмотреть файл

@@ -3,10 +3,6 @@
package model
import (
"encoding/json"
)
type Audit struct {
Id string `json:"id"`
CreateAt int64 `json:"create_at"`
@@ -16,8 +12,3 @@ type Audit struct {
IpAddress string `json:"ip_address"`
SessionId string `json:"session_id"`
}
func (o *Audit) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}

Просмотреть файл

@@ -3,10 +3,6 @@
package model
import (
"encoding/json"
)
type Audits []Audit
func (o Audits) Etag() string {
@@ -16,11 +12,3 @@ func (o Audits) Etag() string {
}
return ""
}
func (o Audits) ToJson() string {
b, err := json.Marshal(o)
if err != nil {
return "[]"
}
return string(b)
}

Просмотреть файл

@@ -4,7 +4,6 @@
package model
import (
"encoding/json"
"net/http"
)
@@ -114,16 +113,6 @@ func (ad *AuthData) PreSave() {
}
}
func (ad *AuthData) ToJson() string {
b, _ := json.Marshal(ad)
return string(b)
}
func (ar *AuthorizeRequest) ToJson() string {
b, _ := json.Marshal(ar)
return string(b)
}
func (ad *AuthData) IsExpired() bool {
return GetMillis() > ad.CreateAt+int64(ad.ExpiresIn*1000)
}

Просмотреть файл

@@ -170,16 +170,6 @@ func (o *Channel) ToJson() string {
return string(b)
}
func (o *ChannelPatch) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func (o *ChannelsWithCount) ToJson() []byte {
b, _ := json.Marshal(o)
return b
}
func (o *Channel) Etag() string {
return Etag(o.Id, o.UpdateAt)
}

Просмотреть файл

@@ -5,7 +5,6 @@ package model
import (
"crypto/md5"
"encoding/json"
"fmt"
"sort"
"strconv"
@@ -41,8 +40,3 @@ func (o *ChannelCounts) Etag() string {
return Etag(md5Counts, update)
}
func (o *ChannelCounts) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}

Просмотреть файл

@@ -3,10 +3,6 @@
package model
import (
"encoding/json"
)
type ChannelData struct {
Channel *Channel `json:"channel"`
Member *ChannelMember `json:"member"`
@@ -20,8 +16,3 @@ func (o *ChannelData) Etag() string {
return Etag(o.Channel.Id, o.Channel.UpdateAt, o.Channel.LastPostAt, mt)
}
func (o *ChannelData) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}

Просмотреть файл

@@ -69,24 +69,6 @@ type ChannelMemberForExport struct {
Username string
}
func (o *ChannelMembers) ToJson() string {
b, err := json.Marshal(o)
if err != nil {
return "[]"
}
return string(b)
}
func (o *ChannelUnread) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func (o *ChannelUnreadAt) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func (o *ChannelMember) ToJson() string {
b, _ := json.Marshal(o)
return string(b)

Просмотреть файл

@@ -15,11 +15,6 @@ type ChannelStats struct {
PinnedPostCount int64 `json:"pinnedpost_count"`
}
func (o *ChannelStats) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func ChannelStatsFromJson(data io.Reader) *ChannelStats {
var o *ChannelStats
json.NewDecoder(data).Decode(&o)

Просмотреть файл

@@ -14,11 +14,6 @@ type ChannelView struct {
CollapsedThreadsSupported bool `json:"collapsed_threads_supported"`
}
func (o *ChannelView) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func ChannelViewFromJson(data io.Reader) *ChannelView {
var o *ChannelView
json.NewDecoder(data).Decode(&o)
@@ -30,11 +25,6 @@ type ChannelViewResponse struct {
LastViewedAtTimes map[string]int64 `json:"last_viewed_at_times"`
}
func (o *ChannelViewResponse) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func ChannelViewResponseFromJson(data io.Reader) *ChannelViewResponse {
var o *ChannelViewResponse
json.NewDecoder(data).Decode(&o)

Просмотреть файл

@@ -1,30 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package model
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestChannelViewJson(t *testing.T) {
o := ChannelView{ChannelId: NewId(), PrevChannelId: NewId()}
json := o.ToJson()
ro := ChannelViewFromJson(strings.NewReader(json))
assert.Equal(t, o.ChannelId, ro.ChannelId, "ChannelIdIds do not match")
assert.Equal(t, o.PrevChannelId, ro.PrevChannelId, "PrevChannelIds do not match")
}
func TestChannelViewResponseJson(t *testing.T) {
id := NewId()
o := ChannelViewResponse{Status: "OK", LastViewedAtTimes: map[string]int64{id: 12345}}
json := o.ToJson()
ro := ChannelViewResponseFromJson(strings.NewReader(json))
assert.Equal(t, o.Status, ro.Status, "ChannelIdIds do not match")
assert.Equal(t, o.LastViewedAtTimes[id], ro.LastViewedAtTimes[id], "LastViewedAtTimes do not match")
}

Просмотреть файл

@@ -823,9 +823,13 @@ 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) {
r, err := c.DoApiPost(c.GetUsersRoute()+"/login/switch", switchRequest.ToJson())
buf, err := json.Marshal(switchRequest)
if err != nil {
return "", BuildErrorResponse(r, err)
return "", BuildErrorResponse(nil, NewAppError("SwitchAccountType", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetUsersRoute()+"/login/switch", buf)
if appErr != nil {
return "", BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return MapFromJson(r.Body)["follow_link"], BuildResponse(r)
@@ -835,9 +839,9 @@ func (c *Client4) SwitchAccountType(switchRequest *SwitchRequest) (string, *Resp
// CreateUser creates a user in the system based on the provided user struct.
func (c *Client4) CreateUser(user *User) (*User, *Response) {
r, err := c.DoApiPost(c.GetUsersRoute(), user.ToJson())
if err != nil {
return nil, BuildErrorResponse(r, err)
r, appErr := c.DoApiPost(c.GetUsersRoute(), user.ToJson())
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UserFromJson(r.Body), BuildResponse(r)
@@ -851,9 +855,13 @@ func (c *Client4) CreateUserWithToken(user *User, tokenId string) (*User, *Respo
}
query := fmt.Sprintf("?t=%v", tokenId)
r, err := c.DoApiPost(c.GetUsersRoute()+query, user.ToJson())
buf, err := json.Marshal(user)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateUserWithToken", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetUsersRoute()+query, buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
@@ -868,9 +876,13 @@ func (c *Client4) CreateUserWithInviteId(user *User, inviteId string) (*User, *R
}
query := fmt.Sprintf("?iid=%v", url.QueryEscape(inviteId))
r, err := c.DoApiPost(c.GetUsersRoute()+query, user.ToJson())
buf, err := json.Marshal(user)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateUserWithInviteId", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetUsersRoute()+query, buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
@@ -1158,9 +1170,13 @@ func (c *Client4) GetUsersByGroupChannelIds(groupChannelIds []string) (map[strin
// SearchUsers returns a list of users based on some search criteria.
func (c *Client4) SearchUsers(search *UserSearch) ([]*User, *Response) {
r, err := c.doApiPostBytes(c.GetUsersRoute()+"/search", search.ToJson())
buf, err := json.Marshal(search)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("SearchUsers", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetUsersRoute()+"/search", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UserListFromJson(r.Body), BuildResponse(r)
@@ -1168,9 +1184,13 @@ func (c *Client4) SearchUsers(search *UserSearch) ([]*User, *Response) {
// UpdateUser updates a user in the system based on the provided user struct.
func (c *Client4) UpdateUser(user *User) (*User, *Response) {
r, err := c.DoApiPut(c.GetUserRoute(user.Id), user.ToJson())
buf, err := json.Marshal(user)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateUser", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetUserRoute(user.Id), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UserFromJson(r.Body), BuildResponse(r)
@@ -1178,9 +1198,13 @@ func (c *Client4) UpdateUser(user *User) (*User, *Response) {
// PatchUser partially updates a user in the system. Any missing fields are not updated.
func (c *Client4) PatchUser(userId string, patch *UserPatch) (*User, *Response) {
r, err := c.DoApiPut(c.GetUserRoute(userId)+"/patch", patch.ToJson())
buf, err := json.Marshal(patch)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("PatchUser", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetUserRoute(userId)+"/patch", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UserFromJson(r.Body), BuildResponse(r)
@@ -1188,9 +1212,13 @@ func (c *Client4) PatchUser(userId string, patch *UserPatch) (*User, *Response)
// UpdateUserAuth updates a user AuthData (uthData, authService and password) in the system.
func (c *Client4) UpdateUserAuth(userId string, userAuth *UserAuth) (*UserAuth, *Response) {
r, err := c.DoApiPut(c.GetUserRoute(userId)+"/auth", userAuth.ToJson())
buf, err := json.Marshal(userAuth)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateUserAuth", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetUserRoute(userId)+"/auth", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UserAuthFromJson(r.Body), BuildResponse(r)
@@ -1350,9 +1378,13 @@ func (c *Client4) ConvertBotToUser(userId string, userPatch *UserPatch, setSyste
if setSystemAdmin {
query = "?set_system_admin=true"
}
r, err := c.DoApiPost(c.GetBotRoute(userId)+"/convert_to_user"+query, userPatch.ToJson())
buf, err := json.Marshal(userPatch)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("ConvertBotToUser", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetBotRoute(userId)+"/convert_to_user"+query, buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UserFromJson(r.Body), BuildResponse(r)
@@ -1636,9 +1668,13 @@ func (c *Client4) RevokeUserAccessToken(tokenId string) (bool, *Response) {
// SearchUserAccessTokens returns user access tokens matching the provided search term.
func (c *Client4) SearchUserAccessTokens(search *UserAccessTokenSearch) ([]*UserAccessToken, *Response) {
r, err := c.DoApiPost(c.GetUsersRoute()+"/tokens/search", search.ToJson())
buf, err := json.Marshal(search)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("SearchUserAccessTokens", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetUsersRoute()+"/tokens/search", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UserAccessTokenListFromJson(r.Body), BuildResponse(r)
@@ -1912,9 +1948,13 @@ func (c *Client4) DeleteBotIconImage(botUserId string) (bool, *Response) {
// CreateTeam creates a team in the system based on the provided team struct.
func (c *Client4) CreateTeam(team *Team) (*Team, *Response) {
r, err := c.DoApiPost(c.GetTeamsRoute(), team.ToJson())
buf, err := json.Marshal(team)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateTeam", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTeamsRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return TeamFromJson(r.Body), BuildResponse(r)
@@ -1977,9 +2017,13 @@ func (c *Client4) GetTeamByName(name, etag string) (*Team, *Response) {
// SearchTeams returns teams matching the provided search term.
func (c *Client4) SearchTeams(search *TeamSearch) ([]*Team, *Response) {
r, err := c.DoApiPost(c.GetTeamsRoute()+"/search", search.ToJson())
buf, err := json.Marshal(search)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("SearchTeams", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTeamsRoute()+"/search", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return TeamListFromJson(r.Body), BuildResponse(r)
@@ -1993,9 +2037,13 @@ func (c *Client4) SearchTeamsPaged(search *TeamSearch) ([]*Team, int64, *Respons
if search.PerPage == nil {
search.PerPage = NewInt(100)
}
r, err := c.DoApiPost(c.GetTeamsRoute()+"/search", search.ToJson())
buf, err := json.Marshal(search)
if err != nil {
return nil, 0, BuildErrorResponse(r, err)
return nil, 0, BuildErrorResponse(nil, NewAppError("SearchTeamsPaged", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTeamsRoute()+"/search", buf)
if appErr != nil {
return nil, 0, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
twc := TeamsWithCountFromJson(r.Body)
@@ -2046,9 +2094,13 @@ func (c *Client4) UpdateTeamMemberRoles(teamId, userId, newRoles string) (bool,
// UpdateTeamMemberSchemeRoles will update the scheme-derived roles on a team for a user.
func (c *Client4) UpdateTeamMemberSchemeRoles(teamId string, userId string, schemeRoles *SchemeRoles) (bool, *Response) {
r, err := c.DoApiPut(c.GetTeamMemberRoute(teamId, userId)+"/schemeRoles", schemeRoles.ToJson())
buf, err := json.Marshal(schemeRoles)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("UpdateTeamMemberSchemeRoles", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetTeamMemberRoute(teamId, userId)+"/schemeRoles", buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -2056,9 +2108,13 @@ func (c *Client4) UpdateTeamMemberSchemeRoles(teamId string, userId string, sche
// UpdateTeam will update a team.
func (c *Client4) UpdateTeam(team *Team) (*Team, *Response) {
r, err := c.DoApiPut(c.GetTeamRoute(team.Id), team.ToJson())
buf, err := json.Marshal(team)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateTeam", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetTeamRoute(team.Id), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return TeamFromJson(r.Body), BuildResponse(r)
@@ -2066,9 +2122,13 @@ func (c *Client4) UpdateTeam(team *Team) (*Team, *Response) {
// PatchTeam partially updates a team. Any missing fields are not updated.
func (c *Client4) PatchTeam(teamId string, patch *TeamPatch) (*Team, *Response) {
r, err := c.DoApiPut(c.GetTeamRoute(teamId)+"/patch", patch.ToJson())
buf, err := json.Marshal(patch)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("PatchTeam", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetTeamRoute(teamId)+"/patch", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return TeamFromJson(r.Body), BuildResponse(r)
@@ -2174,9 +2234,13 @@ func (c *Client4) GetTeamMembersByIds(teamId string, userIds []string) ([]*TeamM
// AddTeamMember adds user to a team and return a team member.
func (c *Client4) AddTeamMember(teamId, userId string) (*TeamMember, *Response) {
member := &TeamMember{TeamId: teamId, UserId: userId}
r, err := c.DoApiPost(c.GetTeamMembersRoute(teamId), member.ToJson())
buf, err := json.Marshal(member)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("AddTeamMember", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTeamMembersRoute(teamId), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return TeamMemberFromJson(r.Body), BuildResponse(r)
@@ -2335,9 +2399,13 @@ func (c *Client4) InviteGuestsToTeam(teamId string, userEmails []string, channel
Channels: channels,
Message: message,
}
r, err := c.DoApiPost(c.GetTeamRoute(teamId)+"/invite-guests/email", guestsInvite.ToJson())
buf, err := json.Marshal(guestsInvite)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("InviteGuestsToTeam", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTeamRoute(teamId)+"/invite-guests/email", buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -2360,9 +2428,13 @@ func (c *Client4) InviteGuestsToTeamGracefully(teamId string, userEmails []strin
Channels: channels,
Message: message,
}
r, err := c.DoApiPost(c.GetTeamRoute(teamId)+"/invite-guests/email?graceful="+c.boolString(true), guestsInvite.ToJson())
buf, err := json.Marshal(guestsInvite)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("InviteGuestsToTeamGracefully", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTeamRoute(teamId)+"/invite-guests/email?graceful="+c.boolString(true), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return EmailInviteWithErrorFromJson(r.Body), BuildResponse(r)
@@ -2541,14 +2613,18 @@ func (c *Client4) UpdateChannel(channel *Channel) (*Channel, *Response) {
// PatchChannel partially updates a channel. Any missing fields are not updated.
func (c *Client4) PatchChannel(channelId string, patch *ChannelPatch) (*Channel, *Response) {
r, appErr := c.DoApiPut(c.GetChannelRoute(channelId)+"/patch", patch.ToJson())
buf, err := json.Marshal(patch)
if err != nil {
return nil, BuildErrorResponse(nil, NewAppError("PatchChannel", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetChannelRoute(channelId)+"/patch", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
var ch *Channel
err := json.NewDecoder(r.Body).Decode(&ch)
err = json.NewDecoder(r.Body).Decode(&ch)
if err != nil {
return nil, BuildErrorResponse(r, NewAppError("PatchChannel", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
@@ -3037,14 +3113,18 @@ func (c *Client4) GetChannelMembersForUser(userId, teamId, etag string) (*Channe
// ViewChannel performs a view action for a user. Synonymous with switching channels or marking channels as read by a user.
func (c *Client4) ViewChannel(userId string, view *ChannelView) (*ChannelViewResponse, *Response) {
url := fmt.Sprintf(c.GetChannelsRoute()+"/members/%v/view", userId)
r, appErr := c.DoApiPost(url, view.ToJson())
buf, err := json.Marshal(view)
if err != nil {
return nil, BuildErrorResponse(nil, NewAppError("ViewChannel", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(url, buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
var ch *ChannelViewResponse
err := json.NewDecoder(r.Body).Decode(&ch)
err = json.NewDecoder(r.Body).Decode(&ch)
if err != nil {
return nil, BuildErrorResponse(r, NewAppError("ViewChannel", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
@@ -3081,9 +3161,13 @@ func (c *Client4) UpdateChannelRoles(channelId, userId, roles string) (bool, *Re
// UpdateChannelMemberSchemeRoles will update the scheme-derived roles on a channel for a user.
func (c *Client4) UpdateChannelMemberSchemeRoles(channelId string, userId string, schemeRoles *SchemeRoles) (bool, *Response) {
r, err := c.DoApiPut(c.GetChannelMemberRoute(channelId, userId)+"/schemeRoles", schemeRoles.ToJson())
buf, err := json.Marshal(schemeRoles)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("UpdateChannelMemberSchemeRoles", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetChannelMemberRoute(channelId, userId)+"/schemeRoles", buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -3211,9 +3295,13 @@ func (c *Client4) UpdatePost(postId string, post *Post) (*Post, *Response) {
// PatchPost partially updates a post. Any missing fields are not updated.
func (c *Client4) PatchPost(postId string, patch *PostPatch) (*Post, *Response) {
r, err := c.DoApiPut(c.GetPostRoute(postId)+"/patch", patch.ToJson())
buf, err := json.Marshal(patch)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("PatchPost", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetPostRoute(postId)+"/patch", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return PostFromJson(r.Body), BuildResponse(r)
@@ -3221,10 +3309,13 @@ func (c *Client4) PatchPost(postId string, patch *PostPatch) (*Post, *Response)
// SetPostUnread marks channel where post belongs as unread on the time of the provided post.
func (c *Client4) SetPostUnread(userId string, postId string, collapsedThreadsSupported bool) *Response {
b, _ := json.Marshal(map[string]bool{"collapsed_threads_supported": collapsedThreadsSupported})
r, err := c.DoApiPost(c.GetUserRoute(userId)+c.GetPostRoute(postId)+"/set_unread", string(b))
b, err := json.Marshal(map[string]bool{"collapsed_threads_supported": collapsedThreadsSupported})
if err != nil {
return BuildErrorResponse(r, err)
return BuildErrorResponse(nil, NewAppError("SetPostUnread", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetUserRoute(userId)+c.GetPostRoute(postId)+"/set_unread", b)
if appErr != nil {
return BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return BuildResponse(r)
@@ -3722,9 +3813,13 @@ func (c *Client4) GetPingWithFullServerStatus() (map[string]string, *Response) {
// TestEmail will attempt to connect to the configured SMTP server.
func (c *Client4) TestEmail(config *Config) (bool, *Response) {
r, err := c.DoApiPost(c.GetTestEmailRoute(), config.ToJson())
buf, err := json.Marshal(config)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("TestEmail", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTestEmailRoute(), buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -3744,9 +3839,13 @@ func (c *Client4) TestSiteURL(siteURL string) (bool, *Response) {
// TestS3Connection will attempt to connect to the AWS S3.
func (c *Client4) TestS3Connection(config *Config) (bool, *Response) {
r, err := c.DoApiPost(c.GetTestS3Route(), config.ToJson())
buf, err := json.Marshal(config)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("TestS3Connection", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetTestS3Route(), buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -3828,9 +3927,13 @@ func (c *Client4) InvalidateCaches() (bool, *Response) {
// UpdateConfig will update the server configuration.
func (c *Client4) UpdateConfig(config *Config) (*Config, *Response) {
r, err := c.DoApiPut(c.GetConfigRoute(), config.ToJson())
buf, err := json.Marshal(config)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateConfig", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetConfigRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return ConfigFromJson(r.Body), BuildResponse(r)
@@ -3925,9 +4028,13 @@ func (c *Client4) GetAnalyticsOld(name, teamId string) (AnalyticsRows, *Response
// CreateIncomingWebhook creates an incoming webhook for a channel.
func (c *Client4) CreateIncomingWebhook(hook *IncomingWebhook) (*IncomingWebhook, *Response) {
r, err := c.DoApiPost(c.GetIncomingWebhooksRoute(), hook.ToJson())
buf, err := json.Marshal(hook)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateIncomingWebhook", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetIncomingWebhooksRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return IncomingWebhookFromJson(r.Body), BuildResponse(r)
@@ -3935,9 +4042,13 @@ func (c *Client4) CreateIncomingWebhook(hook *IncomingWebhook) (*IncomingWebhook
// UpdateIncomingWebhook updates an incoming webhook for a channel.
func (c *Client4) UpdateIncomingWebhook(hook *IncomingWebhook) (*IncomingWebhook, *Response) {
r, err := c.DoApiPut(c.GetIncomingWebhookRoute(hook.Id), hook.ToJson())
buf, err := json.Marshal(hook)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateIncomingWebhook", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetIncomingWebhookRoute(hook.Id), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return IncomingWebhookFromJson(r.Body), BuildResponse(r)
@@ -3987,9 +4098,13 @@ func (c *Client4) DeleteIncomingWebhook(hookID string) (bool, *Response) {
// CreateOutgoingWebhook creates an outgoing webhook for a team or channel.
func (c *Client4) CreateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook, *Response) {
r, err := c.DoApiPost(c.GetOutgoingWebhooksRoute(), hook.ToJson())
buf, err := json.Marshal(hook)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateOutgoingWebhook", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetOutgoingWebhooksRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return OutgoingWebhookFromJson(r.Body), BuildResponse(r)
@@ -3997,9 +4112,13 @@ func (c *Client4) CreateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook
// UpdateOutgoingWebhook creates an outgoing webhook for a team or channel.
func (c *Client4) UpdateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook, *Response) {
r, err := c.DoApiPut(c.GetOutgoingWebhookRoute(hook.Id), hook.ToJson())
buf, err := json.Marshal(hook)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateOutgoingWebhook", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetOutgoingWebhookRoute(hook.Id), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return OutgoingWebhookFromJson(r.Body), BuildResponse(r)
@@ -4083,9 +4202,13 @@ func (c *Client4) GetPreferences(userId string) (Preferences, *Response) {
// UpdatePreferences saves the user's preferences.
func (c *Client4) UpdatePreferences(userId string, preferences *Preferences) (bool, *Response) {
r, err := c.DoApiPut(c.GetPreferencesRoute(userId), preferences.ToJson())
buf, err := json.Marshal(preferences)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("UpdatePreferences", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetPreferencesRoute(userId), buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return true, BuildResponse(r)
@@ -4093,9 +4216,13 @@ func (c *Client4) UpdatePreferences(userId string, preferences *Preferences) (bo
// DeletePreferences deletes the user's preferences.
func (c *Client4) DeletePreferences(userId string, preferences *Preferences) (bool, *Response) {
r, err := c.DoApiPost(c.GetPreferencesRoute(userId)+"/delete", preferences.ToJson())
buf, err := json.Marshal(preferences)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("DeletePreferences", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetPreferencesRoute(userId)+"/delete", buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return true, BuildResponse(r)
@@ -4272,9 +4399,13 @@ func (c *Client4) ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, use
// CreateComplianceReport creates an incoming webhook for a channel.
func (c *Client4) CreateComplianceReport(report *Compliance) (*Compliance, *Response) {
r, err := c.DoApiPost(c.GetComplianceReportsRoute(), report.ToJson())
buf, err := json.Marshal(report)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateComplianceReport", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetComplianceReportsRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return ComplianceFromJson(r.Body), BuildResponse(r)
@@ -4735,9 +4866,13 @@ func (c *Client4) PostLog(message map[string]string) (map[string]string, *Respon
// CreateOAuthApp will register a new OAuth 2.0 client application with Mattermost acting as an OAuth 2.0 service provider.
func (c *Client4) CreateOAuthApp(app *OAuthApp) (*OAuthApp, *Response) {
r, err := c.DoApiPost(c.GetOAuthAppsRoute(), app.ToJson())
buf, err := json.Marshal(app)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateOAuthApp", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetOAuthAppsRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return OAuthAppFromJson(r.Body), BuildResponse(r)
@@ -4745,9 +4880,13 @@ func (c *Client4) CreateOAuthApp(app *OAuthApp) (*OAuthApp, *Response) {
// UpdateOAuthApp updates a page of registered OAuth 2.0 client applications with Mattermost acting as an OAuth 2.0 service provider.
func (c *Client4) UpdateOAuthApp(app *OAuthApp) (*OAuthApp, *Response) {
r, err := c.DoApiPut(c.GetOAuthAppRoute(app.Id), app.ToJson())
buf, err := json.Marshal(app)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateOAuthApp", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetOAuthAppRoute(app.Id), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return OAuthAppFromJson(r.Body), BuildResponse(r)
@@ -4817,9 +4956,13 @@ func (c *Client4) GetAuthorizedOAuthAppsForUser(userId string, page, perPage int
// AuthorizeOAuthApp will authorize an OAuth 2.0 client application to access a user's account and provide a redirect link to follow.
func (c *Client4) AuthorizeOAuthApp(authRequest *AuthorizeRequest) (string, *Response) {
r, err := c.DoApiRequest(http.MethodPost, c.Url+"/oauth/authorize", authRequest.ToJson(), "")
buf, err := json.Marshal(authRequest)
if err != nil {
return "", BuildErrorResponse(r, err)
return "", BuildErrorResponse(nil, NewAppError("AuthorizeOAuthApp", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiRequestBytes(http.MethodPost, c.Url+"/oauth/authorize", buf, "")
if appErr != nil {
return "", BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return MapFromJson(r.Body)["redirect"], BuildResponse(r)
@@ -5141,9 +5284,13 @@ func (c *Client4) GetChannelPoliciesForUser(userID string, offset, limit int) (*
// CreateCommand will create a new command if the user have the right permissions.
func (c *Client4) CreateCommand(cmd *Command) (*Command, *Response) {
r, err := c.DoApiPost(c.GetCommandsRoute(), cmd.ToJson())
buf, err := json.Marshal(cmd)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateCommand", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetCommandsRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CommandFromJson(r.Body), BuildResponse(r)
@@ -5151,9 +5298,13 @@ 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) {
r, err := c.DoApiPut(c.GetCommandRoute(cmd.Id), cmd.ToJson())
buf, err := json.Marshal(cmd)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateCommand", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetCommandRoute(cmd.Id), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CommandFromJson(r.Body), BuildResponse(r)
@@ -5162,9 +5313,13 @@ func (c *Client4) UpdateCommand(cmd *Command) (*Command, *Response) {
// MoveCommand moves a command to a different team.
func (c *Client4) MoveCommand(teamId string, commandId string) (bool, *Response) {
cmr := CommandMoveRequest{TeamId: teamId}
r, err := c.DoApiPut(c.GetCommandMoveRoute(commandId), cmr.ToJson())
buf, err := json.Marshal(cmr)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("MoveCommand", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetCommandMoveRoute(commandId), buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -5219,13 +5374,20 @@ func (c *Client4) ExecuteCommand(channelId, command string) (*CommandResponse, *
ChannelId: channelId,
Command: command,
}
r, err := c.DoApiPost(c.GetCommandsRoute()+"/execute", commandArgs.ToJson())
buf, err := json.Marshal(commandArgs)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("ExecuteCommand", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetCommandsRoute()+"/execute", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
response, _ := CommandResponseFromJson(r.Body)
response, err := CommandResponseFromJson(r.Body)
if err != nil {
return nil, BuildErrorResponse(r, NewAppError("ExecuteCommand", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
return response, BuildResponse(r)
}
@@ -5237,13 +5399,20 @@ func (c *Client4) ExecuteCommandWithTeam(channelId, teamId, command string) (*Co
TeamId: teamId,
Command: command,
}
r, err := c.DoApiPost(c.GetCommandsRoute()+"/execute", commandArgs.ToJson())
buf, err := json.Marshal(commandArgs)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("ExecuteCommandWithTeam", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetCommandsRoute()+"/execute", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
response, _ := CommandResponseFromJson(r.Body)
response, err := CommandResponseFromJson(r.Body)
if err != nil {
return nil, BuildErrorResponse(r, NewAppError("ExecuteCommandWithTeam", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
return response, BuildResponse(r)
}
@@ -5291,9 +5460,13 @@ func (c *Client4) GetUsersStatusesByIds(userIds []string) ([]*Status, *Response)
// UpdateUserStatus sets a user's status based on the provided user id string.
func (c *Client4) UpdateUserStatus(userId string, userStatus *Status) (*Status, *Response) {
r, err := c.DoApiPut(c.GetUserStatusRoute(userId), userStatus.ToJson())
buf, err := json.Marshal(userStatus)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("UpdateUserStatus", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetUserStatusRoute(userId), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return StatusFromJson(r.Body), BuildResponse(r)
@@ -5383,9 +5556,9 @@ func (c *Client4) GetEmojiByName(name string) (*Emoji, *Response) {
// GetEmojiImage returns the emoji image.
func (c *Client4) GetEmojiImage(emojiId string) ([]byte, *Response) {
r, apErr := c.DoApiGet(c.GetEmojiRoute(emojiId)+"/image", "")
if apErr != nil {
return nil, BuildErrorResponse(r, apErr)
r, appErr := c.DoApiGet(c.GetEmojiRoute(emojiId)+"/image", "")
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
@@ -5399,9 +5572,13 @@ func (c *Client4) GetEmojiImage(emojiId string) ([]byte, *Response) {
// SearchEmoji returns a list of emoji matching some search criteria.
func (c *Client4) SearchEmoji(search *EmojiSearch) ([]*Emoji, *Response) {
r, err := c.DoApiPost(c.GetEmojisRoute()+"/search", search.ToJson())
buf, err := json.Marshal(search)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("SearchEmoji", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetEmojisRoute()+"/search", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return EmojiListFromJson(r.Body), BuildResponse(r)
@@ -5410,9 +5587,9 @@ func (c *Client4) SearchEmoji(search *EmojiSearch) ([]*Emoji, *Response) {
// AutocompleteEmoji returns a list of emoji starting with or matching name.
func (c *Client4) AutocompleteEmoji(name string, etag string) ([]*Emoji, *Response) {
query := fmt.Sprintf("?name=%v", name)
r, err := c.DoApiGet(c.GetEmojisRoute()+"/autocomplete"+query, "")
if err != nil {
return nil, BuildErrorResponse(r, err)
r, appErr := c.DoApiGet(c.GetEmojisRoute()+"/autocomplete"+query, "")
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return EmojiListFromJson(r.Body), BuildResponse(r)
@@ -5422,9 +5599,13 @@ func (c *Client4) AutocompleteEmoji(name string, etag string) ([]*Emoji, *Respon
// SaveReaction saves an emoji reaction for a post. Returns the saved reaction if successful, otherwise an error will be returned.
func (c *Client4) SaveReaction(reaction *Reaction) (*Reaction, *Response) {
r, err := c.DoApiPost(c.GetReactionsRoute(), reaction.ToJson())
buf, err := json.Marshal(reaction)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("SaveReaction", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetReactionsRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return ReactionFromJson(r.Body), BuildResponse(r)
@@ -5523,9 +5704,13 @@ func (c *Client4) GetJobsByType(jobType string, page int, perPage int) ([]*Job,
// CreateJob creates a job based on the provided job struct.
func (c *Client4) CreateJob(job *Job) (*Job, *Response) {
r, err := c.DoApiPost(c.GetJobsRoute(), job.ToJson())
buf, err := json.Marshal(job)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateJob", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetJobsRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return JobFromJson(r.Body), BuildResponse(r)
@@ -5590,9 +5775,13 @@ func (c *Client4) GetRolesByNames(roleNames []string) ([]*Role, *Response) {
// PatchRole partially updates a role in the system. Any missing fields are not updated.
func (c *Client4) PatchRole(roleId string, patch *RolePatch) (*Role, *Response) {
r, err := c.DoApiPut(c.GetRolesRoute()+fmt.Sprintf("/%v/patch", roleId), patch.ToJson())
buf, err := json.Marshal(patch)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("PatchRole", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetRolesRoute()+fmt.Sprintf("/%v/patch", roleId), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return RoleFromJson(r.Body), BuildResponse(r)
@@ -5602,9 +5791,13 @@ func (c *Client4) PatchRole(roleId string, patch *RolePatch) (*Role, *Response)
// CreateScheme creates a new Scheme.
func (c *Client4) CreateScheme(scheme *Scheme) (*Scheme, *Response) {
r, err := c.DoApiPost(c.GetSchemesRoute(), scheme.ToJson())
buf, err := json.Marshal(scheme)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateScheme", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetSchemesRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return SchemeFromJson(r.Body), BuildResponse(r)
@@ -5642,9 +5835,13 @@ func (c *Client4) DeleteScheme(id string) (bool, *Response) {
// PatchScheme partially updates a scheme in the system. Any missing fields are not updated.
func (c *Client4) PatchScheme(id string, patch *SchemePatch) (*Scheme, *Response) {
r, err := c.DoApiPut(c.GetSchemeRoute(id)+"/patch", patch.ToJson())
buf, err := json.Marshal(patch)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("PatchScheme", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetSchemeRoute(id)+"/patch", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return SchemeFromJson(r.Body), BuildResponse(r)
@@ -5679,7 +5876,6 @@ func (c *Client4) GetChannelsForScheme(schemeId string, page int, perPage int) (
// Plugin Section
// UploadPlugin takes an io.Reader stream pointing to the contents of a .tar.gz plugin.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) UploadPlugin(file io.Reader) (*Manifest, *Response) {
return c.uploadPlugin(file, false)
}
@@ -5748,7 +5944,6 @@ func (c *Client4) InstallPluginFromUrl(downloadUrl string, force bool) (*Manifes
}
// InstallMarketplacePlugin will install marketplace plugin.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) InstallMarketplacePlugin(request *InstallMarketplacePluginRequest) (*Manifest, *Response) {
json, err := request.ToJson()
if err != nil {
@@ -5763,7 +5958,6 @@ func (c *Client4) InstallMarketplacePlugin(request *InstallMarketplacePluginRequ
}
// GetPlugins will return a list of plugin manifests for currently active plugins.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) GetPlugins() (*PluginsResponse, *Response) {
r, err := c.DoApiGet(c.GetPluginsRoute(), "")
if err != nil {
@@ -5775,7 +5969,6 @@ func (c *Client4) GetPlugins() (*PluginsResponse, *Response) {
// GetPluginStatuses will return the plugins installed on any server in the cluster, for reporting
// to the administrator via the system console.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) GetPluginStatuses() (PluginStatuses, *Response) {
r, err := c.DoApiGet(c.GetPluginsRoute()+"/statuses", "")
if err != nil {
@@ -5786,7 +5979,6 @@ func (c *Client4) GetPluginStatuses() (PluginStatuses, *Response) {
}
// RemovePlugin will disable and delete a plugin.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) RemovePlugin(id string) (bool, *Response) {
r, err := c.DoApiDelete(c.GetPluginRoute(id))
if err != nil {
@@ -5797,7 +5989,6 @@ func (c *Client4) RemovePlugin(id string) (bool, *Response) {
}
// GetWebappPlugins will return a list of plugins that the webapp should download.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) GetWebappPlugins() ([]*Manifest, *Response) {
r, err := c.DoApiGet(c.GetPluginsRoute()+"/webapp", "")
if err != nil {
@@ -5808,7 +5999,6 @@ func (c *Client4) GetWebappPlugins() ([]*Manifest, *Response) {
}
// EnablePlugin will enable an plugin installed.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) EnablePlugin(id string) (bool, *Response) {
r, err := c.DoApiPost(c.GetPluginRoute(id)+"/enable", "")
if err != nil {
@@ -5819,7 +6009,6 @@ func (c *Client4) EnablePlugin(id string) (bool, *Response) {
}
// DisablePlugin will disable an enabled plugin.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) DisablePlugin(id string) (bool, *Response) {
r, err := c.DoApiPost(c.GetPluginRoute(id)+"/disable", "")
if err != nil {
@@ -5830,7 +6019,6 @@ func (c *Client4) DisablePlugin(id string) (bool, *Response) {
}
// GetMarketplacePlugins will return a list of plugins that an admin can install.
// WARNING: PLUGINS ARE STILL EXPERIMENTAL. THIS FUNCTION IS SUBJECT TO CHANGE.
func (c *Client4) GetMarketplacePlugins(filter *MarketplacePluginFilter) ([]*MarketplacePlugin, *Response) {
route := c.GetPluginsRoute() + "/marketplace"
u, parseErr := url.Parse(route)
@@ -5857,9 +6045,13 @@ func (c *Client4) GetMarketplacePlugins(filter *MarketplacePluginFilter) ([]*Mar
// UpdateChannelScheme will update a channel's scheme.
func (c *Client4) UpdateChannelScheme(channelId, schemeId string) (bool, *Response) {
sip := &SchemeIDPatch{SchemeID: &schemeId}
r, err := c.DoApiPut(c.GetChannelSchemeRoute(channelId), sip.ToJson())
buf, err := json.Marshal(sip)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("UpdateChannelScheme", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetChannelSchemeRoute(channelId), buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -5868,9 +6060,13 @@ func (c *Client4) UpdateChannelScheme(channelId, schemeId string) (bool, *Respon
// UpdateTeamScheme will update a team's scheme.
func (c *Client4) UpdateTeamScheme(teamId, schemeId string) (bool, *Response) {
sip := &SchemeIDPatch{SchemeID: &schemeId}
r, err := c.DoApiPut(c.GetTeamSchemeRoute(teamId), sip.ToJson())
buf, err := json.Marshal(sip)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("UpdateTeamScheme", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetTeamSchemeRoute(teamId), buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -6076,9 +6272,13 @@ func (c *Client4) ChannelMembersMinusGroupMembers(channelID string, groupIDs []s
}
func (c *Client4) PatchConfig(config *Config) (*Config, *Response) {
r, err := c.DoApiPut(c.GetConfigRoute()+"/patch", config.ToJson())
buf, err := json.Marshal(config)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("PatchConfig", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPutBytes(c.GetConfigRoute()+"/patch", buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return ConfigFromJson(r.Body), BuildResponse(r)
@@ -6132,9 +6332,13 @@ func (c *Client4) GetKnownUsers() ([]string, *Response) {
// PublishUserTyping publishes a user is typing websocket event based on the provided TypingRequest.
func (c *Client4) PublishUserTyping(userID string, typingRequest TypingRequest) (bool, *Response) {
r, err := c.DoApiPost(c.GetPublishUserTypingRoute(userID), typingRequest.ToJson())
buf, err := json.Marshal(typingRequest)
if err != nil {
return false, BuildErrorResponse(r, err)
return false, BuildErrorResponse(nil, NewAppError("PublishUserTyping", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetPublishUserTypingRoute(userID), buf)
if appErr != nil {
return false, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return CheckStatusOK(r), BuildResponse(r)
@@ -6320,9 +6524,13 @@ func (c *Client4) MarkNoticesViewed(ids []string) *Response {
// CreateUpload creates a new upload session.
func (c *Client4) CreateUpload(us *UploadSession) (*UploadSession, *Response) {
r, err := c.DoApiPost(c.GetUploadsRoute(), us.ToJson())
buf, err := json.Marshal(us)
if err != nil {
return nil, BuildErrorResponse(r, err)
return nil, BuildErrorResponse(nil, NewAppError("CreateUpload", "api.marshal_error", nil, err.Error(), http.StatusInternalServerError))
}
r, appErr := c.doApiPostBytes(c.GetUploadsRoute(), buf)
if appErr != nil {
return nil, BuildErrorResponse(r, appErr)
}
defer closeBody(r)
return UploadSessionFromJson(r.Body), BuildResponse(r)

Просмотреть файл

@@ -116,15 +116,6 @@ func (o *ClusterDiscovery) IsValid() *AppError {
return nil
}
func (o *ClusterDiscovery) ToJson() string {
b, err := json.Marshal(o)
if err != nil {
return ""
}
return string(b)
}
func ClusterDiscoveryFromJson(data io.Reader) *ClusterDiscovery {
decoder := json.NewDecoder(data)
var me ClusterDiscovery

Просмотреть файл

@@ -4,10 +4,12 @@
package model
import (
"encoding/json"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestClusterDiscovery(t *testing.T) {
@@ -17,7 +19,9 @@ func TestClusterDiscovery(t *testing.T) {
Hostname: "test_hostname",
}
json := o.ToJson()
buf, err := json.Marshal(o)
require.NoError(t, err)
json := string(buf)
result1 := ClusterDiscoveryFromJson(strings.NewReader(json))
assert.NotNil(t, result1)

Просмотреть файл

@@ -16,11 +16,6 @@ type ClusterInfo struct {
Hostname string `json:"hostname"`
}
func (ci *ClusterInfo) ToJson() string {
b, _ := json.Marshal(ci)
return string(b)
}
func ClusterInfoFromJson(data io.Reader) *ClusterInfo {
var ci *ClusterInfo
json.NewDecoder(data).Decode(&ci)

Просмотреть файл

@@ -10,14 +10,6 @@ import (
"github.com/stretchr/testify/assert"
)
func TestClusterInfoJson(t *testing.T) {
cluster := ClusterInfo{IpAddress: NewId(), Hostname: NewId()}
json := cluster.ToJson()
result := ClusterInfoFromJson(strings.NewReader(json))
assert.Equal(t, cluster.IpAddress, result.IpAddress, "Ids do not match")
}
func TestClusterInfosJson(t *testing.T) {
cluster := ClusterInfo{IpAddress: NewId(), Hostname: NewId()}
clusterInfos := make([]*ClusterInfo, 1)

Просмотреть файл

@@ -15,11 +15,6 @@ type ClusterStats struct {
TotalMasterDbConnections int `json:"total_master_db_connections"`
}
func (cs *ClusterStats) ToJson() string {
b, _ := json.Marshal(cs)
return string(b)
}
func ClusterStatsFromJson(data io.Reader) *ClusterStats {
var cs *ClusterStats
json.NewDecoder(data).Decode(&cs)

Просмотреть файл

@@ -1,19 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package model
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func TestClusterStatsJson(t *testing.T) {
cluster := ClusterStats{Id: NewId(), TotalWebsocketConnections: 1, TotalReadDbConnections: 1}
json := cluster.ToJson()
result := ClusterStatsFromJson(strings.NewReader(json))
require.Equal(t, cluster.Id, result.Id, "Ids do not match")
}

Просмотреть файл

@@ -43,22 +43,12 @@ type Command struct {
AutocompleteIconData string `db:"-" json:"autocomplete_icon_data,omitempty"`
}
func (o *Command) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func CommandFromJson(data io.Reader) *Command {
var o *Command
json.NewDecoder(data).Decode(&o)
return o
}
func CommandListToJson(l []*Command) string {
b, _ := json.Marshal(l)
return string(b)
}
func CommandListFromJson(data io.Reader) []*Command {
var o []*Command
json.NewDecoder(data).Decode(&o)

Просмотреть файл

@@ -27,11 +27,6 @@ type CommandArgs struct {
Session Session `json:"-"`
}
func (o *CommandArgs) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func CommandArgsFromJson(data io.Reader) *CommandArgs {
var o *CommandArgs
json.NewDecoder(data).Decode(&o)

Просмотреть файл

@@ -21,11 +21,3 @@ func CommandMoveRequestFromJson(data io.Reader) (*CommandMoveRequest, error) {
}
return &cmr, nil
}
func (cmr *CommandMoveRequest) ToJson() string {
b, err := json.Marshal(cmr)
if err != nil {
return ""
}
return string(b)
}

Просмотреть файл

@@ -32,11 +32,6 @@ type CommandResponse struct {
ExtraResponses []*CommandResponse `json:"extra_responses"`
}
func (o *CommandResponse) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func CommandResponseFromHTTPBody(contentType string, body io.Reader) (*CommandResponse, error) {
if strings.TrimSpace(strings.Split(contentType, ";")[0]) == "application/json" {
return CommandResponseFromJson(body)

Просмотреть файл

@@ -10,14 +10,6 @@ import (
"github.com/stretchr/testify/require"
)
func TestCommandJson(t *testing.T) {
o := Command{Id: NewId()}
json := o.ToJson()
ro := CommandFromJson(strings.NewReader(json))
require.Equal(t, o.Id, ro.Id, "Ids do not match")
}
func TestCommandIsValid(t *testing.T) {
o := Command{
Id: NewId(),

Просмотреть файл

@@ -50,11 +50,6 @@ type ComplianceExportCursor struct {
DirectMessagesQueryCompleted bool
}
func (c *Compliance) ToJson() string {
b, _ := json.Marshal(c)
return string(b)
}
func (c *Compliance) PreSave() {
if c.Id == "" {
c.Id = NewId()
@@ -122,14 +117,6 @@ func ComplianceFromJson(data io.Reader) *Compliance {
return c
}
func (c Compliances) ToJson() string {
b, err := json.Marshal(c)
if err != nil {
return "[]"
}
return string(b)
}
func CompliancesFromJson(data io.Reader) Compliances {
var o Compliances
json.NewDecoder(data).Decode(&o)

Просмотреть файл

@@ -1,19 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package model
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func TestCompliance(t *testing.T) {
o := Compliance{Desc: "test", CreateAt: GetMillis()}
json := o.ToJson()
result := ComplianceFromJson(strings.NewReader(json))
require.Equal(t, o.Desc, result.Desc, "JobName do not match")
}

Просмотреть файл

@@ -3159,18 +3159,18 @@ type Config struct {
}
func (o *Config) Clone() *Config {
buf, err := json.Marshal(o)
if err != nil {
panic(err)
}
var ret Config
if err := json.Unmarshal([]byte(o.ToJson()), &ret); err != nil {
err = json.Unmarshal(buf, &ret)
if err != nil {
panic(err)
}
return &ret
}
func (o *Config) ToJson() string {
b, _ := json.Marshal(o)
return string(b)
}
func (o *Config) ToJsonFiltered(tagType, tagValue string) string {
filteredConfigMap := structToMapFilteredByTag(*o, tagType, tagValue)
for key, value := range filteredConfigMap {

Просмотреть файл

@@ -107,11 +107,6 @@ func EmojiFromJson(data io.Reader) *Emoji {
return emoji
}
func EmojiListToJson(emojiList []*Emoji) string {
b, _ := json.Marshal(emojiList)
return string(b)
}
func EmojiListFromJson(data io.Reader) []*Emoji {
var emojiList []*Emoji
json.NewDecoder(data).Decode(&emojiList)

Просмотреть файл

@@ -4,6 +4,10 @@
package plugin
import (
"bytes"
"encoding/json"
"fmt"
"github.com/pkg/errors"
"github.com/mattermost/mattermost-server/v6/model"
@@ -24,7 +28,17 @@ func (p *HelpersImpl) CheckRequiredServerConfiguration(req *model.Config) (bool,
}
mergedCfg := mc.(model.Config)
if mergedCfg.ToJson() != cfg.ToJson() {
cfgBuf, err := json.Marshal(cfg)
if err != nil {
return false, fmt.Errorf("failed to marshal config: %v", err)
}
mergedCfgBuf, err := json.Marshal(mergedCfg)
if err != nil {
return false, fmt.Errorf("failed to marshal merged config: %v", err)
}
if !bytes.Equal(cfgBuf, mergedCfgBuf) {
return false, nil
}

Просмотреть файл

@@ -4,6 +4,7 @@
package testlib
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
@@ -206,8 +207,13 @@ func setupConfig(configDir string) error {
return errors.Wrapf(err, "failed to create config directory %s", configDir)
}
buf, err := json.Marshal(config)
if err != nil {
return fmt.Errorf("failed to marshal config: %v", err)
}
configJSON := path.Join(configDir, "config.json")
err = ioutil.WriteFile(configJSON, []byte(config.ToJson()), 0644)
err = ioutil.WriteFile(configJSON, buf, 0644)
if err != nil {
return errors.Wrapf(err, "failed to write config to %s", configJSON)
}

Просмотреть файл

@@ -240,7 +240,9 @@ func getAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
auditRec.Success()
c.LogAudit("success")
w.Write([]byte(accessRsp.ToJson()))
if err := json.NewEncoder(w).Encode(accessRsp); err != nil {
mlog.Warn("Error writing response", mlog.Err(err))
}
}
func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {