Новый протокол кодирования и декодирования вложений

This commit is contained in:
RoyceDa
2026-03-27 15:32:10 +02:00
parent 8d6090e632
commit 7e0e97f472
7 changed files with 57 additions and 22 deletions

View File

@@ -9,6 +9,17 @@ export enum AttachmentType {
CALL = 4
}
export interface AttachmentEncoding {
/**
* Для кого вложение закодировано (для какого диалога)
*/
encoded_for: string;
/**
* Кто кодировал вложение
*/
encoder: string;
}
export interface Attachment {
id: string;
blob: string;
@@ -16,10 +27,7 @@ export interface Attachment {
preview: string;
transport_tag: string;
transport_server: string;
/**
* Обозначает, для кого закодировано это вложение, нужно для того, чтобы не кодировать и не загружать заново пересланные сообщения, если они уже были закодированы для этого диалога
*/
encoded_for: string;
encoding: AttachmentEncoding;
}
export class PacketMessage extends Packet {
@@ -59,8 +67,11 @@ export class PacketMessage extends Packet {
let type = stream.readInt8() as AttachmentType;
let transport_tag = stream.readString();
let transport_server = stream.readString();
let encoded_for = stream.readString();
this.attachments.push({id, preview, type, blob, transport_tag, transport_server, encoded_for});
const encoding : AttachmentEncoding = {
encoded_for: stream.readString(),
encoder: stream.readString()
}
this.attachments.push({id, preview, type, blob, transport_tag, transport_server, encoding});
}
this.aesChachaKey = stream.readString();
}
@@ -83,7 +94,8 @@ export class PacketMessage extends Packet {
stream.writeInt8(this.attachments[i].type);
stream.writeString(this.attachments[i].transport_tag);
stream.writeString(this.attachments[i].transport_server);
stream.writeString(this.attachments[i].encoded_for);
stream.writeString(this.attachments[i].encoding.encoded_for);
stream.writeString(this.attachments[i].encoding.encoder);
}
stream.writeString(this.aesChachaKey);
return stream;