From: James French Date: Mon, 2 Aug 2010 05:05:47 +0000 (+0800) Subject: Fixed the unfold function X-Git-Tag: 0.7~10 X-Git-Url: https://git.ucc.asn.au/?p=frenchie%2Ficalparse.git;a=commitdiff_plain;h=06d5abddbe03b0f029e866e1e5cadf19e4aa66cc Fixed the unfold function * Correctly identifies folds and removes them * Checks for a complete ICS file before doing anything --- 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).