MM-22051: Remove ToJson methods from network writes (#17999)

We replace the double conversion of
[]byte to string, with a direct write
to http.ResponseWriter.

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

Tried using gofmt -r, but it only accepts Go
expressions. So had to resort to an ugly sed replace

sed -E -i 's/w.Write\(\[\]byte\((.*).ToJson\(\)\)\)/if err := json.NewEncoder\(w\).Encode\(\1\); err != nil { mlog.Warn\("Error while writing response", mlog.Err\(err\)\)}/g' *.go

```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2021-07-26 13:41:02 +05:30
коммит произвёл GitHub
родитель ae7119ddf5
Коммит 23800326a0
33 изменённых файлов: 578 добавлений и 181 удалений

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

@@ -111,7 +111,9 @@ func createChannel(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("name=" + channel.Name)
w.WriteHeader(http.StatusCreated)
w.Write([]byte(sc.ToJson()))
if err := json.NewEncoder(w).Encode(sc); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -221,7 +223,9 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
auditRec.Success()
c.LogAudit("name=" + channel.Name)
w.Write([]byte(oldChannel.ToJson()))
if err := json.NewEncoder(w).Encode(oldChannel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func convertChannelToPrivate(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -273,7 +277,9 @@ func convertChannelToPrivate(c *Context, w http.ResponseWriter, r *http.Request)
auditRec.Success()
c.LogAudit("name=" + rchannel.Name)
w.Write([]byte(rchannel.ToJson()))
if err := json.NewEncoder(w).Encode(rchannel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func updateChannelPrivacy(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -333,7 +339,9 @@ func updateChannelPrivacy(c *Context, w http.ResponseWriter, r *http.Request) {
auditRec.Success()
c.LogAudit("name=" + updatedChannel.Name)
w.Write([]byte(updatedChannel.ToJson()))
if err := json.NewEncoder(w).Encode(updatedChannel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func patchChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -400,7 +408,9 @@ func patchChannel(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("")
auditRec.AddMeta("patch", rchannel)
w.Write([]byte(rchannel.ToJson()))
if err := json.NewEncoder(w).Encode(rchannel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -434,7 +444,9 @@ func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
auditRec.Success()
c.LogAudit("name=" + channel.Name)
w.Write([]byte(channel.ToJson()))
if err := json.NewEncoder(w).Encode(channel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func createDirectChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -497,7 +509,9 @@ func createDirectChannel(c *Context, w http.ResponseWriter, r *http.Request) {
auditRec.AddMeta("channel", sc)
w.WriteHeader(http.StatusCreated)
w.Write([]byte(sc.ToJson()))
if err := json.NewEncoder(w).Encode(sc); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func searchGroupChannels(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -514,7 +528,9 @@ func searchGroupChannels(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(groupChannels.ToJson()))
if err := json.NewEncoder(w).Encode(groupChannels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -577,7 +593,9 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
auditRec.AddMeta("channel", groupChannel)
w.WriteHeader(http.StatusCreated)
w.Write([]byte(groupChannel.ToJson()))
if err := json.NewEncoder(w).Encode(groupChannel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -610,7 +628,9 @@ func getChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(channel.ToJson()))
if err := json.NewEncoder(w).Encode(channel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelUnread(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -635,7 +655,9 @@ func getChannelUnread(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(channelUnread.ToJson()))
if err := json.NewEncoder(w).Encode(channelUnread); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelStats(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -667,8 +689,15 @@ func getChannelStats(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
stats := model.ChannelStats{ChannelId: c.Params.ChannelId, MemberCount: memberCount, GuestCount: guestCount, PinnedPostCount: pinnedPostCount}
w.Write([]byte(stats.ToJson()))
stats := model.ChannelStats{
ChannelId: c.Params.ChannelId,
MemberCount: memberCount,
GuestCount: guestCount,
PinnedPostCount: pinnedPostCount,
}
if err := json.NewEncoder(w).Encode(stats); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getPinnedPosts(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -695,7 +724,9 @@ func getPinnedPosts(c *Context, w http.ResponseWriter, r *http.Request) {
clientPostList := c.App.PreparePostListForClient(posts)
w.Header().Set(model.HeaderEtagServer, clientPostList.Etag())
w.Write([]byte(clientPostList.ToJson()))
if err := json.NewEncoder(w).Encode(clientPostList); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -729,7 +760,6 @@ func getAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
var payload []byte
if c.Params.IncludeTotalCount {
totalCount, err := c.App.GetAllChannelsCount(opts)
if err != nil {
@@ -740,12 +770,15 @@ func getAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
Channels: channels,
TotalCount: totalCount,
}
payload = cwc.ToJson()
} else {
payload = []byte(channels.ToJson())
if err := json.NewEncoder(w).Encode(cwc); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
return
}
w.Write(payload)
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getPublicChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -771,7 +804,9 @@ func getPublicChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request
return
}
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getDeletedChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -792,7 +827,9 @@ func getDeletedChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Reques
return
}
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getPrivateChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -818,7 +855,9 @@ func getPrivateChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Reques
return
}
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getPublicChannelsByIdsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -857,7 +896,9 @@ func getPublicChannelsByIdsForTeam(c *Context, w http.ResponseWriter, r *http.Re
return
}
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelsForTeamForUser(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -903,7 +944,9 @@ func getChannelsForTeamForUser(c *Context, w http.ResponseWriter, r *http.Reques
}
w.Header().Set(model.HeaderEtagServer, channels.Etag())
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func autocompleteChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -927,7 +970,9 @@ func autocompleteChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Requ
// Don't fill in channels props, since unused by client and potentially expensive.
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func autocompleteChannelsForTeamForSearch(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -944,7 +989,9 @@ func autocompleteChannelsForTeamForSearch(c *Context, w http.ResponseWriter, r *
return
}
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func searchChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -981,7 +1028,9 @@ func searchChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
// Don't fill in channels props, since unused by client and potentially expensive.
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func searchArchivedChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1018,7 +1067,9 @@ func searchArchivedChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Re
// Don't fill in channels props, since unused by client and potentially expensive.
w.Write([]byte(channels.ToJson()))
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func searchAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1066,15 +1117,18 @@ func searchAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
}
// Don't fill in channels props, since unused by client and potentially expensive.
var payload []byte
if props.Page != nil && props.PerPage != nil {
data := model.ChannelsWithCount{Channels: channels, TotalCount: totalCount}
payload = data.ToJson()
} else {
payload = []byte(channels.ToJson())
if err := json.NewEncoder(w).Encode(data); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
return
}
w.Write(payload)
if err := json.NewEncoder(w).Encode(channels); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func deleteChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1159,7 +1213,9 @@ func getChannelByName(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(channel.ToJson()))
if err := json.NewEncoder(w).Encode(channel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelByNameForTeamName(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1194,7 +1250,9 @@ func getChannelByNameForTeamName(c *Context, w http.ResponseWriter, r *http.Requ
return
}
w.Write([]byte(channel.ToJson()))
if err := json.NewEncoder(w).Encode(channel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelMembers(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1214,7 +1272,9 @@ func getChannelMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(members.ToJson()))
if err := json.NewEncoder(w).Encode(members); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelMembersTimezones(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1260,7 +1320,9 @@ func getChannelMembersByIds(c *Context, w http.ResponseWriter, r *http.Request)
return
}
w.Write([]byte(members.ToJson()))
if err := json.NewEncoder(w).Encode(members); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1280,7 +1342,9 @@ func getChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
w.Write([]byte(member.ToJson()))
if err := json.NewEncoder(w).Encode(member); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func getChannelMembersForUser(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1305,7 +1369,9 @@ func getChannelMembersForUser(c *Context, w http.ResponseWriter, r *http.Request
return
}
w.Write([]byte(members.ToJson()))
if err := json.NewEncoder(w).Encode(members); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func viewChannel(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1351,7 +1417,9 @@ func viewChannel(c *Context, w http.ResponseWriter, r *http.Request) {
LastViewedAtTimes: times,
}
w.Write([]byte(resp.ToJson()))
if err := json.NewEncoder(w).Encode(resp); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func updateChannelMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1578,7 +1646,9 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("name=" + channel.Name + " user_id=" + cm.UserId)
w.WriteHeader(http.StatusCreated)
w.Write([]byte(cm.ToJson()))
if err := json.NewEncoder(w).Encode(cm); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}
func removeChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1944,5 +2014,7 @@ func moveChannel(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("channel=" + channel.Name)
c.LogAudit("team=" + team.Name)
w.Write([]byte(channel.ToJson()))
if err := json.NewEncoder(w).Encode(channel); err != nil {
mlog.Warn("Error while writing response", mlog.Err(err))
}
}