Example #1
0
    def on_status(self, tweet):
        try:
            twitter_user_id = str(tweet.user.id)
            splitted = tweet.text.split(' ')
            if len(splitted) <= 3:

                emoji_status = splitted[1]
                is_valid_emoji = emoji.demojize(emoji_status) != emoji_status

                if not is_valid_emoji:
                    app_api.update_status(status=u'@' + tweet.user.screen_name + u' try again with a single emoji: ".YoApp 😂"')
                    return

                yo_access_token = redis_store.get('yo.token.for.twitter.user.id:' + twitter_user_id)
                if not yo_access_token:
                    app_api.update_status(status=u'@' + tweet.user.screen_name + u' let\'s link your twitter to your Yo Status here: https://yostat.us/twitter/authorize')
                    return

                response = requests.post('https://api.justyo.co/status/', json={
                    'status': emoji_status,
                    'access_token': yo_access_token
                })

                if response.status_code == 200:
                    app_api.update_status(status=u'@' + tweet.user.screen_name + u' your status is now: ' + emoji)
                else:
                    app_api.update_status(status=u'@' + tweet.user.screen_name + u' let\'s link your twitter to your Yo Status here: https://yostat.us/twitter/authorize')
        except Exception as e:
            print e.message
Example #2
0
    def wrapper(*args, **kwargs):
        token = request.headers.get("token")
        if not token:
            return jsonify(response_code.user_not_exist)

        user_id = redis_store.get('token:%s' % token)
        if not user_id or token != redis_store.hget("user:%s" % user_id, 'token'):
            return jsonify(response_code.login_check_error)

        return func(*args, **kwargs)
Example #3
0
def set_status():
    slack_user_id = request.form.get('user_id')
    text = request.form.get('text')
    yo_access_token = redis_store.get(slack_user_id)
    response = requests.post('https://api.justyo.co/status/', json={
        'status': text,
        'access_token': yo_access_token
    })
    if response.status_code == 200:
        response = requests.get('https://api.justyo.co/me/?access_token=' + yo_access_token)
        json_response = response.json()
        return 'Your Yo Status is now: ' + text + ' (yostat.us/' + json_response.get('username') + ')'
    else:
        return 'Couldn\'t set your Yo Status :('
Example #4
0
    def assess_timeout(task):
        """Retry current task after a timeout if the Redis Twitter-Lock is set.

        Args:
            task (object): Celery task running this plugin.
        """

        twitter_lock = redis_store.get('Twitter-Lock')
        if not twitter_lock:
            return

        delta = datetime.fromtimestamp(int(twitter_lock)) - datetime.now()
        if delta.days:
            return

        timeout = delta.seconds + 1

        exception = CeleryRetry(
            TwitterSearchException(429, 'Twitter rate limit reached.'),
            'Twitter rate limit reached')

        raise task.retry(exc=exception, countdown=timeout)