Ejemplo n.º 1
0
            def on_token_error(e):
                errcode = getattr(e, 'code', None)

                # if obtaining an token fails, it may be because our time is set incorrectly.
                # we can use the Date: header returned by Twitter's servers to adjust for
                # this.
                if errcode == 401:
                    server_date = getattr(e, 'hdrs', {}).get('Date', None)
                    retries_after_401 = getattr(self.protocol,
                                                'retries_after_401', 0)
                    if server_date and retries_after_401 < 1:
                        self.protocol.retries_after_401 = retries_after_401 + 1
                        log.warning('on_token_error: server date is %r',
                                    server_date)
                        server_date = parse_http_date(server_date)
                        log.warning(
                            'on_token_Error: RETRYING WITH NEW SERVER DATE %r',
                            server_date)
                        twitter_auth.set_server_timestamp(server_date)
                        return twitter_auth.get_oauth_token(
                            self.username,
                            self.password,
                            success=on_token,
                            error=on_token_error)

                state = 'autherror' if errcode == 401 else 'connfail'
                log.error('on_token_error: e.code is %r', errcode)
                log.error('  changing state to %r', state)
                self.protocol.events.state_changed(state)
Ejemplo n.º 2
0
            def on_token_error(e):
                errcode = getattr(e, 'code', None)

                # if obtaining an token fails, it may be because our time is set incorrectly.
                # we can use the Date: header returned by Twitter's servers to adjust for
                # this.
                if errcode == 401:
                    server_date = getattr(e, 'hdrs', {}).get('Date', None)
                    retries_after_401 = getattr(self.protocol, 'retries_after_401', 0)
                    if server_date and retries_after_401 < 1:
                        self.protocol.retries_after_401 = retries_after_401 + 1
                        log.warning('on_token_error: server date is %r', server_date)
                        server_date = parse_http_date(server_date)
                        log.warning('on_token_Error: RETRYING WITH NEW SERVER DATE %r', server_date)
                        twitter_auth.set_server_timestamp(server_date)
                        return twitter_auth.get_oauth_token(self.username, self.password, success=on_token, error=on_token_error)

                state = 'autherror' if errcode == 401 else 'connfail'
                log.error('on_token_error: e.code is %r', errcode)
                log.error('  changing state to %r', state)
                self.protocol.events.state_changed(state)
Ejemplo n.º 3
0
        def when_load():
            self.protocol._verify_databases()
            self.evaljs('window.resdir = %s' % simplejson.dumps((path(__file__).parent / 'res').url()))
            def success(token):
                opts = dict(username=self.username,
                            password=self.password,
                            feeds=userfeeds,
                            accountopts=accountopts or {})

                if token is not None:
                    assert hasattr(token, 'key'), repr(token)
                    opts.update(oauthTokenKey = token.key,
                                oauthTokenSecret = token.secret,

                                oauthConsumerKey = twitter_auth.CONSUMER_KEY,
                                oauthConsumerSecret = twitter_auth.CONSUMER_SECRET)

                    time_correction = twitter_auth.get_time_correction()
                    if time_correction is not None:
                        opts['accountopts'].update(timeCorrectionSecs=-time_correction)

                self.JSCall('initialize', **opts)

            api_server = getattr(self.protocol.account, 'api_server', None)
            if api_server is not None:
                return success(None)

            if self.oauth_token is not None:
                try:
                    token = OAuthToken.from_string(self.oauth_token)
                except Exception:
                    traceback.print_exc()
                else:
                    log.info('using token stored in account')
                    return success(token)

            def on_token(token):
                token_string = token.to_string()
                log.info('on_token received token from network: %r', token_string[:5])
                self.protocol.account.update_info(oauth_token=token_string)
                success(token)

            def on_token_error(e):
                errcode = getattr(e, 'code', None)

                # if obtaining an token fails, it may be because our time is set incorrectly.
                # we can use the Date: header returned by Twitter's servers to adjust for
                # this.
                if errcode == 401:
                    server_date = getattr(e, 'hdrs', {}).get('Date', None)
                    retries_after_401 = getattr(self.protocol, 'retries_after_401', 0)
                    if server_date and retries_after_401 < 1:
                        self.protocol.retries_after_401 = retries_after_401 + 1
                        log.warning('on_token_error: server date is %r', server_date)
                        server_date = parse_http_date(server_date)
                        log.warning('on_token_Error: RETRYING WITH NEW SERVER DATE %r', server_date)
                        twitter_auth.set_server_timestamp(server_date)
                        return twitter_auth.get_oauth_token(self.username, self.password, success=on_token, error=on_token_error)

                state = 'autherror' if errcode == 401 else 'connfail'
                log.error('on_token_error: e.code is %r', errcode)
                log.error('  changing state to %r', state)
                self.protocol.events.state_changed(state)

            log.info('getting new oauth token from network')
            twitter_auth.get_oauth_token(self.username, self.password, success=on_token, error=on_token_error)
Ejemplo n.º 4
0
        def when_load():
            self.protocol._verify_databases()
            self.evaljs('window.resdir = %s' % simplejson.dumps(
                (path(__file__).parent / 'res').url()))

            def success(token):
                opts = dict(username=self.username,
                            password=self.password,
                            feeds=userfeeds,
                            accountopts=accountopts or {})

                if token is not None:
                    assert hasattr(token, 'key'), repr(token)
                    opts.update(
                        oauthTokenKey=token.key,
                        oauthTokenSecret=token.secret,
                        oauthConsumerKey=twitter_auth.CONSUMER_KEY,
                        oauthConsumerSecret=twitter_auth.CONSUMER_SECRET)

                    time_correction = twitter_auth.get_time_correction()
                    if time_correction is not None:
                        opts['accountopts'].update(
                            timeCorrectionSecs=-time_correction)

                self.JSCall('initialize', **opts)

            api_server = getattr(self.protocol.account, 'api_server', None)
            if api_server is not None:
                return success(None)

            if self.oauth_token is not None:
                try:
                    token = OAuthToken.from_string(self.oauth_token)
                except Exception:
                    traceback.print_exc()
                else:
                    log.info('using token stored in account')
                    return success(token)

            def on_token(token):
                token_string = token.to_string()
                log.info('on_token received token from network: %r',
                         token_string[:5])
                self.protocol.account.update_info(oauth_token=token_string)
                success(token)

            def on_token_error(e):
                errcode = getattr(e, 'code', None)

                # if obtaining an token fails, it may be because our time is set incorrectly.
                # we can use the Date: header returned by Twitter's servers to adjust for
                # this.
                if errcode == 401:
                    server_date = getattr(e, 'hdrs', {}).get('Date', None)
                    retries_after_401 = getattr(self.protocol,
                                                'retries_after_401', 0)
                    if server_date and retries_after_401 < 1:
                        self.protocol.retries_after_401 = retries_after_401 + 1
                        log.warning('on_token_error: server date is %r',
                                    server_date)
                        server_date = parse_http_date(server_date)
                        log.warning(
                            'on_token_Error: RETRYING WITH NEW SERVER DATE %r',
                            server_date)
                        twitter_auth.set_server_timestamp(server_date)
                        return twitter_auth.get_oauth_token(
                            self.username,
                            self.password,
                            success=on_token,
                            error=on_token_error)

                state = 'autherror' if errcode == 401 else 'connfail'
                log.error('on_token_error: e.code is %r', errcode)
                log.error('  changing state to %r', state)
                self.protocol.events.state_changed(state)

            log.info('getting new oauth token from network')
            twitter_auth.get_oauth_token(self.username,
                                         self.password,
                                         success=on_token,
                                         error=on_token_error)
Ejemplo n.º 5
0
def test_read_config_get_token():
    c = read_config()
    get_oauth_token(c)