diff options
Diffstat (limited to 'Demo/tkinter/www/www3.py')
-rwxr-xr-x | Demo/tkinter/www/www3.py | 46 |
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() |