def json_to_status(self, response, column_id='', type_=Status.NORMAL): if isinstance(response, list): statuses = [] for resp in response: if not resp: continue status = self.json_to_status(resp, column_id, type_) statuses.append(status) return statuses else: repeated_by = None retweeted_id = None if 'retweeted_status' in response: repeated_by = response['user']['screen_name'] retweeted_id = response['id'] post = response['retweeted_status'] else: post = response protected = False verified = False if 'user' in post: username = post['user']['screen_name'] avatar = post['user']['profile_image_url'] protected = post['user']['protected'] verified = post['user']['verified'] elif 'sender' in post: username = post['sender']['screen_name'] avatar = post['sender']['profile_image_url'] protected = post['sender']['protected'] verified = post['sender']['verified'] elif 'from_user' in post: username = post['from_user'] avatar = post['profile_image_url'] in_reply_to_id = None in_reply_to_user = None if 'in_reply_to_status_id' in post and \ post['in_reply_to_status_id']: in_reply_to_id = post['in_reply_to_status_id'] if 'in_reply_to_screen_name' in post: in_reply_to_user = post['in_reply_to_screen_name'] fav = False if 'favorited' in post: fav = post['favorited'] repeated = False if 'retweeted' in post: repeated = post['retweeted'] source = None if 'source' in post: source = post['source'] retweet_count = None if 'retweet_count' in post: retweet_count = int(post['retweet_count']) status = Status() status.id_ = str(post['id']) status.original_status_id = retweeted_id status.created_at = post['created_at'] status.username = username status.avatar = avatar status.text = post['text'] status.in_reply_to_id = in_reply_to_id status.in_reply_to_user = in_reply_to_user status.is_favorite = fav status.is_protected = protected status.is_verified = verified status.repeated_by = repeated_by status.datetime = self.get_str_time(post['created_at']) status.timestamp = self.get_int_time(post['created_at']) status.entities = self.get_entities(post) status.type_ = type_ status.account_id = self.account_id status.is_own = (username.lower() == self.uname.lower()) status.repeated = repeated status.repeated_count = retweet_count status.local_timestamp = timestamp_to_localtime(status.timestamp) status.get_source(source) return status
def json_to_status(self, response, column_id='', type_=Status.NORMAL): if isinstance(response, list): statuses = [] for resp in response: if not resp: continue status = self.json_to_status(resp, column_id, type_) statuses.append(status) return statuses else: reposted_by = None if 'retweeted_status' in response: reposted_by = response['user']['screen_name'] post = response['retweeted_status'] else: post = response protected = False if 'user' in post: username = post['user']['screen_name'] avatar = post['user']['profile_image_url'] protected = post['user']['protected'] elif 'sender' in post: username = post['sender']['screen_name'] avatar = post['sender']['profile_image_url'] protected = post['sender']['protected'] elif 'from_user' in post: username = post['from_user'] avatar = post['profile_image_url'] in_reply_to_id = None in_reply_to_user = None if 'in_reply_to_status_id' in post and \ post['in_reply_to_status_id']: in_reply_to_id = post['in_reply_to_status_id'] in_reply_to_user = post['in_reply_to_screen_name'] fav = False if 'favorited' in post: fav = post['favorited'] source = None if 'source' in post: source = post['source'] status = Status() status.id_ = str(post['id']) status.username = username status.avatar = avatar status.text = post['text'] status.in_reply_to_id = in_reply_to_id status.in_reply_to_user = in_reply_to_user status.is_favorite = fav status.is_protected = protected status.is_verified = False status.reposted_by = reposted_by status.datetime = self.get_str_time(post['created_at']) status.timestamp = self.get_int_time(post['created_at']) status.entities = self.get_entities(post) status.type_ = type_ status.account_id = self.account_id status.is_own = (username.lower() == self.uname.lower()) status.set_display_id(column_id) status.get_source(source) return status
def json_to_status(self, response, column_id="", type_=Status.NORMAL): if isinstance(response, list): statuses = [] for resp in response: if not resp: continue status = self.json_to_status(resp, column_id, type_) statuses.append(status) return statuses else: repeated_by = None retweeted_id = None if "retweeted_status" in response: repeated_by = response["user"]["screen_name"] retweeted_id = response["id"] post = response["retweeted_status"] else: post = response protected = False verified = False if "user" in post: username = post["user"]["screen_name"] avatar = post["user"]["profile_image_url"] protected = post["user"]["protected"] verified = post["user"]["verified"] elif "sender" in post: username = post["sender"]["screen_name"] avatar = post["sender"]["profile_image_url"] protected = post["sender"]["protected"] verified = post["sender"]["verified"] elif "from_user" in post: username = post["from_user"] avatar = post["profile_image_url"] in_reply_to_id = None in_reply_to_user = None if "in_reply_to_status_id" in post and post["in_reply_to_status_id"]: in_reply_to_id = post["in_reply_to_status_id"] if "in_reply_to_screen_name" in post: in_reply_to_user = post["in_reply_to_screen_name"] fav = False if "favorited" in post: fav = post["favorited"] repeated = False if "retweeted" in post: repeated = post["retweeted"] source = None if "source" in post: source = post["source"] retweet_count = None if "retweet_count" in post: retweet_count = int(post["retweet_count"]) status = Status() status.id_ = str(post["id"]) status.original_status_id = retweeted_id status.created_at = post["created_at"] status.username = username status.avatar = avatar status.text = post["text"] status.in_reply_to_id = in_reply_to_id status.in_reply_to_user = in_reply_to_user status.is_favorite = fav status.is_protected = protected status.is_verified = verified status.repeated_by = repeated_by status.datetime = self.get_str_time(post["created_at"]) status.timestamp = self.get_int_time(post["created_at"]) status.entities = self.get_entities(post) status.type_ = type_ status.account_id = self.account_id status.is_own = username.lower() == self.uname.lower() status.repeated = repeated status.repeated_count = retweet_count status.local_timestamp = timestamp_to_localtime(status.timestamp) status.get_source(source) return status
class TestStatus: @classmethod def setup_class(self): self.status = Status() self.status.account_id = "dummy-twitter" self.status.username = "******" self.status.id_ = "123" self.status.original_status_id = "123" self.status.created_at = "" self.status.avatar = "my_avatar.png" self.status.text = "Tweet text" self.status.in_reply_to_id = "123" self.status.in_reply_to_user = "******" self.status.is_favorite = False self.status.is_protected = False self.status.is_verified = True self.status.repeated_by = "baz" self.status.datetime = "01-01-1900 00:00" self.status.timestamp = 123456789 self.status.entities = {} self.status.type_ = Status.NORMAL self.status.is_own = True self.status.repeated = False self.status.repeated_count = None self.status.local_timestamp = 123456789 self.status.source = None def test_structure(self): assert self.status.account_id == "dummy-twitter" assert self.status.username == "dummy" assert self.status.id_ == "123" assert self.status.original_status_id == "123" assert self.status.created_at == "" assert self.status.avatar == "my_avatar.png" assert self.status.text == "Tweet text" assert self.status.in_reply_to_id == "123" assert self.status.in_reply_to_user == "bar" assert self.status.is_favorite == False assert self.status.is_protected == False assert self.status.is_verified == True assert self.status.repeated_by == "baz" assert self.status.datetime == "01-01-1900 00:00" assert self.status.timestamp == 123456789 assert self.status.entities == {} assert self.status.type_ == Status.NORMAL assert self.status.is_own == True assert self.status.repeated == False assert self.status.repeated_count == None assert self.status.local_timestamp == 123456789 assert self.status.source == None def test_is_direct(self): assert self.status.is_direct() == False self.status.type_ = Status.DIRECT assert self.status.is_direct() == True def test_get_mentions(self): entities = { 'mentions': [ Entity(self.status.account_id, "@dummy", "@dummy", "@dummy"), Entity(self.status.account_id, "@foo", "@foo", "@foo"), Entity(self.status.account_id, "@bar", "@bar", "@bar"), Entity(self.status.account_id, "@baz", "@baz", "@baz"), ], } self.status.entities = entities mentions = self.status.get_mentions() assert isinstance(mentions, list) assert len(mentions) == 4 assert mentions[0] == "dummy" assert mentions[1] == "foo" assert mentions[2] == "bar" assert mentions[3] == "baz" self.status.entities = {} mentions = self.status.get_mentions() assert isinstance(mentions, list) assert len(mentions) == 1 assert mentions[0] == "dummy" def test_get_protocol_id(self): response = self.status.get_protocol_id() assert response == "twitter" def test_get_source(self): self.status.get_source(None) assert self.status.source == None self.status.get_source('web') assert isinstance(self.status.source, Client) assert self.status.source.name == "web" assert self.status.source.url == "http://twitter.com" self.status.get_source('<a href="http://fooclient.com">Foo client</a>') assert isinstance(self.status.source, Client) assert self.status.source.name == "Foo client" assert self.status.source.url == "http://fooclient.com" self.status.get_source('Bar client') assert isinstance(self.status.source, Client) assert self.status.source.name == "Bar client" assert self.status.source.url is None def test_equality(self): status = Status() status.id_ = "456" assert status != self.status status.id_ = "123" assert status == self.status
class TestStatus: @classmethod def setup_class(self): self.status = Status() self.status.account_id = "dummy-twitter" self.status.username = "******" self.status.id_ = "123" self.status.original_status_id = "123" self.status.created_at = "" self.status.avatar = "my_avatar.png" self.status.text = "Tweet text" self.status.in_reply_to_id = "123" self.status.in_reply_to_user = "******" self.status.is_favorite = False self.status.is_protected = False self.status.is_verified = True self.status.repeated_by = "baz" self.status.datetime = "01-01-1900 00:00" self.status.timestamp = 123456789 self.status.entities = {} self.status.type_ = Status.NORMAL self.status.is_own = True self.status.repeated = False self.status.repeated_count = None self.status.local_timestamp = 123456789 self.status.source = None def test_structure(self): assert self.status.account_id == "dummy-twitter" assert self.status.username == "dummy" assert self.status.id_ == "123" assert self.status.original_status_id == "123" assert self.status.created_at == "" assert self.status.avatar == "my_avatar.png" assert self.status.text == "Tweet text" assert self.status.in_reply_to_id == "123" assert self.status.in_reply_to_user == "bar" assert self.status.is_favorite == False assert self.status.is_protected == False assert self.status.is_verified == True assert self.status.repeated_by == "baz" assert self.status.datetime == "01-01-1900 00:00" assert self.status.timestamp == 123456789 assert self.status.entities == {} assert self.status.type_ == Status.NORMAL assert self.status.is_own == True assert self.status.repeated == False assert self.status.repeated_count == None assert self.status.local_timestamp == 123456789 assert self.status.source == None def test_is_direct(self): assert self.status.is_direct() == False self.status.type_ = Status.DIRECT assert self.status.is_direct() == True def test_get_mentions(self): entities = { 'mentions': [ Entity(self.status.account_id, "@dummy", "@dummy", "@dummy"), Entity(self.status.account_id, "@foo", "@foo", "@foo"), Entity(self.status.account_id, "@bar", "@bar", "@bar"), Entity(self.status.account_id, "@baz", "@baz", "@baz"), ], } self.status.entities = entities mentions = self.status.get_mentions() assert isinstance(mentions, list) assert len(mentions) == 4 assert mentions[0] == "dummy" assert mentions[1] == "foo" assert mentions[2] == "bar" assert mentions[3] == "baz" self.status.entities = {} mentions = self.status.get_mentions() assert isinstance(mentions, list) assert len(mentions) == 1 assert mentions[0] == "dummy" def test_get_protocol_id(self): response = self.status.get_protocol_id() assert response == "twitter" def test_get_source(self): self.status.get_source(None) assert self.status.source == None self.status.get_source('web') assert isinstance(self.status.source, Client) assert self.status.source.name == "web" assert self.status.source.url == "http://twitter.com" self.status.get_source('<a href="http://fooclient.com">Foo client</a>') assert isinstance(self.status.source, Client) assert self.status.source.name == "Foo client" assert self.status.source.url == "http://fooclient.com" self.status.get_source('Bar client') assert isinstance(self.status.source, Client) assert self.status.source.name == "Bar client" assert self.status.source.url is None def test_equality(self): status = Status() status.id_ = "456" assert status != self.status status.id_ = "123" assert status == self.status