PerformLeaveRequest implements api.FederationInternalAPI
( ctx context.Context, request *api.PerformInviteRequest, response *api.PerformInviteResponse, )
| 573 | |
| 574 | // PerformLeaveRequest implements api.FederationInternalAPI |
| 575 | func (r *FederationInternalAPI) PerformInvite( |
| 576 | ctx context.Context, |
| 577 | request *api.PerformInviteRequest, |
| 578 | response *api.PerformInviteResponse, |
| 579 | ) (err error) { |
| 580 | if request.Event.StateKey() == nil { |
| 581 | return errors.New("invite must be a state event") |
| 582 | } |
| 583 | |
| 584 | _, destination, err := gomatrixserverlib.SplitID('@', *request.Event.StateKey()) |
| 585 | if err != nil { |
| 586 | return fmt.Errorf("gomatrixserverlib.SplitID: %w", err) |
| 587 | } |
| 588 | |
| 589 | logrus.WithFields(logrus.Fields{ |
| 590 | "event_id": request.Event.EventID(), |
| 591 | "user_id": *request.Event.StateKey(), |
| 592 | "room_id": request.Event.RoomID(), |
| 593 | "room_version": request.RoomVersion, |
| 594 | "destination": destination, |
| 595 | }).Info("Sending invite") |
| 596 | |
| 597 | inviteReq, err := gomatrixserverlib.NewInviteV2Request(request.Event, request.InviteRoomState) |
| 598 | if err != nil { |
| 599 | return fmt.Errorf("gomatrixserverlib.NewInviteV2Request: %w", err) |
| 600 | } |
| 601 | |
| 602 | inviteRes, err := r.federation.SendInviteV2(ctx, destination, inviteReq) |
| 603 | if err != nil { |
| 604 | return fmt.Errorf("r.federation.SendInviteV2: failed to send invite: %w", err) |
| 605 | } |
| 606 | |
| 607 | inviteEvent, err := inviteRes.Event.UntrustedEvent(request.RoomVersion) |
| 608 | if err != nil { |
| 609 | return fmt.Errorf("r.federation.SendInviteV2 failed to decode event response: %w", err) |
| 610 | } |
| 611 | response.Event = inviteEvent.Headered(request.RoomVersion) |
| 612 | return nil |
| 613 | } |
| 614 | |
| 615 | // PerformServersAlive implements api.FederationInternalAPI |
| 616 | func (r *FederationInternalAPI) PerformBroadcastEDU( |
nothing calls this directly
no test coverage detected