X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=fbcal.py;h=45e03d9967f5e08eea1db901eff5ec291bf9060b;hb=refs%2Ftags%2Fcgi-1.0;hp=8068f5e764bba4b7001cdcc13cf4fd1824fbba02;hpb=5dc6aee6a1edf911312f0d7fea022dd44410bd42;p=frenchie%2Ficalparse.git diff --git a/fbcal.py b/fbcal.py index 8068f5e..45e03d9 100755 --- a/fbcal.py +++ b/fbcal.py @@ -25,7 +25,7 @@ import cgi import vobject import icalparse import re -#import cgitb; cgitb.enable() +import cgitb; cgitb.enable() def exitQuiet(exitstate=0): print('Content-Type: text/html\n') @@ -42,17 +42,32 @@ if __name__ == '__main__': except: exitQuiet() - # The user's key will be a 16 character alphanumeric string + # The user's key will be a 16 character string key = form['key'].value - re.search('[\W_]+', key) and exitQuiet() + re.search('[&?]+', key) and exitQuiet() len(key) == 16 or exitQuiet() - + + # Historically facebook has been notoriously bad at setting timzeones + # in their stuff so this should be a user setting. If it is set in + # their calendar it'll be used otherwise if the user feeds crap or + # nothing just assume they want Australia/Perth + tz = "" + if "tz" in form: + from pytz import timezone + try: + timezone(form['tz'].value) + tz = form['tz'].value + except: pass + + ruleConfig = {} + ruleConfig["defaultTZ"] = tz or "Australia/Perth" + # Okay, we're happy that the input is sane, lets serve up some data url = 'http://www.facebook.com/ical/u.php?uid=%d&key=%s'%(uid,key) (content, encoding) = icalparse.getHTTPContent(url) cal = vobject.readOne(unicode(content, encoding)) - cal = icalparse.applyRules(cal, icalparse.generateRules(), False) + cal = icalparse.applyRules(cal, icalparse.generateRules(ruleConfig), False) print('Content-Type: text/calendar; charset=%s\n'%encoding) icalparse.writeOutput(cal)