Migrate all the api4 to handle errors in idiomatic way (#9143)

Этот коммит содержится в:
Jesús Espino
2018-08-01 16:55:18 +02:00
коммит произвёл GitHub
родитель 1f168263a2
Коммит d81a61398d
17 изменённых файлов: 430 добавлений и 393 удалений

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

@@ -87,20 +87,19 @@ func getTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if team, err := c.App.GetTeam(c.Params.TeamId); err != nil {
team, err := c.App.GetTeam(c.Params.TeamId)
if err != nil {
c.Err = err
return
} else {
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return
}
}
c.App.SanitizeTeam(c.Session, team)
w.Write([]byte(team.ToJson()))
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return
}
c.App.SanitizeTeam(c.Session, team)
w.Write([]byte(team.ToJson()))
}
func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -109,20 +108,19 @@ func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if team, err := c.App.GetTeamByName(c.Params.TeamName); err != nil {
team, err := c.App.GetTeamByName(c.Params.TeamName)
if err != nil {
c.Err = err
return
} else {
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return
}
}
c.App.SanitizeTeam(c.Session, team)
w.Write([]byte(team.ToJson()))
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return
}
c.App.SanitizeTeam(c.Session, team)
w.Write([]byte(team.ToJson()))
}
func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -146,14 +144,12 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
}
updatedTeam, err := c.App.UpdateTeam(team)
if err != nil {
c.Err = err
return
}
c.App.SanitizeTeam(c.Session, updatedTeam)
w.Write([]byte(updatedTeam.ToJson()))
}
@@ -225,14 +221,14 @@ func getTeamsForUser(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if teams, err := c.App.GetTeamsForUser(c.Params.UserId); err != nil {
teams, err := c.App.GetTeamsForUser(c.Params.UserId)
if err != nil {
c.Err = err
return
} else {
c.App.SanitizeTeams(c.Session, teams)
w.Write([]byte(model.TeamListToJson(teams)))
}
c.App.SanitizeTeams(c.Session, teams)
w.Write([]byte(model.TeamListToJson(teams)))
}
func getTeamsUnreadForUser(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -269,13 +265,13 @@ func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if team, err := c.App.GetTeamMember(c.Params.TeamId, c.Params.UserId); err != nil {
team, err := c.App.GetTeamMember(c.Params.TeamId, c.Params.UserId)
if err != nil {
c.Err = err
return
} else {
w.Write([]byte(team.ToJson()))
return
}
w.Write([]byte(team.ToJson()))
}
func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -289,13 +285,13 @@ func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if members, err := c.App.GetTeamMembers(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil {
members, err := c.App.GetTeamMembers(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage)
if err != nil {
c.Err = err
return
} else {
w.Write([]byte(model.TeamMembersToJson(members)))
return
}
w.Write([]byte(model.TeamMembersToJson(members)))
}
func getTeamMembersForUser(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -505,13 +501,13 @@ func getTeamStats(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if stats, err := c.App.GetTeamStats(c.Params.TeamId); err != nil {
stats, err := c.App.GetTeamStats(c.Params.TeamId)
if err != nil {
c.Err = err
return
} else {
w.Write([]byte(stats.ToJson()))
return
}
w.Write([]byte(stats.ToJson()))
}
func updateTeamMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -745,22 +741,23 @@ func getInviteInfo(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if team, err := c.App.GetTeamByInviteId(c.Params.InviteId); err != nil {
team, err := c.App.GetTeamByInviteId(c.Params.InviteId)
if err != nil {
c.Err = err
return
} else {
if !(team.Type == model.TEAM_OPEN) {
c.Err = model.NewAppError("getInviteInfo", "api.team.get_invite_info.not_open_team", nil, "id="+c.Params.InviteId, http.StatusForbidden)
return
}
result := map[string]string{}
result["display_name"] = team.DisplayName
result["description"] = team.Description
result["name"] = team.Name
result["id"] = team.Id
w.Write([]byte(model.MapToJson(result)))
}
if !(team.Type == model.TEAM_OPEN) {
c.Err = model.NewAppError("getInviteInfo", "api.team.get_invite_info.not_open_team", nil, "id="+c.Params.InviteId, http.StatusForbidden)
return
}
result := map[string]string{}
result["display_name"] = team.DisplayName
result["description"] = team.Description
result["name"] = team.Name
result["id"] = team.Id
w.Write([]byte(model.MapToJson(result)))
}
func getTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -769,32 +766,35 @@ func getTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if team, err := c.App.GetTeam(c.Params.TeamId); err != nil {
team, err := c.App.GetTeam(c.Params.TeamId)
if err != nil {
c.Err = err
return
} else {
if !c.App.SessionHasPermissionToTeam(c.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) &&
(team.Type != model.TEAM_OPEN || team.AllowOpenInvite) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return
}
etag := strconv.FormatInt(team.LastTeamIconUpdate, 10)
if c.HandleEtag(etag, "Get Team Icon", w, r) {
return
}
if img, err := c.App.GetTeamIcon(team); err != nil {
c.Err = err
return
} else {
w.Header().Set("Content-Type", "image/png")
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 24*60*60)) // 24 hrs
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
w.Write(img)
}
}
if !c.App.SessionHasPermissionToTeam(c.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) &&
(team.Type != model.TEAM_OPEN || team.AllowOpenInvite) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return
}
etag := strconv.FormatInt(team.LastTeamIconUpdate, 10)
if c.HandleEtag(etag, "Get Team Icon", w, r) {
return
}
img, err := c.App.GetTeamIcon(team)
if err != nil {
c.Err = err
return
}
w.Header().Set("Content-Type", "image/png")
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 24*60*60)) // 24 hrs
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
w.Write(img)
}
func setTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {