From 90cc575962d9614683aa39a3208ca2b3a745c8f9 Mon Sep 17 00:00:00 2001 From: SUMUKHA-PK Date: Wed, 13 Mar 2019 18:19:02 +0530 Subject: [PATCH] Build errors resolved --- .../clientapi/routing/room_tagging.go | 46 +++++++++++++------ .../dendrite/clientapi/routing/routing.go | 8 ++-- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/github.com/matrix-org/dendrite/clientapi/routing/room_tagging.go b/src/github.com/matrix-org/dendrite/clientapi/routing/room_tagging.go index 4ceeab078..e085dd299 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/routing/room_tagging.go +++ b/src/github.com/matrix-org/dendrite/clientapi/routing/room_tagging.go @@ -18,23 +18,25 @@ import ( "encoding/json" "net/http" + "github.com/matrix-org/dendrite/clientapi/auth/storage/accounts" "github.com/matrix-org/dendrite/clientapi/httputil" "github.com/matrix-org/dendrite/clientapi/jsonerror" + "github.com/matrix-org/dendrite/common" "github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/util" ) // Creates and returns a new MTag type variable -func NewMTag() MTag { - return MTag{ - Tags: make(map[string]TagProperties), +func NewMTag() common.MTag { + return common.MTag{ + Tags: make(map[string]common.TagProperties), } } // GetTag implements GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags -func GetTag(req *http.Request, userId string, roomId string) util.JSONResponse { +func GetTag(req *http.Request, accountDB *accounts.Database, userId string, roomId string) util.JSONResponse { - if req.Method != http.MethodPGet { + if req.Method != http.MethodGet { return util.JSONResponse{ Code: http.StatusMethodNotAllowed, JSON: jsonerror.NotFound("Bad method"), @@ -43,6 +45,11 @@ func GetTag(req *http.Request, userId string, roomId string) util.JSONResponse { mtag := NewMTag() + localpart, _, err := gomatrixserverlib.SplitID('@', "USER_ID") + if err != nil { + return httputil.LogThenError(req, err) + } + data, err := accountDB.GetAccountDataByType( req.Context(), localpart, "ROOM_ID", "m.tag", ) @@ -51,7 +58,8 @@ func GetTag(req *http.Request, userId string, roomId string) util.JSONResponse { return httputil.LogThenError(req, err) } - err = json.Unmarshal([]byte(data), &mtag) + dataByte, _ := json.Marshal(data) + err = json.Unmarshal(dataByte, &mtag) if err != nil { return httputil.LogThenError(req, err) @@ -64,7 +72,7 @@ func GetTag(req *http.Request, userId string, roomId string) util.JSONResponse { } // PutTag implements PUT /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags/{tag} -func PutTag(req *http.Request, userId string, roomId string, tag string) util.JSONResponse { +func PutTag(req *http.Request, accountDB *accounts.Database, userId string, roomId string, tag string) util.JSONResponse { if req.Method != http.MethodPut { return util.JSONResponse{ @@ -89,14 +97,15 @@ func PutTag(req *http.Request, userId string, roomId string, tag string) util.JS mtag := NewMTag() - var properties TagProperties + var properties common.TagProperties if reqErr := httputil.UnmarshalJSONRequest(req, &properties); reqErr != nil { return *reqErr } if len(data) > 0 { - json.Unmarshal([]byte(data), &mtag) + dataByte, _ := json.Marshal(data) + err = json.Unmarshal(dataByte, &mtag) } mtag.Tags[tag] = properties @@ -104,19 +113,19 @@ func PutTag(req *http.Request, userId string, roomId string, tag string) util.JS newTagData, _ := json.Marshal(mtag) if err := accountDB.SaveAccountData( - req.Context(), localpart, "ROOM_ID", "m.tag", newTagData, + req.Context(), localpart, "ROOM_ID", "m.tag", string(newTagData), ); err != nil { return httputil.LogThenError(req, err) } return util.JSONResponse{ Code: http.StatusOK, - JSON: {}, + JSON: struct{}{}, } } // DeleteTag implements DELETE /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags/{tag} -func DeleteTag(req *http.Request, userId string, roomId string, tag string) util.JSONResponse { +func DeleteTag(req *http.Request, accountDB *accounts.Database, userId string, roomId string, tag string) util.JSONResponse { if req.Method != http.MethodDelete { return util.JSONResponse{ @@ -141,7 +150,8 @@ func DeleteTag(req *http.Request, userId string, roomId string, tag string) util mtag := NewMTag() if len(data) > 0 { - json.Unmarshal([]byte(data), &mtag) + dataByte, _ := json.Marshal(data) + err = json.Unmarshal(dataByte, &mtag) } else { //Error indicating there is no Tag data return util.JSONResponse{} @@ -155,8 +165,16 @@ func DeleteTag(req *http.Request, userId string, roomId string, tag string) util return util.JSONResponse{} } + newTagData, _ := json.Marshal(mtag) + + if err := accountDB.SaveAccountData( + req.Context(), localpart, "ROOM_ID", "m.tag", string(newTagData), + ); err != nil { + return httputil.LogThenError(req, err) + } + return util.JSONResponse{ Code: http.StatusOK, - JSON: {}, + JSON: struct{}{}, } } diff --git a/src/github.com/matrix-org/dendrite/clientapi/routing/routing.go b/src/github.com/matrix-org/dendrite/clientapi/routing/routing.go index f2ad5a8c3..a00ba3901 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/routing/routing.go +++ b/src/github.com/matrix-org/dendrite/clientapi/routing/routing.go @@ -412,7 +412,7 @@ func Setup( // When a GET tag request is done, obtain all data of user from here and provide a JSON response. // MakeAuthAPI will convert it to a HTTP response and reflect it on the browser. vars := mux.Vars(req) - return GetTag(req,accountDB vars["userId"], vars["roomId"]) + return GetTag(req, accountDB, vars["userId"], vars["roomId"]) }), ).Methods(http.MethodGet, http.MethodOptions) @@ -420,7 +420,8 @@ func Setup( common.MakeAuthAPI("account_3pid", authData, func(req *http.Request, device *authtypes.Device) util.JSONResponse { // When a PUT tag request is done, obtain all data of user from here and provide a JSON response. // MakeAuthAPI will convert it to a HTTP response and reflect it on the browser. - return PutTag(req,accountDB vars["userId"], vars["roomId"], vars["tag"]) + vars := mux.Vars(req) + return PutTag(req, accountDB, vars["userId"], vars["roomId"], vars["tag"]) }), ).Methods(http.MethodPut, http.MethodOptions) @@ -428,7 +429,8 @@ func Setup( common.MakeAuthAPI("account_3pid", authData, func(req *http.Request, device *authtypes.Device) util.JSONResponse { // When a DELETE tag request is done, obtain all data of user from here and provide a JSON response. // MakeAuthAPI will convert it to a HTTP response and reflect it on the browser. - return DeleteTag(req,accountDB (vars["userId"], vars["roomId"], vars["tag"]) + vars := mux.Vars(req) + return DeleteTag(req, accountDB, vars["userId"], vars["roomId"], vars["tag"]) }), ).Methods(http.MethodDelete, http.MethodOptions) }