view ikweb/tools/lazy/www/work/fetch.py @ 247:7747bbe5b68e

start to develope Information Exchange Center of Ikariam Game. (prototpye)
author "Hisn Yi, Chen <ossug.hychen@gmail.com>"
date Mon, 01 Dec 2008 00:27:22 +0800
parents
children
line wrap: on
line source

import urllib2
import urllib
import cookielib
import os

class Fetcher:
    
    opener = None
    
    working_product = None
    
    """
    A Semi Production Decoration for content fetching.
    
    handles content restriving.
    
    >>> o = Fetcher( SemiProduct(source="http://localhost:8080") )
    >>> o.get().working_product.content
    'It works!!\\n'
    """
    def __init__(self, working_product):
        self.working_product = working_product
    
    def get(self, data = {}):
        """        
        send datas via http get method.
        """        
        res = urllib2.urlopen(self.working_product.source, urllib.urlencode(data))
        return res.read()
    
    def post(self, data = {} ):
        """
        send datas via http post method.
        
        >>> o = Fetcher( SemiProduct(source="http://localhost:8080") )
        >>> o.post({'a':'b'}).working_product.content
        'It works!!\\n'
        """        
        res = urllib2.urlopen(self.working_product.source, urllib.urlencode(data))
        return res.read()    

    def refer(self, refer_url):
        """
        refer getter/setter.

        >>> o = Fetcher( SemiProduct(source="http://localhost:8080") )
        >>> o.refer('http://www.example.com')        
        """
        raise NotImplementedError

    def retry(self, count = 0, intval = 0, timeout = 0):
        """
        retry to fetch the content.

        >>> o = Fetcher( SemiProduct(source="http://localhost:8080") )
        >>> o.retry(4)        
        """        
        raise NotImplementedError
    
class Retry:
    
    """
     A Fetcher Decoration for retry goal.
     
     
    """
    def __init__(self, fetcher):
        raise NotImplementedError
    
if __name__ == '__main__':
    import doctest
    doctest.testmod()