1717__author__ = 'asaka'
1818
1919
20-
2120StatusesCount = namedtuple ('StatusesCount' , ['total' , 'unread' ])
2221
22+
2323class Status (object ):
2424 def __init__ (self , ** data ):
2525 self .id = None # type: str
2626 self .created_at = None # type: datetime
27+ self .updated_at = None # type: datetime
2728 self ._data = data
2829 self .inbox_type = 'default'
2930
@@ -76,6 +77,12 @@ def destroy(self):
7677 raise ValueError ('This status is not saved' )
7778 client .delete ('/statuses/' + self .id )
7879
80+ def _update_data (self , server_data ):
81+ self .id = server_data .pop ('objectId' )
82+ self .created_at = utils .decode ('createdAt' , server_data .pop ('createdAt' ))
83+ self .updated_at = utils .decode ('updatedAt' , server_data .pop ('updatedAt' ))
84+ self ._data = utils .decode (None , server_data )
85+
7986 @staticmethod
8087 def count_unread_statuses (owner , inbox_type = 'default' ):
8188 params = {
@@ -84,3 +91,42 @@ def count_unread_statuses(owner, inbox_type='default'):
8491 }
8592 content = client .get ('/subscribe/statuses/count' , params ).json ()
8693 return StatusesCount (total = content ['total' ], unread = content ['unread' ])
94+
95+
96+ class InboxQuery (Query ):
97+ def __init__ (self ):
98+ super (InboxQuery , self ).__init__ ('_Status' )
99+ self ._since_id = 0
100+ self ._max_id = 0
101+ self ._inbox_type = 'default'
102+ self ._owner = None
103+
104+ def since_id (self , value ):
105+ self ._since_id = value
106+ return self
107+
108+ def max_id (self , value ):
109+ self ._max_id = value
110+ return self
111+
112+ def owner (self , value ):
113+ self ._owner = value
114+ return self
115+
116+ def inbox_type (self , value ):
117+ self ._inbox_type = value
118+ return self
119+
120+ def _new_object (self ):
121+ return Status ()
122+
123+ def _do_request (self , params ):
124+ return client .get ('/subscribe/statuses' , params ).json ()
125+
126+ def dump (self ):
127+ result = super (InboxQuery , self ).dump ()
128+ result ['owner' ] = utils .encode (self ._owner )
129+ result ['inboxType' ] = self ._inbox_type
130+ result ['sinceId' ] = self ._since_id
131+ result ['maxId' ] = self ._max_id
132+ return result
0 commit comments