mirror of
https://github.com/danog/Telegram.git
synced 2024-12-12 09:29:55 +01:00
67 lines
2.0 KiB
Objective-C
67 lines
2.0 KiB
Objective-C
#import "TGReplyMessageMediaAttachment.h"
|
|
|
|
#import "TGMessage.h"
|
|
|
|
#import "PSKeyValueDecoder.h"
|
|
#import "PSKeyValueEncoder.h"
|
|
|
|
@implementation TGReplyMessageMediaAttachment
|
|
|
|
- (id)init
|
|
{
|
|
self = [super init];
|
|
if (self != nil)
|
|
{
|
|
self.type = TGReplyMessageMediaAttachmentType;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (id)copyWithZone:(NSZone *)__unused zone
|
|
{
|
|
TGReplyMessageMediaAttachment *attachment = [[TGReplyMessageMediaAttachment alloc] init];
|
|
|
|
attachment->_replyMessageId = _replyMessageId;
|
|
attachment->_replyMessage = [_replyMessage copy];
|
|
|
|
return attachment;
|
|
}
|
|
|
|
- (void)serialize:(NSMutableData *)data
|
|
{
|
|
int dataLengthPtr = (int)data.length;
|
|
int zero = 0;
|
|
[data appendBytes:&zero length:4];
|
|
|
|
PSKeyValueEncoder *encoder = [[PSKeyValueEncoder alloc] init];
|
|
[encoder encodeObject:_replyMessage forCKey:"replyMessage"];
|
|
[encoder encodeInt32:_replyMessageId forCKey:"replyMessageId"];
|
|
NSData *replyMessageData = [encoder data];
|
|
[data appendData:replyMessageData];
|
|
|
|
int dataLength = (int)(data.length - dataLengthPtr - 4);
|
|
[data replaceBytesInRange:NSMakeRange(dataLengthPtr, 4) withBytes:&dataLength];
|
|
}
|
|
|
|
- (TGMediaAttachment *)parseMediaAttachment:(NSInputStream *)is
|
|
{
|
|
int dataLength = 0;
|
|
[is read:(uint8_t *)&dataLength maxLength:4];
|
|
|
|
TGReplyMessageMediaAttachment *messageAttachment = [[TGReplyMessageMediaAttachment alloc] init];
|
|
|
|
uint8_t *replyMessageBytes = malloc(dataLength);
|
|
[is read:replyMessageBytes maxLength:dataLength];
|
|
|
|
NSData *replyMessageData = [NSData dataWithBytesNoCopy:replyMessageBytes length:dataLength freeWhenDone:true];
|
|
PSKeyValueDecoder *decoder = [[PSKeyValueDecoder alloc] initWithData:replyMessageData];
|
|
TGMessage *replyMessage = (TGMessage *)[decoder decodeObjectForCKey:"replyMessage"];
|
|
int32_t replyMessageId = [decoder decodeInt32ForCKey:"replyMessageId"];
|
|
messageAttachment.replyMessage = replyMessage;
|
|
messageAttachment.replyMessageId = replyMessageId;
|
|
|
|
return messageAttachment;
|
|
}
|
|
|
|
@end
|