64 lines
3.8 KiB
Go
64 lines
3.8 KiB
Go
package rpc
|
||
|
||
import (
|
||
"context"
|
||
|
||
"github.com/iamxvbaba/td/tg"
|
||
"github.com/iamxvbaba/td/tlprofile"
|
||
// registerEncrypted 注册私聊端对端加密(Secret Chat)域 RPC。
|
||
//
|
||
// 归属约定:messages.getDhConfig 属通话域(DH 参数下发),由 registerPhone 注册、
|
||
// 密聊复用,**本处绝不重复注册 messages.getDhConfig**(tlprofile.Dispatcher 同一
|
||
// RPC 重复 On* 是静默 last-wins,会覆盖 phone 域真实现)。
|
||
//
|
||
// P0 落地握手三件套;sendEncrypted / sendEncryptedFile / sendEncryptedService /
|
||
// readEncryptedHistory / setEncryptedTyping / receivedQueue / reportEncryptedSpam /
|
||
// uploadEncryptedFile 暂未注册,落 fallback → NOT_IMPLEMENTED + compatibility trace,
|
||
// 属 P1/P2(qts 引擎 + 消息投递)。设计 docs/secret-chat-module.md。
|
||
)
|
||
|
||
func (r *Router) registerEncrypted(d *tlprofile.Dispatcher) {
|
||
registerRPC[
|
||
// P0:握手三件套。
|
||
*tg.MessagesRequestEncryptionRequest](d, tlprofile.SemanticMethodMessagesRequestEncryption, func(ctx context.Context, layerRequest *tg.MessagesRequestEncryptionRequest) (any, error) {
|
||
return r.onMessagesRequestEncryption(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesAcceptEncryptionRequest](d, tlprofile.SemanticMethodMessagesAcceptEncryption, func(ctx context.Context, layerRequest *tg.MessagesAcceptEncryptionRequest) (
|
||
|
||
// P1:qts 消息收发 + 已读/typing + 队列确认。
|
||
any, error) {
|
||
return r.onMessagesAcceptEncryption(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesDiscardEncryptionRequest](d, tlprofile.SemanticMethodMessagesDiscardEncryption, func(ctx context.Context, layerRequest *tg.MessagesDiscardEncryptionRequest) (any, error) {
|
||
return r.onMessagesDiscardEncryption(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesSendEncryptedRequest](d, tlprofile.SemanticMethodMessagesSendEncrypted, func(ctx context.Context, layerRequest *tg.MessagesSendEncryptedRequest) (any, error) {
|
||
return r.onMessagesSendEncrypted(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesSendEncryptedServiceRequest](d, tlprofile.SemanticMethodMessagesSendEncryptedService, func(ctx context.Context, layerRequest *tg.MessagesSendEncryptedServiceRequest) (any, error) {
|
||
return r.onMessagesSendEncryptedService(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesReadEncryptedHistoryRequest](d, tlprofile.SemanticMethodMessagesReadEncryptedHistory, func(ctx context.Context, layerRequest *tg.MessagesReadEncryptedHistoryRequest) (any, error) {
|
||
return r.onMessagesReadEncryptedHistory(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesSetEncryptedTypingRequest](d, tlprofile.SemanticMethodMessagesSetEncryptedTyping, func(ctx context.Context, layerRequest *tg.MessagesSetEncryptedTypingRequest) (any, error) {
|
||
return r.onMessagesSetEncryptedTyping(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesReceivedQueueRequest](d, tlprofile.SemanticMethodMessagesReceivedQueue, func(ctx context.Context, layerRequest *tg.MessagesReceivedQueueRequest) (any,
|
||
|
||
// P2:密聊文件。
|
||
error) {
|
||
return r.onMessagesReceivedQueue(ctx, layerRequest.
|
||
MaxQts)
|
||
})
|
||
registerRPC[*tg.MessagesReportEncryptedSpamRequest](d, tlprofile.SemanticMethodMessagesReportEncryptedSpam, func(ctx context.Context, layerRequest *tg.MessagesReportEncryptedSpamRequest) (any, error) {
|
||
return r.onMessagesReportEncryptedSpam(ctx, layerRequest.
|
||
Peer)
|
||
})
|
||
registerRPC[*tg.MessagesSendEncryptedFileRequest](d, tlprofile.SemanticMethodMessagesSendEncryptedFile, func(ctx context.Context, layerRequest *tg.MessagesSendEncryptedFileRequest) (any, error) {
|
||
return r.onMessagesSendEncryptedFile(ctx, layerRequest)
|
||
})
|
||
registerRPC[*tg.MessagesUploadEncryptedFileRequest](d, tlprofile.SemanticMethodMessagesUploadEncryptedFile, func(ctx context.Context, layerRequest *tg.MessagesUploadEncryptedFileRequest) (any, error) {
|
||
return r.onMessagesUploadEncryptedFile(ctx, layerRequest)
|
||
})
|
||
}
|