aboutsummaryrefslogtreecommitdiff
path: root/clientapi
diff options
context:
space:
mode:
Diffstat (limited to 'clientapi')
-rw-r--r--clientapi/routing/membership.go8
-rw-r--r--clientapi/routing/profile.go20
-rw-r--r--clientapi/routing/sendevent.go5
3 files changed, 30 insertions, 3 deletions
diff --git a/clientapi/routing/membership.go b/clientapi/routing/membership.go
index cd0ce732..74d92a05 100644
--- a/clientapi/routing/membership.go
+++ b/clientapi/routing/membership.go
@@ -276,7 +276,13 @@ func checkAndProcessThreepid(
Code: http.StatusNotFound,
JSON: jsonerror.NotFound(err.Error()),
}
- } else if err != nil {
+ } else if e, ok := err.(gomatrixserverlib.BadJSONError); ok {
+ return inviteStored, &util.JSONResponse{
+ Code: http.StatusBadRequest,
+ JSON: jsonerror.BadJSON(e.Error()),
+ }
+ }
+ if err != nil {
util.GetLogger(req.Context()).WithError(err).Error("threepid.CheckAndProcessInvite failed")
er := jsonerror.InternalServerError()
return inviteStored, &er
diff --git a/clientapi/routing/profile.go b/clientapi/routing/profile.go
index 1c1ee803..dbf6ef1d 100644
--- a/clientapi/routing/profile.go
+++ b/clientapi/routing/profile.go
@@ -91,6 +91,7 @@ func GetAvatarURL(
}
// SetAvatarURL implements PUT /profile/{userID}/avatar_url
+// nolint:gocyclo
func SetAvatarURL(
req *http.Request, accountDB accounts.Database, device *authtypes.Device,
userID string, producer *producers.UserUpdateProducer, cfg *config.Dendrite,
@@ -156,7 +157,14 @@ func SetAvatarURL(
events, err := buildMembershipEvents(
req.Context(), memberships, newProfile, userID, cfg, evTime, rsAPI,
)
- if err != nil {
+ switch e := err.(type) {
+ case nil:
+ case gomatrixserverlib.BadJSONError:
+ return util.JSONResponse{
+ Code: http.StatusBadRequest,
+ JSON: jsonerror.BadJSON(e.Error()),
+ }
+ default:
util.GetLogger(req.Context()).WithError(err).Error("buildMembershipEvents failed")
return jsonerror.InternalServerError()
}
@@ -205,6 +213,7 @@ func GetDisplayName(
}
// SetDisplayName implements PUT /profile/{userID}/displayname
+// nolint:gocyclo
func SetDisplayName(
req *http.Request, accountDB accounts.Database, device *authtypes.Device,
userID string, producer *producers.UserUpdateProducer, cfg *config.Dendrite,
@@ -270,7 +279,14 @@ func SetDisplayName(
events, err := buildMembershipEvents(
req.Context(), memberships, newProfile, userID, cfg, evTime, rsAPI,
)
- if err != nil {
+ switch e := err.(type) {
+ case nil:
+ case gomatrixserverlib.BadJSONError:
+ return util.JSONResponse{
+ Code: http.StatusBadRequest,
+ JSON: jsonerror.BadJSON(e.Error()),
+ }
+ default:
util.GetLogger(req.Context()).WithError(err).Error("buildMembershipEvents failed")
return jsonerror.InternalServerError()
}
diff --git a/clientapi/routing/sendevent.go b/clientapi/routing/sendevent.go
index aa731709..a8f8893b 100644
--- a/clientapi/routing/sendevent.go
+++ b/clientapi/routing/sendevent.go
@@ -154,6 +154,11 @@ func generateSendEvent(
Code: http.StatusNotFound,
JSON: jsonerror.NotFound("Room does not exist"),
}
+ } else if e, ok := err.(gomatrixserverlib.BadJSONError); ok {
+ return nil, &util.JSONResponse{
+ Code: http.StatusBadRequest,
+ JSON: jsonerror.BadJSON(e.Error()),
+ }
} else if err != nil {
util.GetLogger(req.Context()).WithError(err).Error("internal.BuildEvent failed")
resErr := jsonerror.InternalServerError()