+ # 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["defaultTZ"] = tz or ruleConfig["defaultTZ"]
+
+ # Okay, we're happy that the input is sane, lets serve up some data
+ url = 'https://www.facebook.com/events/ical/upcoming/?uid=%s&key=%s'%(uid,key)
+ (content, encoding) = getHTTPContent(url)
+
+ cal = vobject.readOne(str(content, encoding))
+ cal = applyRules(cal, generateRules(ruleConfig), False)
+
+ print(('Content-Type: text/calendar; charset=%s\n'%encoding))
+ writeOutput(cal)
+
+
+if __name__ == '__main__':
+ # Ensure the rules process using the desired timezone
+ ruleConfig = {}
+ ruleConfig["defaultTZ"] = 'Australia/Perth'
+
+ # Detect if this script has been called by CGI and proceed accordingly
+ if 'REQUEST_METHOD' in os.environ:
+ runCGI()
+ else:
+ runLocal()