#!/usr/bin/env python
"""
urllib2 Extensibility Example - data: URI
Author: Sean B. Palmer, inamidst.com
Share and enjoy!
"""

import urllib, urllib2
from cStringIO import StringIO

class DataHandler(urllib2.BaseHandler): 
   def data_open(self, request): 
      uri = request.get_full_url()
      mime, data = uri[5:].split(',', 1)

      data = urllib.unquote(data)
      f = StringIO()
      f.write(data)
      f.seek(0)

      headers = {'Content-Type': mime}
      return urllib.addinfourl(f, headers, uri)
opener = urllib2.build_opener(DataHandler)
urllib2.install_opener(opener)

def test(): 
   u = urllib2.urlopen('data:text/plain,hmm')
   print u.info()
   print u.read()
   u.close()

if __name__=="__main__": 
   test()
