示例#1
0
    def connect_to_tracker(self):
        # create the HTTP GET message
        # Note: some trackers have strange URLs, e.g.,
        #       http://moviezone.ws/announce.php?passkey=8ae51c4b47d3e7d0774a720fa511cc2a
        #       which has some sort of 'key' as parameter, so we need to use the add_url_params
        #       utility function to handle such cases.

        url = add_url_params("http://%s:%s/%s" %
                             (self._tracker_address[0], self._tracker_address[1],
                              self._announce_page.replace(u'announce', u'scrape')),
                             {"info_hash": self._infohash_list})

        agent = RedirectAgent(Agent(reactor, connectTimeout=self.timeout, pool=self._connection_pool))
        self.request = self.register_task("request", agent.request('GET', bytes(url)))
        self.request.addCallback(self.on_response)
        self.request.addErrback(self.on_error)

        self._logger.debug(u"%s HTTP SCRAPE message sent: %s", self, url)

        # no more requests can be appended to this session
        self._is_initiated = True
        self._last_contact = int(time.time())

        # Return deferred that will evaluate when the whole chain is done.
        self.result_deferred = self.register_task("result", Deferred(canceller=self._on_cancel))
        return self.result_deferred
示例#2
0
 def test_add_url_param_some_present(self):
     url = 'http://stackoverflow.com/test?answers=true'
     new_params = {'answers': False, 'data': ['some', 'values']}
     result = add_url_params(url, new_params)
     self.assertEqual(
         result,
         'http://stackoverflow.com/test?data=some&data=values&answers=false'
     )
示例#3
0
 def test_add_url_param_clean(self):
     url = 'http://stackoverflow.com/test'
     new_params = {'data': ['some', 'values']}
     result = add_url_params(url, new_params)
     self.assertEqual(
         result, 'http://stackoverflow.com/test?data=some&data=values')