(ctx context.Context, profileAPI userapi.ClientUserAPI, roomID, userID, reason string, cfg *config.ClientAPI, rsAPI roomserverAPI.ClientRoomserverAPI, asAPI appserviceAPI.AppServiceInternalAPI, evTime time.Time)
| 69 | } |
| 70 | } |
| 71 | func 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") |
no test coverage detected