Commit 5acff93d authored by Aaron Hill's avatar Aaron Hill
Browse files

Merge branch 'master' into add_update_banner

parents c1886ad0 d355d9e1
......@@ -25,4 +25,4 @@ env:
after_success: 'coveralls'
after_success: 'if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then coveralls; fi'
Tweepy [![Build Status](](
Tweepy: Twitter for Python!
*Twitter for Python!*
[![Build Status](](
[![Downloads](]( [![Downloads](](
[![Coverage Status](](
#! /usr/bin/env bash
if [[ $TRAVIS_SECURE_ENV_VARS == "false" ]]; then
curl "" -o tests/record.json
USE_REPLAY=1 nosetests -v tests.test_api tests.test_utils
nosetests -v --with-coverage tests.test_api tests.test_streaming tests.test_cursors tests.test_utils
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -135,7 +135,7 @@ class TweepyAPITests(TweepyTestCase):
self.assertEqual(friend.screen_name, 'twitter')
def testshowfriendship(self):
source, target = self.api.show_friendship(target_screen_name='twtiter')
source, target = self.api.show_friendship(target_screen_name='twitter')
self.assert_(isinstance(source, Friendship))
self.assert_(isinstance(target, Friendship))
......@@ -486,16 +486,6 @@ class API(object):
require_auth = True
""" help/test """
def test(self):
path = '/help/test.json',
except TweepError:
return False
return True
create_list = bind_api(
path = '/lists/create.json',
method = 'POST',
......@@ -2,6 +2,7 @@
# Copyright 2009-2010 Joshua Roesslein
# See LICENSE for details.
import logging
import httplib
from socket import timeout
from threading import Thread
......@@ -31,24 +32,30 @@ class StreamListener(object):
def on_data(self, data):
def on_data(self, raw_data):
"""Called when raw data is received from connection.
Override this method if you wish to manually handle
the stream data. Return False to stop stream and close connection.
data = json.loads(raw_data)
if 'in_reply_to_status_id' in data:
status = Status.parse(self.api, json.loads(data))
status = Status.parse(self.api, data)
if self.on_status(status) is False:
return False
elif 'delete' in data:
delete = json.loads(data)['delete']['status']
delete = data['delete']['status']
if self.on_delete(delete['id'], delete['user_id']) is False:
return False
elif 'limit' in data:
if self.on_limit(json.loads(data)['limit']['track']) is False:
if self.on_limit(data['limit']['track']) is False:
return False
elif 'disconnect' in data:
if self.on_disconnect(data['disconnect']) is False:
return False
logging.error("Unknown message type: " + str(raw_data))
def on_status(self, status):
"""Called when a new status arrives"""
......@@ -70,6 +77,14 @@ class StreamListener(object):
"""Called when stream connection times out"""
def on_disconnect(self, notice):
"""Called when twitter sends a disconnect notice
Disconnect codes are listed here:
class Stream(object):
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment