comparison src/tools/common/data_objects.py @ 2464:8788c217a49e

tools (common/data_objects): added classes for messages
author Goffi <goffi@goffi.org>
date Wed, 03 Jan 2018 00:21:21 +0100
parents 8b37a62336c3
children adcc35625e17
comparison
equal deleted inserted replaced
2463:65a6d2496504 2464:8788c217a49e
131 131
132 132
133 class BlogItems(object): 133 class BlogItems(object):
134 134
135 def __init__(self, mb_data): 135 def __init__(self, mb_data):
136 self.mb_data = mb_data
137 self.items = [BlogItem(i) for i in mb_data[0]] 136 self.items = [BlogItem(i) for i in mb_data[0]]
138 self.metadata = mb_data[1] 137 self.metadata = mb_data[1]
139 138
140 @property 139 @property
141 def service(self): 140 def service(self):
164 def __reversed__(self): 163 def __reversed__(self):
165 return self.items.__reversed__() 164 return self.items.__reversed__()
166 165
167 def __contains__(self, item): 166 def __contains__(self, item):
168 return self.items.__contains__(item) 167 return self.items.__contains__(item)
168
169
170 class Message(object):
171
172 def __init__(self, msg_data):
173 self._uid = msg_data[0]
174 self._timestamp = msg_data[1]
175 self._from_jid = msg_data[2]
176 self._to_jid = msg_data[3]
177 self._message_data = msg_data[4]
178 self._subject_data = msg_data[5]
179 self._type = msg_data[6]
180 self._extra = msg_data[7]
181 self._html = dict(data_format.getSubDict('xhtml', self._extra))
182
183 @property
184 def id(self):
185 return self._uid
186
187 @property
188 def timestamp(self):
189 return self._timestamp
190
191 @property
192 def from_(self):
193 return self._from_jid
194
195 @property
196 def text(self):
197 try:
198 return self._message_data['']
199 except KeyError:
200 return next(self._message_data.itervalues())
201
202 @property
203 def subject(self):
204 try:
205 return self._subject_data['']
206 except KeyError:
207 return next(self._subject_data.itervalues())
208
209 @property
210 def type(self):
211 return self._type
212
213 @property
214 def thread(self):
215 return self._extra.get('thread')
216
217 @property
218 def thread_parent(self):
219 return self._extra.get('thread_parent')
220
221 @property
222 def received(self):
223 return self._extra.get('received_timestamp', self._timestamp)
224
225 @property
226 def delay_sender(self):
227 return self._extra.get('delay_sender')
228
229 @property
230 def info_type(self):
231 return self._extra.get('info_type')
232
233 @property
234 def html(self):
235 if not self._html:
236 return None
237 try:
238 return safe(self._html[''])
239 except KeyError:
240 return safe(next(self._html.itervalues()))
241
242
243 class Messages(object):
244
245 def __init__(self, msgs_data):
246 self.messages = [Message(m) for m in msgs_data]
247
248 def __len__(self):
249 return self.messages.__len__()
250
251 def __missing__(self, key):
252 return self.messages.__missing__(key)
253
254 def __getitem__(self, key):
255 return self.messages.__getitem__(key)
256
257 def __iter__(self):
258 return self.messages.__iter__()
259
260 def __reversed__(self):
261 return self.messages.__reversed__()
262
263 def __contains__(self, item):
264 return self.messages.__contains__(item)
169 265
170 266
171 class Identity(object): 267 class Identity(object):
172 268
173 def __init__(self, jid_str, data=None): 269 def __init__(self, jid_str, data=None):