mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-19 03:53:09 -06:00
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package routing
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/matrix-org/dendrite/federationapi/api"
|
|
"github.com/matrix-org/gomatrixserverlib"
|
|
"github.com/matrix-org/util"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type AsyncEventsResponse struct {
|
|
Transaction gomatrixserverlib.Transaction `json:"transaction"`
|
|
Remaining uint32 `json:"remaining"`
|
|
}
|
|
|
|
// GetAsyncEvents implements /_matrix/federation/v1/async_events/{userID}
|
|
// This endpoint can be extracted into a separate mailserver service.
|
|
func GetAsyncEvents(
|
|
httpReq *http.Request,
|
|
fedReq *gomatrixserverlib.FederationRequest,
|
|
fedAPI api.FederationInternalAPI,
|
|
userID gomatrixserverlib.UserID,
|
|
) util.JSONResponse {
|
|
logrus.Infof("Handling async_events for %v", userID)
|
|
var response api.QueryAsyncTransactionsResponse
|
|
err := fedAPI.QueryAsyncTransactions(httpReq.Context(), &api.QueryAsyncTransactionsRequest{UserID: userID}, &response)
|
|
if err != nil {
|
|
return util.JSONResponse{
|
|
Code: http.StatusInternalServerError,
|
|
}
|
|
}
|
|
|
|
return util.JSONResponse{
|
|
Code: http.StatusOK,
|
|
JSON: AsyncEventsResponse{
|
|
Transaction: response.Txn,
|
|
Remaining: response.RemainingCount,
|
|
},
|
|
}
|
|
}
|