X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=icalparse.py;h=2c7ec4e22a51ef589f55f2d75a4dd403a7da1225;hb=bac45db04f25fc3704d752e037579b8a3f19bd9d;hp=713e9f39811ad52e2c8dcee6e687084cfb0599c0;hpb=f044586d9a194b7da74d1f87b790e7210f6b0cdd;p=frenchie%2Ficalparse.git diff --git a/icalparse.py b/icalparse.py index 713e9f3..2c7ec4e 100755 --- a/icalparse.py +++ b/icalparse.py @@ -24,17 +24,26 @@ 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''' + 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): @@ -60,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). @@ -87,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 @@ -121,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) @@ -149,3 +159,5 @@ if __name__ == '__main__': url = '' content = getContent(url, options.stdin) + cal = lineJoiner(content) + print cal