From 06d5abddbe03b0f029e866e1e5cadf19e4aa66cc Mon Sep 17 00:00:00 2001 From: James French Date: Mon, 2 Aug 2010 13:05:47 +0800 Subject: [PATCH] Fixed the unfold function * Correctly identifies folds and removes them * Checks for a complete ICS file before doing anything --- icalparse.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/icalparse.py b/icalparse.py index 110a19a..780750b 100755 --- a/icalparse.py +++ b/icalparse.py @@ -24,8 +24,11 @@ import sys import urlparse import os + class InvalidICS(Exception): pass class notJoined(Exception): pass +class IncompleteICS(InvalidICS): pass + def lineJoiner(oldcal): '''Takes a string containing a calendar and returns an array of its lines''' @@ -33,11 +36,14 @@ def lineJoiner(oldcal): if not oldcal[0:15] == 'BEGIN:VCALENDAR': raise InvalidICS, "Does not appear to be a valid ICS file" + if not 'END:VCALENDAR' in oldcal[-15:-1]: + raise IncompleteICS, "File appears to be incomplete" + if list(oldcal) == oldcal: oldcal = '\r\n'.join(oldcal) - oldcal.replace('\r\n ', '') - return oldcal.split('\r\n') + oldcal = oldcal.replace('\r\n ', '').replace('\r\n\t','') + return oldcal.strip().split('\r\n') def lineFolder(oldcal, length=75): @@ -63,6 +69,7 @@ def lineFolder(oldcal, length=75): return cal + def getContent(url='',stdin=False): '''Generic content retriever, DO NOT use this function in a CGI script as it can read from the local disk (which you probably don't want it to). -- 2.20.1