MCPcopy Create free account
hub / github.com/daodst/chat / SendGroupMasterNotice

Function SendGroupMasterNotice

clientapi/routing/group_master_notice.go:35–108  ·  view source on GitHub ↗
(
	req *http.Request,
	cfgClient *config.ClientAPI,
	userAPI userapi.ClientUserAPI,
	rsAPI api.ClientRoomserverAPI,
)

Source from the content-addressed store, hash-verified

33 return true
34}
35func SendGroupMasterNotice(
36 req *http.Request,
37 cfgClient *config.ClientAPI,
38 userAPI userapi.ClientUserAPI,
39 rsAPI api.ClientRoomserverAPI,
40) util.JSONResponse {
41 ctx := req.Context()
42
43 var r sendGroupMasterNoticeRequest
44 resErr := httputil.UnmarshalJSONRequest(req, &r) // req
45 if resErr != nil {
46 return *resErr
47 }
48 senderDevice, err := getSenderDeviceForSpecUser(ctx, r.UserID, userAPI, cfgClient)
49 if err != nil {
50 return util.JSONResponse{
51 Code: http.StatusBadRequest,
52 JSON: jsonerror.Unknown("err getSenderDeviceForSpecUser"),
53 }
54 }
55 // check that all required fields are set
56 if !r.valid() {
57 return util.JSONResponse{
58 Code: http.StatusBadRequest,
59 JSON: jsonerror.BadJSON("Invalid request"),
60 }
61 }
62
63 var (
64 roomID = r.RoomId // todo roomID
65 roomVersion = version.DefaultRoomVersion()
66 )
67 // todo APP,
68 request := map[string]interface{}{
69 "body": r.Content.Body,
70 "msgtype": r.Content.MsgType,
71 }
72 e, resErr := generateSendEvent(ctx, request, senderDevice, roomID, "m.room.message", nil, cfgClient, rsAPI, time.Now())
73 if resErr != nil {
74 logrus.Errorf("failed to send message: %+v", resErr)
75 return *resErr
76 }
77
78 var txnAndSessionID *api.TransactionID
79
80 // pass the new event to the roomserver and receive the correct event ID
81 // event ID in case of duplicate transaction is discarded
82 if err := api.SendEvents(
83 ctx, rsAPI,
84 api.KindNew,
85 []*gomatrixserverlib.HeaderedEvent{
86 e.Headered(roomVersion),
87 },
88 cfgClient.Matrix.ServerName,
89 cfgClient.Matrix.ServerName,
90 txnAndSessionID,
91 false,
92 ); err != nil {

Callers

nothing calls this directly

Calls 5

validMethod · 0.95
generateSendEventFunction · 0.85
ContextMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected