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

Function SendInviteAsRoomOwner

clientapi/routing/cluster.go:71–141  ·  view source on GitHub ↗
(ctx context.Context,
	profileAPI userapi.ClientUserAPI,
	roomID, userID, reason string,
	cfg *config.ClientAPI,
	rsAPI roomserverAPI.ClientRoomserverAPI,
	asAPI appserviceAPI.AppServiceInternalAPI, evTime time.Time)

Source from the content-addressed store, hash-verified

69 }
70}
71func SendInviteAsRoomOwner(ctx context.Context,
72 profileAPI userapi.ClientUserAPI,
73 roomID, userID, reason string,
74 cfg *config.ClientAPI,
75 rsAPI roomserverAPI.ClientRoomserverAPI,
76 asAPI appserviceAPI.AppServiceInternalAPI, evTime time.Time) util.JSONResponse {
77
78 owner, err := new_db.GetGroupOwner(roomID)
79 if err != nil {
80 return util.ErrorResponse(err)
81 }
82 profile, err := loadProfile(ctx, userID, cfg, profileAPI, asAPI)
83 if err != nil {
84 return util.ErrorResponse(err)
85 }
86
87 builder := gomatrixserverlib.EventBuilder{
88 Sender: owner,
89 RoomID: roomID,
90 Type: "m.room.member",
91 StateKey: &userID,
92 }
93
94 content := gomatrixserverlib.MemberContent{
95 Membership: gomatrixserverlib.Invite,
96 DisplayName: profile.DisplayName,
97 AvatarURL: profile.AvatarURL,
98 Reason: reason,
99 IsDirect: false,
100 }
101
102 if err = builder.SetContent(content); err != nil {
103 return util.ErrorResponse(err)
104 }
105 event, err := eventutil.QueryAndBuildEvent(ctx, &builder, cfg.Matrix, evTime, rsAPI, nil)
106 if err == errMissingUserID {
107 return util.JSONResponse{
108 Code: http.StatusBadRequest,
109 JSON: jsonerror.BadJSON(err.Error()),
110 }
111 } else if err == eventutil.ErrRoomNoExists {
112 return util.JSONResponse{
113 Code: http.StatusNotFound,
114 JSON: jsonerror.NotFound(err.Error()),
115 }
116 } else if err != nil {
117 util.GetLogger(ctx).WithError(err).Error("buildMembershipEvent failed")
118 return jsonerror.InternalServerError()
119 }
120
121 var inviteRes roomserverAPI.PerformInviteResponse
122 if err := rsAPI.PerformInvite(ctx, &roomserverAPI.PerformInviteRequest{
123 Event: event,
124 InviteRoomState: nil, // ask the roomserver to draw up invite room state for us
125 RoomVersion: event.RoomVersion,
126 SendAsServer: string(cfg.Matrix.ServerName),
127 }, &inviteRes); err != nil {
128 util.GetLogger(ctx).WithError(err).Error("PerformInvite failed")

Callers 1

RejoinClusterFunction · 0.85

Calls 4

loadProfileFunction · 0.85
JSONResponseMethod · 0.80
PerformInviteMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected