def parse(self, chunk): HTTPMessage.parse(self, chunk) content_type = self.headers.get("Content-Type", "null") raw_body = self.body self.body = SLPMessageBody.build(content_type, raw_body)
def parse(self, chunk): HTTPMessage.parse(self, chunk) content_type = self.headers.get("Content-Type", "null") raw_body = self.body self.body = SLPMessageBody.build(content_type, raw_body)
def parse(self, data): if len(data) == 0: return data = data.rstrip('\x00') HTTPMessage.parse(self, data)
def _handle_MSG(self, command): message = Message(None, command.payload) content_type = message.content_type if content_type[0] == 'text/x-msmsgsprofile': self._client.profile._server_property_changed("profile", command.payload) if self._protocol_version < 15: #self._send_command('SYN', ('0', '0')) raise NotImplementedError, "Missing Implementation, please fix" else: self._send_command("BLP", (self._client.profile.privacy,)) self._state = ProtocolState.SYNCHRONIZING self._client.address_book.sync() elif content_type[0] in \ ('text/x-msmsgsinitialmdatanotification', \ 'text/x-msmsgsoimnotification'): if self._client.oim_box is not None: self._client.oim_box._state = \ OIM.OfflineMessagesBoxState.NOT_SYNCHRONIZED m = HTTPMessage() m.parse(message.body) mail_data = m.get_header('Mail-Data').strip() if mail_data == 'too-large': mail_data = None self._client.oim_box.sync(mail_data) if mail_data and \ content_type[0] == 'text/x-msmsgsinitialmdatanotification': #Initial mail start = mail_data.find('<IU>') + 4 end = mail_data.find('</IU>') if start < end: mailbox_unread = int(mail_data[start:end]) self._client.mailbox._initial_set(mailbox_unread) elif content_type[0] == 'text/x-msmsgsinitialemailnotification': #Initial mail (obsolete by MSNP11) pass elif content_type[0] == 'text/x-msmsgsemailnotification': #New mail m = HTTPMessage() m.parse(message.body) name = m.get_header('From') address = m.get_header('From-Addr') subject = m.get_header('Subject') message_url = m.get_header('Message-URL') post_url = m.get_header('Post-URL') post_id = m.get_header('id') dest = m.get_header('Dest-Folder') if dest == 'ACTIVE': self._client.mailbox._unread_mail_increased(1) build = self._build_url_post_data post_url, form_data = build(message_url, post_url, post_id) self._client.mailbox._new_mail(name, address, subject, post_url, form_data) elif content_type[0] == 'text/x-msmsgsactivemailnotification': #Movement of unread mail m = HTTPMessage() m.parse(message.body) src = m.get_header('Src-Folder') dest = m.get_header('Dest-Folder') delta = int(m.get_header('Message-Delta')) if src == 'ACTIVE': self._client.mailbox._unread_mail_decreased(delta) elif dest == 'ACTIVE': self._client.mailbox._unread_mail_increased(delta)
def _handle_MSG(self, command): message = Message(None, command.payload) content_type = message.content_type if content_type[0] == 'text/x-msmsgsprofile': profile = {} lines = command.payload.split("\r\n") for line in lines: line = line.strip() if line: name, value = line.split(":", 1) profile[name] = value.strip() self._client.profile._server_property_changed("profile", profile) self._send_command("BLP", (self._client.profile.privacy, )) self._state = ProtocolState.SYNCHRONIZING self._client.address_book.sync() elif content_type[0] in \ ('text/x-msmsgsinitialmdatanotification', \ 'text/x-msmsgsoimnotification'): if self._client.oim_box is not None: self._client.oim_box._state = \ OIM.OfflineMessagesBoxState.NOT_SYNCHRONIZED m = HTTPMessage() m.parse(message.body) mail_data = m.get_header('Mail-Data').strip() if mail_data == 'too-large': mail_data = None self._client.oim_box.sync(mail_data) if mail_data and \ content_type[0] == 'text/x-msmsgsinitialmdatanotification': #Initial mail start = mail_data.find('<IU>') + 4 end = mail_data.find('</IU>') if start < end: mailbox_unread = int(mail_data[start:end]) self._client.mailbox._initial_set(mailbox_unread) elif content_type[0] == 'text/x-msmsgsinitialemailnotification': #Initial mail (obsolete by MSNP11) pass elif content_type[0] == 'text/x-msmsgsemailnotification': #New mail m = HTTPMessage() m.parse(message.body) name = m.get_header('From') address = m.get_header('From-Addr') subject = m.get_header('Subject') message_url = m.get_header('Message-URL') post_url = m.get_header('Post-URL') post_id = m.get_header('id') dest = m.get_header('Dest-Folder') if dest == 'ACTIVE': self._client.mailbox._unread_mail_increased(1) build = self._build_url_post_data post_url, form_data = build(message_url, post_url, post_id) self._client.mailbox._new_mail(name, address, subject, post_url, form_data) elif content_type[0] == 'text/x-msmsgsactivemailnotification': #Movement of unread mail m = HTTPMessage() m.parse(message.body) src = m.get_header('Src-Folder') dest = m.get_header('Dest-Folder') delta = int(m.get_header('Message-Delta')) if src == 'ACTIVE': self._client.mailbox._unread_mail_decreased(delta) elif dest == 'ACTIVE': self._client.mailbox._unread_mail_increased(delta)
def _handle_MSG(self, command): message = Message(None, command.payload) content_type = message.content_type if content_type[0] == 'text/x-msmsgsprofile': profile = {} lines = command.payload.split("\r\n") for line in lines: line = line.strip() if line: name, value = line.split(":", 1) profile[name] = value.strip() self._client.profile._server_property_changed("profile", profile) self.set_privacy(self._client.profile.privacy) self._state = ProtocolState.SYNCHRONIZING self._client.address_book.sync() elif content_type[0] in \ ('text/x-msmsgsinitialmdatanotification', \ 'text/x-msmsgsoimnotification'): if self._client.oim_box is not None: self._client.oim_box._state = \ OIM.OfflineMessagesBoxState.NOT_SYNCHRONIZED m = HTTPMessage() m.parse(message.body) mail_data = m.get_header('Mail-Data').strip() if mail_data == 'too-large': mail_data = None self._client.oim_box.sync(mail_data) if mail_data and \ content_type[0] == 'text/x-msmsgsinitialmdatanotification': #Initial mail start = mail_data.find('<IU>') + 4 end = mail_data.find('</IU>') if start < end: mailbox_unread = int(mail_data[start:end]) self._client.mailbox._initial_set(mailbox_unread) elif content_type[0] == 'text/x-msmsgsinitialemailnotification': #Initial mail (obsolete by MSNP11) pass elif content_type[0] == 'text/x-msmsgsemailnotification': #New mail m = HTTPMessage() m.parse(message.body) name = decode_rfc2047_string(m.get_header('From')) address = m.get_header('From-Addr') subject = decode_rfc2047_string(m.get_header('Subject')) message_url = m.get_header('Message-URL') post_url = m.get_header('Post-URL') post_id = m.get_header('id') dest = m.get_header('Dest-Folder') if dest == 'ACTIVE': self._client.mailbox._unread_mail_increased(1) build = self._build_url_post_data post_url, form_data = build(message_url, post_url, post_id) self._client.mailbox._new_mail(name, address, subject, post_url, form_data) elif content_type[0] == 'text/x-msmsgsactivemailnotification': #Movement of unread mail m = HTTPMessage() m.parse(message.body) src = m.get_header('Src-Folder') dest = m.get_header('Dest-Folder') delta = int(m.get_header('Message-Delta')) if src == 'ACTIVE': self._client.mailbox._unread_mail_decreased(delta) elif dest == 'ACTIVE': self._client.mailbox._unread_mail_increased(delta)
def parse(self, data): if len(data) == 0: return data = data.rstrip('\x00') HTTPMessage.parse(self, data)