X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=icalparse.py;h=2c7ec4e22a51ef589f55f2d75a4dd403a7da1225;hb=bac45db04f25fc3704d752e037579b8a3f19bd9d;hp=110a19ae703d822afa6fd918672bcf69c158543e;hpb=aace9ea8b2dbcdbdc1b3ed30a672a52b0a619e3f;p=frenchie%2Ficalparse.git diff --git a/icalparse.py b/icalparse.py index 110a19a..2c7ec4e 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). @@ -90,7 +97,7 @@ def getContent(url='',stdin=False): res = urllib2.urlopen(url) content = res.read() res.close() - except (urllib2.URLError, ValueError), e: + except (urllib2.URLError, OSError), e: sys.stderr.write('%s\n'%e) sys.exit(1) return content @@ -124,7 +131,7 @@ def getHTTPContent(url='',cache='.httplib2-cache'): try: content = urllib2.urlopen(url).read() return content - except urllib2.URLError, e: + except (urllib2.URLError, OSError), e: sys.stderr.write('%s\n'%e) sys.exit(1)