#import "TGMessageEntitiesAttachment.h" #import "PSKeyValueEncoder.h" #import "PSKeyValueDecoder.h" #import "NSInputStream+TL.h" @implementation TGMessageEntitiesAttachment - (instancetype)init { self = [super init]; if (self != nil) { self.type = TGMessageEntitiesAttachmentType; } return self; } - (instancetype)initWithCoder:(NSCoder *)aDecoder { self = [super init]; if (self != nil) { self.type = TGMessageEntitiesAttachmentType; NSData *entitiesData = [aDecoder decodeObjectForKey:@"entitiesData"]; _entities = [[[PSKeyValueDecoder alloc] initWithData:entitiesData] decodeArrayForCKey:"_"]; } return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { PSKeyValueEncoder *encoder = [[PSKeyValueEncoder alloc] init]; [encoder encodeArray:_entities forCKey:"_"]; [aCoder encodeObject:[encoder data] forKey:@"entitiesData"]; } - (BOOL)isEqual:(id)object { return [object isKindOfClass:[TGMessageEntitiesAttachment class]] && TGObjectCompare(((TGMessageEntitiesAttachment *)object)->_entities, _entities); } - (void)serialize:(NSMutableData *)data { NSData *serializedData = [NSKeyedArchiver archivedDataWithRootObject:self]; int32_t length = (int32_t)serializedData.length; [data appendBytes:&length length:4]; [data appendData:serializedData]; } - (TGMediaAttachment *)parseMediaAttachment:(NSInputStream *)is { int32_t length = [is readInt32]; NSData *data = [is readData:length]; return [NSKeyedUnarchiver unarchiveObjectWithData:data]; } @end