import urllib
import urllib2

            
def simple(stream):
    
    return stream.read()

simple.ENCODING = "identity"
simple.ACCEPT = set( [ "", simple.ENCODING ] )


# HTTP functionality
AGENT = "HTTPInterface/0.0.2 +http://www.phenix-online.org/"
OPENER = urllib2.build_opener()

class Download(object):

    def __init__(self, url, data = None, headers = {}, method = simple):
        
        request = urllib2.Request(
            url = url,
            data = urllib.urlencode( data ) if data else None,
            headers = dict( headers.items()
                + [
                    ( "User-Agent", AGENT ),
                    ( "Accept-encoding", method.ENCODING ),
                    ]
                )
            )
        stream = OPENER.open( request )
        
        if stream.headers.get( "Content-Encoding", "" ).lower() not in method.ACCEPT:
            raise RuntimeError, "Service does not support encoding %s" % method.ENCODING
        
        self.data = method( stream = stream )
         

def is_online(url):
    
    try:
        stream = OPENER.open( url )

    except urllib2.URLError:
        return False

    return True

