def fetch_items(self, category, **kwargs):
        """Fetch the messages

        :param category: the category of items to fetch
        :param kwargs: backend arguments

        :returns: a generator of items
        """
        from_date = kwargs['from_date']
        latest = kwargs['latest']

        logger.info("Fetching messages of '%s' channel from %s",
                    self.channel, str(from_date))

        raw_info = self.client.channel_info(self.channel)

        channel_info = self.parse_channel_info(raw_info)
        channel_info['num_members'] = self.client.conversation_members(self.channel)

        oldest = datetime_to_utc(from_date).timestamp()

        # Minimum value supported by Slack is 0 not 0.0
        if oldest == 0.0:
            oldest = 0

        # Slack does not include on its result the lower limit
        # of the search if it has the same date of 'oldest'. To get
        # this messages too, we substract a low value to be sure
        # the dates are not the same. To avoid precision problems
        # it is substracted by five decimals and not by six.
        if oldest > 0.0:
            oldest -= .00001

        fetching = True
        nmsgs = 0

        while fetching:
            raw_history = self.client.history(self.channel,
                                              oldest=oldest, latest=latest)
            messages, fetching = self.parse_history(raw_history)

            for message in messages:
                # Fetch user data
                user_id = None
                if 'user' in message:
                    user_id = message['user']
                elif 'comment' in message:
                    user_id = message['comment']['user']

                if user_id:
                    message['user_data'] = self.__get_or_fetch_user(user_id)

                message['channel_info'] = channel_info
                yield message

                nmsgs += 1

                if fetching:
                    latest = float(message['ts'])

        logger.info("Fetch process completed: %s message fetched", nmsgs)
def fetch_items(self, category, **kwargs):
        """Fetch the messages

        :param category: the category of items to fetch
        :param kwargs: backend arguments

        :returns: a generator of items
        """
        from_date = kwargs['from_date']
        latest = kwargs['latest']

        logger.info("Fetching messages of '%s' channel from %s",
                    self.channel, str(from_date))

        raw_info = self.client.channel_info(self.channel)

        channel_info = self.parse_channel_info(raw_info)
        channel_info['num_members'] = self.client.conversation_members(self.channel)

        oldest = datetime_to_utc(from_date).timestamp()

        # Minimum value supported by Slack is 0 not 0.0
        if oldest == 0.0:
            oldest = 0

        # Slack does not include on its result the lower limit
        # of the search if it has the same date of 'oldest'. To get
        # this messages too, we substract a low value to be sure
        # the dates are not the same. To avoid precision problems
        # it is substracted by five decimals and not by six.
        if oldest > 0.0:
            oldest -= .00001

        fetching = True
        nmsgs = 0

        while fetching:
            raw_history = self.client.history(self.channel,
                                              oldest=oldest, latest=latest)
            messages, fetching = self.parse_history(raw_history)

            for message in messages:
                # Fetch user data
                user_id = None
                if 'user' in message:
                    user_id = message['user']
                elif 'comment' in message:
                    user_id = message['comment']['user']

                if user_id:
                    message['user_data'] = self.__get_or_fetch_user(user_id)

                message['channel_info'] = channel_info
                yield message

                nmsgs += 1

                if fetching:
                    latest = float(message['ts'])

        logger.info("Fetch process completed: %s message fetched", nmsgs)
def fetch_items ( self , category , * * kwargs ) : from_date = kwargs [ 'from_date' ] latest = kwargs [ 'latest' ] logger . info ( "Fetching messages of '%s' channel from %s" , self . channel , str ( from_date ) ) raw_info = self . client . channel_info ( self . channel ) channel_info = self . parse_channel_info ( raw_info ) channel_info [ 'num_members' ] = self . client . conversation_members ( self . channel ) oldest = datetime_to_utc ( from_date ) . timestamp ( ) # Minimum value supported by Slack is 0 not 0.0 if oldest == 0.0 : oldest = 0 # Slack does not include on its result the lower limit # of the search if it has the same date of 'oldest'. To get # this messages too, we substract a low value to be sure # the dates are not the same. To avoid precision problems # it is substracted by five decimals and not by six. if oldest > 0.0 : oldest -= .00001 fetching = True nmsgs = 0 while fetching : raw_history = self . client . history ( self . channel , oldest = oldest , latest = latest ) messages , fetching = self . parse_history ( raw_history ) for message in messages : # Fetch user data user_id = None if 'user' in message : user_id = message [ 'user' ] elif 'comment' in message : user_id = message [ 'comment' ] [ 'user' ] if user_id : message [ 'user_data' ] = self . __get_or_fetch_user ( user_id ) message [ 'channel_info' ] = channel_info yield message nmsgs += 1 if fetching : latest = float ( message [ 'ts' ] ) logger . info ( "Fetch process completed: %s message fetched" , nmsgs )
Fetch the messages

        :param category: the category of items to fetch
        :param kwargs: backend arguments

        :returns: a generator of items
Fetch the messages