view ikweb/tools/lazy/www/work/fetch.py @ 286:2ddd2bd21ef2

list spydata when check enemies
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Thu, 04 Dec 2008 21:54:00 +0800
parents 7747bbe5b68e
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()