'This function handles the response body of a HTTP tracker,
parsing the results.'

def _process_scrape_response(self, body):

    if (body is None):
        self.failed(msg='no    response    body')
        return
    response_dict = bdecode(body)
    if (response_dict is None):
        self.failed(msg='no    valid    response')
        return
    response_list = []
    unprocessed_infohash_list = self._infohash_list[:]
    if (('files' in response_dict) and isinstance(response_dict['files'], dict)):
        for infohash in response_dict['files']:
            complete = response_dict['files'][infohash].get('complete', 0)
            incomplete = response_dict['files'][infohash].get('incomplete', 0)
            seeders = complete
            leechers = incomplete
            response_list.append({'infohash': infohash.encode('hex'), 'seeders': seeders, 'leechers': leechers})
            if (infohash in unprocessed_infohash_list):
                unprocessed_infohash_list.remove(infohash)
    elif ('failure    reason' in response_dict):
        self._logger.info(u'%s    Failure    as    reported    by    tracker    [%s]', self, repr(response_dict['failure    reason']))
        self.failed(msg=repr(response_dict['failure    reason']))
        return
    for infohash in unprocessed_infohash_list:
        response_list.append({'infohash': infohash.encode('hex'), 'seeders': 0, 'leechers': 0})
    self._is_finished = True
    self.result_deferred.callback({self.tracker_url: response_list})
