summaryrefslogtreecommitdiffstats
path: root/Demo/tkinter/www/www3.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/tkinter/www/www3.py')
-rwxr-xr-xDemo/tkinter/www/www3.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/Demo/tkinter/www/www3.py b/Demo/tkinter/www/www3.py
new file mode 100755
index 0000000..eb8b07f
--- /dev/null
+++ b/Demo/tkinter/www/www3.py
@@ -0,0 +1,46 @@
+#! /usr/local/bin/python
+
+# www3.py -- print the contents of a URL on stdout
+# - error checking
+# - Error 302 handling
+
+import sys
+import urllib
+import types
+
+def main():
+ if len(sys.argv) != 2 or sys.argv[1][:1] == '-':
+ print "Usage:", sys.argv[0], "url"
+ sys.exit(2)
+ url = sys.argv[1]
+ fp = my_urlopen(url)
+ while 1:
+ line = fp.readline()
+ if not line: break
+ sys.stdout.write(line)
+
+def my_urlopen(url):
+ try:
+ fp = urllib.urlopen(url)
+ return fp
+ except IOError, msg:
+ if type(msg) == types.TupleType and len(msg) == 4:
+ m = msg[3]
+ if msg[1] == 302:
+ if m.has_key('location'):
+ url = m['location']
+ print 'Location:', url
+ return my_urlopen(url)
+ elif m.has_key('uri'):
+ url = m['uri']
+ print 'URI:', url
+ return my_urlopen(url)
+ print '(Error 302 w/o Location/URI header???)'
+ print msg[:3]
+ for line in m.headers:
+ sys.stdout.write(line)
+ else:
+ print msg
+ sys.exit(1)
+
+main()