Skip to content

Commit

Permalink
(fix) deep-search for text/calendar parts
Browse files Browse the repository at this point in the history
  • Loading branch information
extrafu committed Jan 17, 2017
1 parent e4b2539 commit a3c056e
Showing 1 changed file with 44 additions and 34 deletions.
78 changes: 44 additions & 34 deletions ActiveSync/SOGoMailObject+ActiveSync.m
Original file line number Diff line number Diff line change
Expand Up @@ -726,12 +726,53 @@ - (NSString *) _truncateContent: (NSString *) theContent
//
//
//
- (iCalCalendar *) calendarFromIMIPMessage
- (iCalCalendar *) _calendarFromParts: (NSArray *) parts
parent: (id) parent
{
NSDictionary *part;
id bodyPart;
int i;

for (i = 0; i < [parts count]; i++)
{
part = [parts objectAtIndex: i];
bodyPart = [parent lookupImap4BodyPartKey: [NSString stringWithFormat: @"%d", i+1]
inContext: self->context];

if ([[part objectForKey: @"type"] isEqualToString: @"text"] &&
[[part objectForKey: @"subtype"] isEqualToString: @"calendar"])
{
if (bodyPart)
{
iCalCalendar *calendar;
NSData *calendarData;

calendarData = [bodyPart fetchBLOBWithPeek: YES];
calendar = nil;

NS_DURING
calendar = [iCalCalendar parseSingleFromSource: calendarData];
NS_HANDLER
calendar = nil;
NS_ENDHANDLER

return calendar;
}
}
else if ([[part objectForKey: @"type"] isEqualToString: @"multipart"])
return [self _calendarFromParts: [part objectForKey: @"parts"] parent: bodyPart];
}

return nil;
}

//
//
//
- (iCalCalendar *) calendarFromIMIPMessage
{
NSString *type, *subtype;
NSArray *parts;
int i;

type = [[[self bodyStructure] valueForKey: @"type"] lowercaseString];
subtype = [[[self bodyStructure] valueForKey: @"subtype"] lowercaseString];
Expand Down Expand Up @@ -764,38 +805,7 @@ - (iCalCalendar *) calendarFromIMIPMessage
parts = [[self bodyStructure] objectForKey: @"parts"];

if ([parts count] > 1)
{
for (i = 0; i < [parts count]; i++)
{
part = [parts objectAtIndex: i];

if ([[part objectForKey: @"type"] isEqualToString: @"text"] &&
[[part objectForKey: @"subtype"] isEqualToString: @"calendar"])
{
id bodyPart;

bodyPart = [self lookupImap4BodyPartKey: [NSString stringWithFormat: @"%d", i+1]
inContext: self->context];

if (bodyPart)
{
iCalCalendar *calendar;
NSData *calendarData;

calendarData = [bodyPart fetchBLOBWithPeek: YES];
calendar = nil;

NS_DURING
calendar = [iCalCalendar parseSingleFromSource: calendarData];
NS_HANDLER
calendar = nil;
NS_ENDHANDLER

return calendar;
}
}
}
}
return [self _calendarFromParts: parts parent: self];

return nil;
}
Expand Down

0 comments on commit a3c056e

Please sign in to comment.