示例#1
0
 def __init__(self, configuration):
     self.configuration = configuration
     self.destinations = configuration.destinations
     self.sources = configuration.sources
     self.filters = configuration.filters
     self.httpClientFactory = HttpClientFactory()
     self.sqlLiteClientFactory = SqlLiteClientFactory()
示例#2
0
class App(object):
    
    downloadHistoryTableName = "download_history"
    
    def __init__(self, configuration):
        self.configuration = configuration
        self.destinations = configuration.destinations
        self.sources = configuration.sources
        self.filters = configuration.filters
        self.httpClientFactory = HttpClientFactory()
        self.sqlLiteClientFactory = SqlLiteClientFactory()
        
    def chooseFilesToDownload(self, items, destination):
        
        client = self.httpClientFactory.create()
        
        for item in items:
            
            request = client.createRequest(item.link)
            
            response = client.getResponse(request)
            
            filename = response.location
        
        
    def pullBytes(self, source):
        
        uri = source.uri
        
        # Construct HTTP client
        client = urllib.request.urlopen(uri)
        
        # Read contents and return
        return client.read()
    
    
    def parseBytes(self, feedBytes):
        
        root = XML(feedBytes)
        channelElement = root[0]

        itemElements = channelElement.findall('item')
        
        items = []
        
        for itemElement in itemElements:
            
            item = Item(itemElement)
            
            items.append(item)

        return items
    
    def filterItems(self, items, filters):
        
        if items is None:
            raise Exception('items cannot be None')
        
        if filters is None:
            raise Exception('filters cannot be None')
        
        for aFilter in filters:
            
            items = aFilter.filter(items)
        
        return items
    
    def checkExists(self, item):
        
        client = self.sqlLiteClientFactory.create(App.downloadHistoryTableName)
        
        pk = item.link
        
        result = client.exists(pk)
        
        client.close()
        
        return result
        
    
    def markDownloaded(self, item):
        
        client = self.sqlLiteClientFactory.create(App.downloadHistoryTableName)
        
        client.insert(item.link, item)
        
        client.close()