mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-16 11:23:11 -06:00
90 lines
2.6 KiB
Go
90 lines
2.6 KiB
Go
package routing
|
|
|
|
// import (
|
|
// "encoding/json"
|
|
// "github.com/matrix-org/dendrite/clientapi/auth/authtypes"
|
|
// "github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
|
// "github.com/matrix-org/dendrite/clientapi/httputil"
|
|
// "github.com/matrix-org/dendrite/syncapi/storage"
|
|
// "github.com/matrix-org/dendrite/syncapi/sync"
|
|
// "github.com/matrix-org/dendrite/syncapi/types"
|
|
// "github.com/matrix-org/gomatrixserverlib"
|
|
// "github.com/matrix-org/util"
|
|
// "net/http"
|
|
// )
|
|
|
|
// // SendToDevice this is a function for calling process of send-to-device messages those bypassed DAG
|
|
// func SendToDevice(
|
|
// req *http.Request,
|
|
// sender string,
|
|
// syncDB *storage.SyncServerDatasource,
|
|
// deviceDB *devices.Database,
|
|
// eventType, txnID string,
|
|
// notifier *sync.Notifier,
|
|
// ) util.JSONResponse {
|
|
// ctx := req.Context()
|
|
// stdRq := types.StdRequest{}
|
|
// httputil.UnmarshalJSONRequest(req, &stdRq)
|
|
// for uid, deviceMap := range stdRq.Sender {
|
|
|
|
// // federation consideration todo:
|
|
// // if uid is remote domain a fed process should go
|
|
// if false {
|
|
// // federation process
|
|
// return util.JSONResponse{}
|
|
// }
|
|
|
|
// // uid is local domain
|
|
// for device, cont := range deviceMap {
|
|
// jsonBuffer, err := json.Marshal(cont)
|
|
// if err != nil {
|
|
// return util.JSONResponse{
|
|
// Code: http.StatusForbidden,
|
|
// JSON: struct{}{},
|
|
// }
|
|
// }
|
|
// ev := types.StdHolder{
|
|
// Sender: sender,
|
|
// Event: jsonBuffer,
|
|
// EventTyp: eventType,
|
|
// }
|
|
// var pos int64
|
|
|
|
// // wildcard all devices
|
|
// if device == "*" {
|
|
// var deviceCollection []authtypes.Device
|
|
// var localpart string
|
|
// localpart, _, _ = gomatrixserverlib.SplitID('@', uid)
|
|
// deviceCollection, err = deviceDB.GetDevicesByLocalpart(ctx, localpart)
|
|
// for _, val := range deviceCollection {
|
|
// pos, err = syncDB.InsertStdMessage(ctx, ev, txnID, uid, val.ID)
|
|
// notifier.OnNewEvent(nil, uid, types.StreamPosition(pos))
|
|
// }
|
|
// if err != nil {
|
|
// return util.JSONResponse{
|
|
// Code: http.StatusForbidden,
|
|
// JSON: struct{}{},
|
|
// }
|
|
// }
|
|
// return util.JSONResponse{
|
|
// Code: http.StatusOK,
|
|
// JSON: struct{}{},
|
|
// }
|
|
// }
|
|
// pos, err = syncDB.InsertStdMessage(ctx, ev, txnID, uid, device)
|
|
// if err != nil {
|
|
// return util.JSONResponse{
|
|
// Code: http.StatusForbidden,
|
|
// JSON: struct{}{},
|
|
// }
|
|
// }
|
|
// notifier.OnNewEvent(nil, uid, types.StreamPosition(pos))
|
|
// }
|
|
// }
|
|
|
|
// return util.JSONResponse{
|
|
// Code: http.StatusOK,
|
|
// JSON: struct{}{},
|
|
// }
|
|
// }
|