MCPcopy Create free account
hub / github.com/daodst/chat / SendForget

Function SendForget

clientapi/routing/membership.go:464–506  ·  view source on GitHub ↗
(
	req *http.Request, device *userapi.Device,
	roomID string, rsAPI roomserverAPI.ClientRoomserverAPI,
)

Source from the content-addressed store, hash-verified

462}
463
464func SendForget(
465 req *http.Request, device *userapi.Device,
466 roomID string, rsAPI roomserverAPI.ClientRoomserverAPI,
467) util.JSONResponse {
468 ctx := req.Context()
469 logger := util.GetLogger(ctx).WithField("roomID", roomID).WithField("userID", device.UserID)
470 var membershipRes roomserverAPI.QueryMembershipForUserResponse
471 membershipReq := roomserverAPI.QueryMembershipForUserRequest{
472 RoomID: roomID,
473 UserID: device.UserID,
474 }
475 err := rsAPI.QueryMembershipForUser(ctx, &membershipReq, &membershipRes)
476 if err != nil {
477 logger.WithError(err).Error("QueryMembershipForUser: could not query membership for user")
478 return jsonerror.InternalServerError()
479 }
480 if !membershipRes.RoomExists {
481 return util.JSONResponse{
482 Code: http.StatusForbidden,
483 JSON: jsonerror.Forbidden("room does not exist"),
484 }
485 }
486 if membershipRes.IsInRoom {
487 return util.JSONResponse{
488 Code: http.StatusBadRequest,
489 JSON: jsonerror.Unknown(fmt.Sprintf("User %s is in room %s", device.UserID, roomID)),
490 }
491 }
492
493 request := roomserverAPI.PerformForgetRequest{
494 RoomID: roomID,
495 UserID: device.UserID,
496 }
497 response := roomserverAPI.PerformForgetResponse{}
498 if err := rsAPI.PerformForget(ctx, &request, &response); err != nil {
499 logger.WithError(err).Error("PerformForget: unable to forget room")
500 return jsonerror.InternalServerError()
501 }
502 return util.JSONResponse{
503 Code: http.StatusOK,
504 JSON: struct{}{},
505 }
506}

Callers 1

SetupFunction · 0.85

Calls 4

ContextMethod · 0.80
PerformForgetMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected