Exemple #1
0
    def __get_endpoint(self, last_update_date, pos):
        """Returns the end-point to call given a
        date (`/{pos}/recent` or `/{pos}/last`).
        Arguments:
            last_update_date -- the date of the last update
            the user has saved locally;
            pos -- flag to choose between Bot IPs POS feed and the normal
                one.
        """
        logger = logging.getLogger('__get_endpoint')

        pos_prefix = 'pos_' if pos else ''
        now = DateUtils.now()
        now_str = DateUtils.to_iso_date(now)
        if last_update_date is None:
            logger.info(self.__MESSAGES['no_last_update'])
            return self.__END_POINTS[pos_prefix + 'recent']
        else:
            update_time = self.cache_ttl
            n_available_updates = self.out_of_date_time
            outdated = DateUtils.is_outdated(now,
                                             last_update_date,
                                             update_time * 2)

            if outdated:
                logger.info(self.__MESSAGES['last_updated_at'].format(
                    last_update_date))
                return self.__END_POINTS[pos_prefix + 'recent']
            else:
                logger.info(self.__MESSAGES['last_updated_at'].format(
                    last_update_date))
                return self.__END_POINTS[pos_prefix + 'last']
    def update(self, last_updated_date=None):
        """Returns a list of Crime Servers (either an update to the current feed,
           or all of it) and the date when the updated occurred.

            Arguments:
                last_updated_date -- last updated date, saved locally. It is
                used to know if the local client is up-to-date, partially
                outdated or fully outdated regarding to Blueliv Crime Servers'
                API.
        """
        logger = logging.getLogger('update')
        url = self.base_url + self.__get_endpoint(
            DateUtils.to_iso_date(last_updated_date))
        updatedAt = None
        crimeservers = None
        response = self.get(url)
        if response is not None and "crimeServers" in response:
            crimeservers = response["crimeServers"]
            updatedAt = response["meta"]["updated"] if "meta" in response and "updated" in response["meta"] else None

        return (crimeservers, updatedAt)
Exemple #3
0
    def update(self, last_updated_date=None, pos=False):
        """Returns a list of Bot IPs and the date when the updated occurred.

            Arguments:
                last_updated_date -- last updated date, saved locally. It is
                used to know if the local client is up-to-date or outdated
                regarding to Blueliv Bot IPs' API;
                pos -- flag to choose between Bot IPs POS feed and the normal
                one.
        """
        logger = logging.getLogger('update')
        url = self.base_url + self.__get_endpoint(
            DateUtils.to_iso_date(last_updated_date),
            pos)
        updatedAt = None
        bot_ips = None
        response = self.get(url)
        if response is not None and "ips" in response:
            bot_ips = response["ips"]
            updatedAt = response["meta"]["updated"] if "meta" in response and "updated" in response["meta"] else None

        return (bot_ips, updatedAt)
    def __get_endpoint(self, last_update_date):
        """Returns the end-point to call given a
        date (`/online`, `/recent` or `/last`).
        Arguments:
            last_update_date -- the date of the last update
            the user has saved locally.
        """
        logger = logging.getLogger('__get_endpoint')

        now = DateUtils.now()
        now_str = DateUtils.to_iso_date(now)
        if last_update_date is None:
            logger.info(self.__MESSAGES['no_last_update'])
            return self.__END_POINTS['online']
        else:
            update_time = self.cache_ttl
            n_available_updates = self.out_of_date_time
            partially_outdated = DateUtils.is_outdated(now,
                                                       last_update_date,
                                                       update_time * 2)
            fully_outdated = DateUtils.is_outdated(now,
                                                   last_update_date,
                                                   update_time *
                                                   n_available_updates)

            if fully_outdated:
                logger.info(self.__MESSAGES['outdated_db'])
                return self.__END_POINTS['online']
            elif partially_outdated:
                logger.info(self.__MESSAGES['last_updated_at'].format(
                    last_update_date))
                return self.__END_POINTS['recent']
            else:
                logger.info(self.__MESSAGES['last_updated_at'].format(
                    last_update_date))
                return self.__END_POINTS['last']