SendLeaveAsRoomOwner
(ctx context.Context, profileAPI userapi.ClientUserAPI, roomID, userID, reason string, cfg *config.ClientAPI, rsAPI roomserverAPI.ClientRoomserverAPI, asAPI appserviceAPI.AppServiceInternalAPI, evTime time.Time)
| 142 | |
| 143 | // SendLeaveAsRoomOwner |
| 144 | func SendLeaveAsRoomOwner(ctx context.Context, |
| 145 | profileAPI userapi.ClientUserAPI, |
| 146 | roomID, userID, reason string, |
| 147 | cfg *config.ClientAPI, |
| 148 | rsAPI roomserverAPI.ClientRoomserverAPI, |
| 149 | asAPI appserviceAPI.AppServiceInternalAPI, evTime time.Time) util.JSONResponse { |
| 150 | |
| 151 | owner, err := new_db.GetGroupOwner(roomID) |
| 152 | if err != nil { |
| 153 | return util.ErrorResponse(err) |
| 154 | } |
| 155 | profile, err := loadProfile(ctx, userID, cfg, profileAPI, asAPI) |
| 156 | if err != nil { |
| 157 | return util.ErrorResponse(err) |
| 158 | } |
| 159 | |
| 160 | builder := gomatrixserverlib.EventBuilder{ |
| 161 | Sender: owner, |
| 162 | RoomID: roomID, |
| 163 | Type: "m.room.member", |
| 164 | StateKey: &userID, |
| 165 | } |
| 166 | |
| 167 | content := gomatrixserverlib.MemberContent{ |
| 168 | Membership: gomatrixserverlib.Leave, |
| 169 | DisplayName: profile.DisplayName, |
| 170 | AvatarURL: profile.AvatarURL, |
| 171 | Reason: reason, |
| 172 | IsDirect: false, |
| 173 | } |
| 174 | |
| 175 | if err = builder.SetContent(content); err != nil { |
| 176 | return util.ErrorResponse(err) |
| 177 | } |
| 178 | event, err := eventutil.QueryAndBuildEvent(ctx, &builder, cfg.Matrix, evTime, rsAPI, nil) |
| 179 | if err == errMissingUserID { |
| 180 | return util.JSONResponse{ |
| 181 | Code: http.StatusBadRequest, |
| 182 | JSON: jsonerror.BadJSON(err.Error()), |
| 183 | } |
| 184 | } else if err == eventutil.ErrRoomNoExists { |
| 185 | return util.JSONResponse{ |
| 186 | Code: http.StatusNotFound, |
| 187 | JSON: jsonerror.NotFound(err.Error()), |
| 188 | } |
| 189 | } else if err != nil { |
| 190 | util.GetLogger(ctx).WithError(err).Error("buildMembershipEvent failed") |
| 191 | return jsonerror.InternalServerError() |
| 192 | } |
| 193 | |
| 194 | if err = roomserverAPI.SendEvents( |
| 195 | ctx, rsAPI, |
| 196 | roomserverAPI.KindNew, |
| 197 | []*gomatrixserverlib.HeaderedEvent{event.Event.Headered(event.RoomVersion)}, |
| 198 | cfg.Matrix.ServerName, |
| 199 | cfg.Matrix.ServerName, |
| 200 | nil, |
| 201 | false, |
no test coverage detected