diff --git a/README.md b/README.md
index 286f631..5b204eb 100644
--- a/README.md
+++ b/README.md
@@ -1,44 +1,33 @@
# transWhat
-transWhat is a WhatsApp XMPP Gateway based on Spectrum2
+transWhat is a WhatsApp XMPP Gateway based on [Spectrum 2](http://www.spectrum.im) and [Yowsup 2](https://github.com/tgalal/yowsup).
## Dependencies
+#### Python packages
+
+ pip install e4u protobuf mysql dateutil
+
+ - **e4u**: is a simple emoji4unicode python bindings
+ - **yowsup**:
+ - **mysqldb**: MySQL client python bindings
+
#### Spectrum 2
is a XMPP transport
-Manual compile latest version from https://github.com/hanzz/libtransport
+Manual compile latest version from https://github.com/hanzz/libtransport.
-#### e4u
-is a simple emoji4unicode python wrapper library
+## Contributors
-Install with `pip install e4u`
+Pull requests, bug reports etc. are welcome. Help us to provide a open implementation of the WhatsApp protocol.
-#### Yowsup
-is a Implementation of the WhatsApp protocol in python
+The following persons have contributed major parts of this code:
-Use my patched version at https://github.com/stv0g/yowsup
-
-#### Google Atom and GData Python wrappers
-required for Google contacts import
-
-#### MySQLdb
-required
-
-#### Google protobuf
-required
-
-#### date.util
-required
-
-## Contribute
-
-Pull requests, bug reports etc. are welcome.
-Help us to provide a open implementation of the WhatsApp protocol.
+ - **Steffen Vogel** (@stv0g): Idea and initial implementation based on Yowsup 1
+ - **Mohammed Yaseen Mowzer** (@moyamo): Port to Yowsup 2
## Documentation
A project wiki is available [here](http://dev.0l.de/projects/transwhat/start).
-A mailinglist for discussion is available [here](http://lists.0l.de/listinfo/whatsapp).
-A writeup of this project is also availabe at my [blog](http://www.steffenvogel.de/2013/06/29/transwhat/).
+An *outdated* writeup of this project is also availabe at my [blog](http://www.steffenvogel.de/2013/06/29/transwhat/).
diff --git a/Spectrum2/backend.py b/Spectrum2/backend.py
index 3bef24f..342f0e4 100644
--- a/Spectrum2/backend.py
+++ b/Spectrum2/backend.py
@@ -4,6 +4,7 @@ import struct
import sys
import os
+import logging
import google.protobuf
def WRAP(MESSAGE, TYPE):
@@ -24,6 +25,7 @@ class SpectrumBackend:
self.m_pingReceived = False
self.m_data = ""
self.m_init_res = 0
+ self.logger = logging.getLogger(self.__class__.__name__)
def handleMessage(self, user, legacyName, msg, nickname = "", xhtml = "", timestamp = ""):
m = protocol_pb2.ConversationMessage()
@@ -204,7 +206,7 @@ class SpectrumBackend:
def handleFTData(self, ftID, data):
d = protocol_pb2.FileTransferData()
- d.ftid = ftID
+ d.ftID = ftID
d.data = data
message = WRAP(d.SerializeToString(), protocol_pb2.WrapperMessage.TYPE_FT_DATA);
@@ -349,8 +351,15 @@ class SpectrumBackend:
wrapper = protocol_pb2.WrapperMessage()
- if (wrapper.ParseFromString(self.m_data[4:]) == False):
+ try:
+ parseFromString = wrapper.ParseFromString(self.m_data[4:])
+ except:
+ parseFromString = True
+ self.logger.error("Parse from String exception")
+
+ if parseFromString == False:
self.m_data = self.m_data[expected_size+4:]
+ self.logger.error("Parse from String exception")
return
self.m_data = self.m_data[4+expected_size:]
diff --git a/Spectrum2/iochannel.py b/Spectrum2/iochannel.py
index 2d142c2..858fc2a 100644
--- a/Spectrum2/iochannel.py
+++ b/Spectrum2/iochannel.py
@@ -1,14 +1,17 @@
import asyncore, socket
import logging
+import sys
class IOChannel(asyncore.dispatcher):
- def __init__(self, host, port, callback):
+ def __init__(self, host, port, callback, closeCallback):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect((host, port))
+ self.logger = logging.getLogger(self.__class__.__name__)
self.callback = callback
+ self.closeCallback = closeCallback
self.buffer = ""
def sendData(self, data):
@@ -28,6 +31,11 @@ class IOChannel(asyncore.dispatcher):
sent = self.send(self.buffer)
self.buffer = self.buffer[sent:]
+ def handle_close(self):
+ self.logger.info('Connection to backend closed, terminating.')
+ self.close()
+ self.closeCallback()
+
def writable(self):
return (len(self.buffer) > 0)
diff --git a/Spectrum2/protocol_pb2.py b/Spectrum2/protocol_pb2.py
index e01bd27..638435c 100644
--- a/Spectrum2/protocol_pb2.py
+++ b/Spectrum2/protocol_pb2.py
@@ -1,88 +1,99 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: protocol.proto
-from google.protobuf import descriptor
-from google.protobuf import message
-from google.protobuf import reflection
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf.internal import enum_type_wrapper
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)
+_sym_db = _symbol_database.Default()
-DESCRIPTOR = descriptor.FileDescriptor(
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
name='protocol.proto',
package='pbnetwork',
- serialized_pb='\n\x0eprotocol.proto\x12\tpbnetwork\"\x19\n\tConnected\x12\x0c\n\x04user\x18\x01 \x02(\t\"<\n\x0c\x44isconnected\x12\x0c\n\x04user\x18\x01 \x02(\t\x12\r\n\x05\x65rror\x18\x02 \x02(\x05\x12\x0f\n\x07message\x18\x03 \x01(\t\"P\n\x05Login\x12\x0c\n\x04user\x18\x01 \x02(\t\x12\x12\n\nlegacyName\x18\x02 \x02(\t\x12\x10\n\x08password\x18\x03 \x02(\t\x12\x13\n\x0b\x65xtraFields\x18\x04 \x03(\t\"*\n\x06Logout\x12\x0c\n\x04user\x18\x01 \x02(\t\x12\x12\n\nlegacyName\x18\x02 \x02(\t\"\xab\x01\n\x05\x42uddy\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12\r\n\x05group\x18\x04 \x03(\t\x12%\n\x06status\x18\x05 \x01(\x0e\x32\x15.pbnetwork.StatusType\x12\x15\n\rstatusMessage\x18\x06 \x01(\t\x12\x10\n\x08iconHash\x18\x07 \x01(\t\x12\x0f\n\x07\x62locked\x18\x08 \x01(\x08\"\xa9\x01\n\x13\x43onversationMessage\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\x0f\n\x07message\x18\x03 \x02(\t\x12\x10\n\x08nickname\x18\x04 \x01(\t\x12\r\n\x05xhtml\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\t\x12\x10\n\x08headline\x18\x07 \x01(\x08\x12\n\n\x02id\x18\x08 \x01(\t\x12\n\n\x02pm\x18\t \x01(\x08\"J\n\x04Room\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x10\n\x08nickname\x18\x02 \x02(\t\x12\x0c\n\x04room\x18\x03 \x02(\t\x12\x10\n\x08password\x18\x04 \x01(\t\"&\n\x08RoomList\x12\x0c\n\x04room\x18\x01 \x03(\t\x12\x0c\n\x04name\x18\x02 \x03(\t\"\x9c\x01\n\x0bParticipant\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x0c\n\x04room\x18\x02 \x02(\t\x12\x10\n\x08nickname\x18\x03 \x02(\t\x12\x0c\n\x04\x66lag\x18\x04 \x02(\x05\x12%\n\x06status\x18\x05 \x02(\x0e\x32\x15.pbnetwork.StatusType\x12\x15\n\rstatusMessage\x18\x06 \x01(\t\x12\x0f\n\x07newname\x18\x07 \x01(\t\"k\n\x05VCard\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\n\n\x02id\x18\x03 \x02(\x05\x12\x10\n\x08\x66ullname\x18\x04 \x01(\t\x12\x10\n\x08nickname\x18\x05 \x01(\t\x12\r\n\x05photo\x18\x06 \x01(\x0c\"X\n\x06Status\x12\x10\n\x08userName\x18\x01 \x02(\t\x12%\n\x06status\x18\x03 \x02(\x0e\x32\x15.pbnetwork.StatusType\x12\x15\n\rstatusMessage\x18\x04 \x01(\t\"B\n\x05Stats\x12\x0b\n\x03res\x18\x01 \x02(\x05\x12\x10\n\x08init_res\x18\x02 \x02(\x05\x12\x0e\n\x06shared\x18\x03 \x02(\x05\x12\n\n\x02id\x18\x04 \x02(\t\"Y\n\x04\x46ile\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\x10\n\x08\x66ileName\x18\x03 \x02(\t\x12\x0c\n\x04size\x18\x04 \x02(\x05\x12\x0c\n\x04\x66tID\x18\x05 \x01(\x05\".\n\x10\x46ileTransferData\x12\x0c\n\x04\x66tID\x18\x01 \x02(\x05\x12\x0c\n\x04\x64\x61ta\x18\x02 \x02(\x0c\"\x1f\n\rBackendConfig\x12\x0e\n\x06\x63onfig\x18\x01 \x02(\t\"\x9a\x06\n\x0eWrapperMessage\x12,\n\x04type\x18\x01 \x02(\x0e\x32\x1e.pbnetwork.WrapperMessage.Type\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\"\xc8\x05\n\x04Type\x12\x12\n\x0eTYPE_CONNECTED\x10\x01\x12\x15\n\x11TYPE_DISCONNECTED\x10\x02\x12\x0e\n\nTYPE_LOGIN\x10\x03\x12\x0f\n\x0bTYPE_LOGOUT\x10\x04\x12\x16\n\x12TYPE_BUDDY_CHANGED\x10\x06\x12\x16\n\x12TYPE_BUDDY_REMOVED\x10\x07\x12\x15\n\x11TYPE_CONV_MESSAGE\x10\x08\x12\r\n\tTYPE_PING\x10\t\x12\r\n\tTYPE_PONG\x10\n\x12\x12\n\x0eTYPE_JOIN_ROOM\x10\x0b\x12\x13\n\x0fTYPE_LEAVE_ROOM\x10\x0c\x12\x1c\n\x18TYPE_PARTICIPANT_CHANGED\x10\r\x12\x1e\n\x1aTYPE_ROOM_NICKNAME_CHANGED\x10\x0e\x12\x1d\n\x19TYPE_ROOM_SUBJECT_CHANGED\x10\x0f\x12\x0e\n\nTYPE_VCARD\x10\x10\x12\x17\n\x13TYPE_STATUS_CHANGED\x10\x11\x12\x15\n\x11TYPE_BUDDY_TYPING\x10\x12\x12\x1d\n\x19TYPE_BUDDY_STOPPED_TYPING\x10\x13\x12\x14\n\x10TYPE_BUDDY_TYPED\x10\x14\x12\x15\n\x11TYPE_AUTH_REQUEST\x10\x15\x12\x12\n\x0eTYPE_ATTENTION\x10\x16\x12\x0e\n\nTYPE_STATS\x10\x17\x12\x11\n\rTYPE_FT_START\x10\x18\x12\x12\n\x0eTYPE_FT_FINISH\x10\x19\x12\x10\n\x0cTYPE_FT_DATA\x10\x1a\x12\x11\n\rTYPE_FT_PAUSE\x10\x1b\x12\x14\n\x10TYPE_FT_CONTINUE\x10\x1c\x12\r\n\tTYPE_EXIT\x10\x1d\x12\x17\n\x13TYPE_BACKEND_CONFIG\x10\x1e\x12\x0e\n\nTYPE_QUERY\x10\x1f\x12\x12\n\x0eTYPE_ROOM_LIST\x10 \x12\x19\n\x15TYPE_CONV_MESSAGE_ACK\x10!\x12\x10\n\x0cTYPE_RAW_XML\x10\"*\xb3\x05\n\x0f\x43onnectionError\x12\"\n\x1e\x43ONNECTION_ERROR_NETWORK_ERROR\x10\x00\x12%\n!CONNECTION_ERROR_INVALID_USERNAME\x10\x01\x12*\n&CONNECTION_ERROR_AUTHENTICATION_FAILED\x10\x02\x12.\n*CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE\x10\x03\x12#\n\x1f\x43ONNECTION_ERROR_NO_SSL_SUPPORT\x10\x04\x12%\n!CONNECTION_ERROR_ENCRYPTION_ERROR\x10\x05\x12 \n\x1c\x43ONNECTION_ERROR_NAME_IN_USE\x10\x06\x12%\n!CONNECTION_ERROR_INVALID_SETTINGS\x10\x07\x12&\n\"CONNECTION_ERROR_CERT_NOT_PROVIDED\x10\x08\x12#\n\x1f\x43ONNECTION_ERROR_CERT_UNTRUSTED\x10\t\x12!\n\x1d\x43ONNECTION_ERROR_CERT_EXPIRED\x10\n\x12\'\n#CONNECTION_ERROR_CERT_NOT_ACTIVATED\x10\x0b\x12+\n\'CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH\x10\x0c\x12.\n*CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH\x10\r\x12%\n!CONNECTION_ERROR_CERT_SELF_SIGNED\x10\x0e\x12%\n!CONNECTION_ERROR_CERT_OTHER_ERROR\x10\x0f\x12 \n\x1c\x43ONNECTION_ERROR_OTHER_ERROR\x10\x10*\x86\x01\n\nStatusType\x12\x11\n\rSTATUS_ONLINE\x10\x00\x12\x0f\n\x0bSTATUS_AWAY\x10\x01\x12\x0e\n\nSTATUS_FFC\x10\x02\x12\r\n\tSTATUS_XA\x10\x03\x12\x0e\n\nSTATUS_DND\x10\x04\x12\x0f\n\x0bSTATUS_NONE\x10\x05\x12\x14\n\x10STATUS_INVISIBLE\x10\x06*\x88\x02\n\x0fParticipantFlag\x12\x19\n\x15PARTICIPANT_FLAG_NONE\x10\x00\x12\x1e\n\x1aPARTICIPANT_FLAG_MODERATOR\x10\x01\x12\x1d\n\x19PARTICIPANT_FLAG_CONFLICT\x10\x02\x12\x1b\n\x17PARTICIPANT_FLAG_BANNED\x10\x04\x12#\n\x1fPARTICIPANT_FLAG_NOT_AUTHORIZED\x10\x08\x12\x17\n\x13PARTICIPANT_FLAG_ME\x10\x10\x12\x1b\n\x17PARTICIPANT_FLAG_KICKED\x10 \x12#\n\x1fPARTICIPANT_FLAG_ROOM_NOT_FOUND\x10@')
+ serialized_pb=_b('\n\x0eprotocol.proto\x12\tpbnetwork\"\x19\n\tConnected\x12\x0c\n\x04user\x18\x01 \x02(\t\"<\n\x0c\x44isconnected\x12\x0c\n\x04user\x18\x01 \x02(\t\x12\r\n\x05\x65rror\x18\x02 \x02(\x05\x12\x0f\n\x07message\x18\x03 \x01(\t\"P\n\x05Login\x12\x0c\n\x04user\x18\x01 \x02(\t\x12\x12\n\nlegacyName\x18\x02 \x02(\t\x12\x10\n\x08password\x18\x03 \x02(\t\x12\x13\n\x0b\x65xtraFields\x18\x04 \x03(\t\"*\n\x06Logout\x12\x0c\n\x04user\x18\x01 \x02(\t\x12\x12\n\nlegacyName\x18\x02 \x02(\t\"\xab\x01\n\x05\x42uddy\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12\r\n\x05group\x18\x04 \x03(\t\x12%\n\x06status\x18\x05 \x01(\x0e\x32\x15.pbnetwork.StatusType\x12\x15\n\rstatusMessage\x18\x06 \x01(\t\x12\x10\n\x08iconHash\x18\x07 \x01(\t\x12\x0f\n\x07\x62locked\x18\x08 \x01(\x08\"\xa9\x01\n\x13\x43onversationMessage\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\x0f\n\x07message\x18\x03 \x02(\t\x12\x10\n\x08nickname\x18\x04 \x01(\t\x12\r\n\x05xhtml\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\t\x12\x10\n\x08headline\x18\x07 \x01(\x08\x12\n\n\x02id\x18\x08 \x01(\t\x12\n\n\x02pm\x18\t \x01(\x08\"J\n\x04Room\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x10\n\x08nickname\x18\x02 \x02(\t\x12\x0c\n\x04room\x18\x03 \x02(\t\x12\x10\n\x08password\x18\x04 \x01(\t\"&\n\x08RoomList\x12\x0c\n\x04room\x18\x01 \x03(\t\x12\x0c\n\x04name\x18\x02 \x03(\t\"\x9c\x01\n\x0bParticipant\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x0c\n\x04room\x18\x02 \x02(\t\x12\x10\n\x08nickname\x18\x03 \x02(\t\x12\x0c\n\x04\x66lag\x18\x04 \x02(\x05\x12%\n\x06status\x18\x05 \x02(\x0e\x32\x15.pbnetwork.StatusType\x12\x15\n\rstatusMessage\x18\x06 \x01(\t\x12\x0f\n\x07newname\x18\x07 \x01(\t\"k\n\x05VCard\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\n\n\x02id\x18\x03 \x02(\x05\x12\x10\n\x08\x66ullname\x18\x04 \x01(\t\x12\x10\n\x08nickname\x18\x05 \x01(\t\x12\r\n\x05photo\x18\x06 \x01(\x0c\"X\n\x06Status\x12\x10\n\x08userName\x18\x01 \x02(\t\x12%\n\x06status\x18\x03 \x02(\x0e\x32\x15.pbnetwork.StatusType\x12\x15\n\rstatusMessage\x18\x04 \x01(\t\"B\n\x05Stats\x12\x0b\n\x03res\x18\x01 \x02(\x05\x12\x10\n\x08init_res\x18\x02 \x02(\x05\x12\x0e\n\x06shared\x18\x03 \x02(\x05\x12\n\n\x02id\x18\x04 \x02(\t\"Y\n\x04\x46ile\x12\x10\n\x08userName\x18\x01 \x02(\t\x12\x11\n\tbuddyName\x18\x02 \x02(\t\x12\x10\n\x08\x66ileName\x18\x03 \x02(\t\x12\x0c\n\x04size\x18\x04 \x02(\x05\x12\x0c\n\x04\x66tID\x18\x05 \x01(\x05\".\n\x10\x46ileTransferData\x12\x0c\n\x04\x66tID\x18\x01 \x02(\x05\x12\x0c\n\x04\x64\x61ta\x18\x02 \x02(\x0c\"\x1f\n\rBackendConfig\x12\x0e\n\x06\x63onfig\x18\x01 \x02(\t\"\x9a\x06\n\x0eWrapperMessage\x12,\n\x04type\x18\x01 \x02(\x0e\x32\x1e.pbnetwork.WrapperMessage.Type\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\"\xc8\x05\n\x04Type\x12\x12\n\x0eTYPE_CONNECTED\x10\x01\x12\x15\n\x11TYPE_DISCONNECTED\x10\x02\x12\x0e\n\nTYPE_LOGIN\x10\x03\x12\x0f\n\x0bTYPE_LOGOUT\x10\x04\x12\x16\n\x12TYPE_BUDDY_CHANGED\x10\x06\x12\x16\n\x12TYPE_BUDDY_REMOVED\x10\x07\x12\x15\n\x11TYPE_CONV_MESSAGE\x10\x08\x12\r\n\tTYPE_PING\x10\t\x12\r\n\tTYPE_PONG\x10\n\x12\x12\n\x0eTYPE_JOIN_ROOM\x10\x0b\x12\x13\n\x0fTYPE_LEAVE_ROOM\x10\x0c\x12\x1c\n\x18TYPE_PARTICIPANT_CHANGED\x10\r\x12\x1e\n\x1aTYPE_ROOM_NICKNAME_CHANGED\x10\x0e\x12\x1d\n\x19TYPE_ROOM_SUBJECT_CHANGED\x10\x0f\x12\x0e\n\nTYPE_VCARD\x10\x10\x12\x17\n\x13TYPE_STATUS_CHANGED\x10\x11\x12\x15\n\x11TYPE_BUDDY_TYPING\x10\x12\x12\x1d\n\x19TYPE_BUDDY_STOPPED_TYPING\x10\x13\x12\x14\n\x10TYPE_BUDDY_TYPED\x10\x14\x12\x15\n\x11TYPE_AUTH_REQUEST\x10\x15\x12\x12\n\x0eTYPE_ATTENTION\x10\x16\x12\x0e\n\nTYPE_STATS\x10\x17\x12\x11\n\rTYPE_FT_START\x10\x18\x12\x12\n\x0eTYPE_FT_FINISH\x10\x19\x12\x10\n\x0cTYPE_FT_DATA\x10\x1a\x12\x11\n\rTYPE_FT_PAUSE\x10\x1b\x12\x14\n\x10TYPE_FT_CONTINUE\x10\x1c\x12\r\n\tTYPE_EXIT\x10\x1d\x12\x17\n\x13TYPE_BACKEND_CONFIG\x10\x1e\x12\x0e\n\nTYPE_QUERY\x10\x1f\x12\x12\n\x0eTYPE_ROOM_LIST\x10 \x12\x19\n\x15TYPE_CONV_MESSAGE_ACK\x10!\x12\x10\n\x0cTYPE_RAW_XML\x10\"*\xb3\x05\n\x0f\x43onnectionError\x12\"\n\x1e\x43ONNECTION_ERROR_NETWORK_ERROR\x10\x00\x12%\n!CONNECTION_ERROR_INVALID_USERNAME\x10\x01\x12*\n&CONNECTION_ERROR_AUTHENTICATION_FAILED\x10\x02\x12.\n*CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE\x10\x03\x12#\n\x1f\x43ONNECTION_ERROR_NO_SSL_SUPPORT\x10\x04\x12%\n!CONNECTION_ERROR_ENCRYPTION_ERROR\x10\x05\x12 \n\x1c\x43ONNECTION_ERROR_NAME_IN_USE\x10\x06\x12%\n!CONNECTION_ERROR_INVALID_SETTINGS\x10\x07\x12&\n\"CONNECTION_ERROR_CERT_NOT_PROVIDED\x10\x08\x12#\n\x1f\x43ONNECTION_ERROR_CERT_UNTRUSTED\x10\t\x12!\n\x1d\x43ONNECTION_ERROR_CERT_EXPIRED\x10\n\x12\'\n#CONNECTION_ERROR_CERT_NOT_ACTIVATED\x10\x0b\x12+\n\'CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH\x10\x0c\x12.\n*CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH\x10\r\x12%\n!CONNECTION_ERROR_CERT_SELF_SIGNED\x10\x0e\x12%\n!CONNECTION_ERROR_CERT_OTHER_ERROR\x10\x0f\x12 \n\x1c\x43ONNECTION_ERROR_OTHER_ERROR\x10\x10*\x86\x01\n\nStatusType\x12\x11\n\rSTATUS_ONLINE\x10\x00\x12\x0f\n\x0bSTATUS_AWAY\x10\x01\x12\x0e\n\nSTATUS_FFC\x10\x02\x12\r\n\tSTATUS_XA\x10\x03\x12\x0e\n\nSTATUS_DND\x10\x04\x12\x0f\n\x0bSTATUS_NONE\x10\x05\x12\x14\n\x10STATUS_INVISIBLE\x10\x06*\x88\x02\n\x0fParticipantFlag\x12\x19\n\x15PARTICIPANT_FLAG_NONE\x10\x00\x12\x1e\n\x1aPARTICIPANT_FLAG_MODERATOR\x10\x01\x12\x1d\n\x19PARTICIPANT_FLAG_CONFLICT\x10\x02\x12\x1b\n\x17PARTICIPANT_FLAG_BANNED\x10\x04\x12#\n\x1fPARTICIPANT_FLAG_NOT_AUTHORIZED\x10\x08\x12\x17\n\x13PARTICIPANT_FLAG_ME\x10\x10\x12\x1b\n\x17PARTICIPANT_FLAG_KICKED\x10 \x12#\n\x1fPARTICIPANT_FLAG_ROOM_NOT_FOUND\x10@')
+)
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-_CONNECTIONERROR = descriptor.EnumDescriptor(
+_CONNECTIONERROR = _descriptor.EnumDescriptor(
name='ConnectionError',
full_name='pbnetwork.ConnectionError',
filename=None,
file=DESCRIPTOR,
values=[
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_NETWORK_ERROR', index=0, number=0,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_INVALID_USERNAME', index=1, number=1,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_AUTHENTICATION_FAILED', index=2, number=2,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE', index=3, number=3,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_NO_SSL_SUPPORT', index=4, number=4,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_ENCRYPTION_ERROR', index=5, number=5,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_NAME_IN_USE', index=6, number=6,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_INVALID_SETTINGS', index=7, number=7,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_NOT_PROVIDED', index=8, number=8,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_UNTRUSTED', index=9, number=9,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_EXPIRED', index=10, number=10,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_NOT_ACTIVATED', index=11, number=11,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH', index=12, number=12,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH', index=13, number=13,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_SELF_SIGNED', index=14, number=14,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_CERT_OTHER_ERROR', index=15, number=15,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='CONNECTION_ERROR_OTHER_ERROR', index=16, number=16,
options=None,
type=None),
@@ -92,39 +103,40 @@ _CONNECTIONERROR = descriptor.EnumDescriptor(
serialized_start=2102,
serialized_end=2793,
)
+_sym_db.RegisterEnumDescriptor(_CONNECTIONERROR)
-
-_STATUSTYPE = descriptor.EnumDescriptor(
+ConnectionError = enum_type_wrapper.EnumTypeWrapper(_CONNECTIONERROR)
+_STATUSTYPE = _descriptor.EnumDescriptor(
name='StatusType',
full_name='pbnetwork.StatusType',
filename=None,
file=DESCRIPTOR,
values=[
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='STATUS_ONLINE', index=0, number=0,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='STATUS_AWAY', index=1, number=1,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='STATUS_FFC', index=2, number=2,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='STATUS_XA', index=3, number=3,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='STATUS_DND', index=4, number=4,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='STATUS_NONE', index=5, number=5,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='STATUS_INVISIBLE', index=6, number=6,
options=None,
type=None),
@@ -134,43 +146,44 @@ _STATUSTYPE = descriptor.EnumDescriptor(
serialized_start=2796,
serialized_end=2930,
)
+_sym_db.RegisterEnumDescriptor(_STATUSTYPE)
-
-_PARTICIPANTFLAG = descriptor.EnumDescriptor(
+StatusType = enum_type_wrapper.EnumTypeWrapper(_STATUSTYPE)
+_PARTICIPANTFLAG = _descriptor.EnumDescriptor(
name='ParticipantFlag',
full_name='pbnetwork.ParticipantFlag',
filename=None,
file=DESCRIPTOR,
values=[
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_NONE', index=0, number=0,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_MODERATOR', index=1, number=1,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_CONFLICT', index=2, number=2,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_BANNED', index=3, number=4,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_NOT_AUTHORIZED', index=4, number=8,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_ME', index=5, number=16,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_KICKED', index=6, number=32,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='PARTICIPANT_FLAG_ROOM_NOT_FOUND', index=7, number=64,
options=None,
type=None),
@@ -180,8 +193,9 @@ _PARTICIPANTFLAG = descriptor.EnumDescriptor(
serialized_start=2933,
serialized_end=3197,
)
+_sym_db.RegisterEnumDescriptor(_PARTICIPANTFLAG)
-
+ParticipantFlag = enum_type_wrapper.EnumTypeWrapper(_PARTICIPANTFLAG)
CONNECTION_ERROR_NETWORK_ERROR = 0
CONNECTION_ERROR_INVALID_USERNAME = 1
CONNECTION_ERROR_AUTHENTICATION_FAILED = 2
@@ -216,141 +230,141 @@ PARTICIPANT_FLAG_KICKED = 32
PARTICIPANT_FLAG_ROOM_NOT_FOUND = 64
-_WRAPPERMESSAGE_TYPE = descriptor.EnumDescriptor(
+_WRAPPERMESSAGE_TYPE = _descriptor.EnumDescriptor(
name='Type',
full_name='pbnetwork.WrapperMessage.Type',
filename=None,
file=DESCRIPTOR,
values=[
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_CONNECTED', index=0, number=1,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_DISCONNECTED', index=1, number=2,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_LOGIN', index=2, number=3,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_LOGOUT', index=3, number=4,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_BUDDY_CHANGED', index=4, number=6,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_BUDDY_REMOVED', index=5, number=7,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_CONV_MESSAGE', index=6, number=8,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_PING', index=7, number=9,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_PONG', index=8, number=10,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_JOIN_ROOM', index=9, number=11,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_LEAVE_ROOM', index=10, number=12,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_PARTICIPANT_CHANGED', index=11, number=13,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_ROOM_NICKNAME_CHANGED', index=12, number=14,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_ROOM_SUBJECT_CHANGED', index=13, number=15,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_VCARD', index=14, number=16,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_STATUS_CHANGED', index=15, number=17,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_BUDDY_TYPING', index=16, number=18,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_BUDDY_STOPPED_TYPING', index=17, number=19,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_BUDDY_TYPED', index=18, number=20,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_AUTH_REQUEST', index=19, number=21,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_ATTENTION', index=20, number=22,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_STATS', index=21, number=23,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_FT_START', index=22, number=24,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_FT_FINISH', index=23, number=25,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_FT_DATA', index=24, number=26,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_FT_PAUSE', index=25, number=27,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_FT_CONTINUE', index=26, number=28,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_EXIT', index=27, number=29,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_BACKEND_CONFIG', index=28, number=30,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_QUERY', index=29, number=31,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_ROOM_LIST', index=30, number=32,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_CONV_MESSAGE_ACK', index=31, number=33,
options=None,
type=None),
- descriptor.EnumValueDescriptor(
+ _descriptor.EnumValueDescriptor(
name='TYPE_RAW_XML', index=32, number=34,
options=None,
type=None),
@@ -360,19 +374,20 @@ _WRAPPERMESSAGE_TYPE = descriptor.EnumDescriptor(
serialized_start=1387,
serialized_end=2099,
)
+_sym_db.RegisterEnumDescriptor(_WRAPPERMESSAGE_TYPE)
-_CONNECTED = descriptor.Descriptor(
+_CONNECTED = _descriptor.Descriptor(
name='Connected',
full_name='pbnetwork.Connected',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='user', full_name='pbnetwork.Connected.user', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -385,36 +400,38 @@ _CONNECTED = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=29,
serialized_end=54,
)
-_DISCONNECTED = descriptor.Descriptor(
+_DISCONNECTED = _descriptor.Descriptor(
name='Disconnected',
full_name='pbnetwork.Disconnected',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='user', full_name='pbnetwork.Disconnected.user', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='error', full_name='pbnetwork.Disconnected.error', index=1,
number=2, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='message', full_name='pbnetwork.Disconnected.message', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -427,40 +444,42 @@ _DISCONNECTED = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=56,
serialized_end=116,
)
-_LOGIN = descriptor.Descriptor(
+_LOGIN = _descriptor.Descriptor(
name='Login',
full_name='pbnetwork.Login',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='user', full_name='pbnetwork.Login.user', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='legacyName', full_name='pbnetwork.Login.legacyName', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='password', full_name='pbnetwork.Login.password', index=2,
number=3, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='extraFields', full_name='pbnetwork.Login.extraFields', index=3,
number=4, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
@@ -476,29 +495,31 @@ _LOGIN = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=118,
serialized_end=198,
)
-_LOGOUT = descriptor.Descriptor(
+_LOGOUT = _descriptor.Descriptor(
name='Logout',
full_name='pbnetwork.Logout',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='user', full_name='pbnetwork.Logout.user', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='legacyName', full_name='pbnetwork.Logout.legacyName', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -511,68 +532,70 @@ _LOGOUT = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=200,
serialized_end=242,
)
-_BUDDY = descriptor.Descriptor(
+_BUDDY = _descriptor.Descriptor(
name='Buddy',
full_name='pbnetwork.Buddy',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='userName', full_name='pbnetwork.Buddy.userName', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='buddyName', full_name='pbnetwork.Buddy.buddyName', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='alias', full_name='pbnetwork.Buddy.alias', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='group', full_name='pbnetwork.Buddy.group', index=3,
number=4, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='status', full_name='pbnetwork.Buddy.status', index=4,
number=5, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='statusMessage', full_name='pbnetwork.Buddy.statusMessage', index=5,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='iconHash', full_name='pbnetwork.Buddy.iconHash', index=6,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='blocked', full_name='pbnetwork.Buddy.blocked', index=7,
number=8, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
@@ -588,75 +611,77 @@ _BUDDY = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=245,
serialized_end=416,
)
-_CONVERSATIONMESSAGE = descriptor.Descriptor(
+_CONVERSATIONMESSAGE = _descriptor.Descriptor(
name='ConversationMessage',
full_name='pbnetwork.ConversationMessage',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='userName', full_name='pbnetwork.ConversationMessage.userName', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='buddyName', full_name='pbnetwork.ConversationMessage.buddyName', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='message', full_name='pbnetwork.ConversationMessage.message', index=2,
number=3, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='nickname', full_name='pbnetwork.ConversationMessage.nickname', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='xhtml', full_name='pbnetwork.ConversationMessage.xhtml', index=4,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='timestamp', full_name='pbnetwork.ConversationMessage.timestamp', index=5,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='headline', full_name='pbnetwork.ConversationMessage.headline', index=6,
number=7, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='id', full_name='pbnetwork.ConversationMessage.id', index=7,
number=8, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='pm', full_name='pbnetwork.ConversationMessage.pm', index=8,
number=9, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
@@ -672,43 +697,45 @@ _CONVERSATIONMESSAGE = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=419,
serialized_end=588,
)
-_ROOM = descriptor.Descriptor(
+_ROOM = _descriptor.Descriptor(
name='Room',
full_name='pbnetwork.Room',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='userName', full_name='pbnetwork.Room.userName', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='nickname', full_name='pbnetwork.Room.nickname', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='room', full_name='pbnetwork.Room.room', index=2,
number=3, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='password', full_name='pbnetwork.Room.password', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -721,26 +748,28 @@ _ROOM = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=590,
serialized_end=664,
)
-_ROOMLIST = descriptor.Descriptor(
+_ROOMLIST = _descriptor.Descriptor(
name='RoomList',
full_name='pbnetwork.RoomList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='room', full_name='pbnetwork.RoomList.room', index=0,
number=1, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='name', full_name='pbnetwork.RoomList.name', index=1,
number=2, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
@@ -756,64 +785,66 @@ _ROOMLIST = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=666,
serialized_end=704,
)
-_PARTICIPANT = descriptor.Descriptor(
+_PARTICIPANT = _descriptor.Descriptor(
name='Participant',
full_name='pbnetwork.Participant',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='userName', full_name='pbnetwork.Participant.userName', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='room', full_name='pbnetwork.Participant.room', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='nickname', full_name='pbnetwork.Participant.nickname', index=2,
number=3, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='flag', full_name='pbnetwork.Participant.flag', index=3,
number=4, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='status', full_name='pbnetwork.Participant.status', index=4,
number=5, type=14, cpp_type=8, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='statusMessage', full_name='pbnetwork.Participant.statusMessage', index=5,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='newname', full_name='pbnetwork.Participant.newname', index=6,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -826,57 +857,59 @@ _PARTICIPANT = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=707,
serialized_end=863,
)
-_VCARD = descriptor.Descriptor(
+_VCARD = _descriptor.Descriptor(
name='VCard',
full_name='pbnetwork.VCard',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='userName', full_name='pbnetwork.VCard.userName', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='buddyName', full_name='pbnetwork.VCard.buddyName', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='id', full_name='pbnetwork.VCard.id', index=2,
number=3, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='fullname', full_name='pbnetwork.VCard.fullname', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='nickname', full_name='pbnetwork.VCard.nickname', index=4,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='photo', full_name='pbnetwork.VCard.photo', index=5,
number=6, type=12, cpp_type=9, label=1,
- has_default_value=False, default_value="",
+ has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -889,36 +922,38 @@ _VCARD = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=865,
serialized_end=972,
)
-_STATUS = descriptor.Descriptor(
+_STATUS = _descriptor.Descriptor(
name='Status',
full_name='pbnetwork.Status',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='userName', full_name='pbnetwork.Status.userName', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='status', full_name='pbnetwork.Status.status', index=1,
number=3, type=14, cpp_type=8, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='statusMessage', full_name='pbnetwork.Status.statusMessage', index=2,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -931,43 +966,45 @@ _STATUS = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=974,
serialized_end=1062,
)
-_STATS = descriptor.Descriptor(
+_STATS = _descriptor.Descriptor(
name='Stats',
full_name='pbnetwork.Stats',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='res', full_name='pbnetwork.Stats.res', index=0,
number=1, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='init_res', full_name='pbnetwork.Stats.init_res', index=1,
number=2, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='shared', full_name='pbnetwork.Stats.shared', index=2,
number=3, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='id', full_name='pbnetwork.Stats.id', index=3,
number=4, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -980,47 +1017,49 @@ _STATS = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=1064,
serialized_end=1130,
)
-_FILE = descriptor.Descriptor(
+_FILE = _descriptor.Descriptor(
name='File',
full_name='pbnetwork.File',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='userName', full_name='pbnetwork.File.userName', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='buddyName', full_name='pbnetwork.File.buddyName', index=1,
number=2, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='fileName', full_name='pbnetwork.File.fileName', index=2,
number=3, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='size', full_name='pbnetwork.File.size', index=3,
number=4, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='ftID', full_name='pbnetwork.File.ftID', index=4,
number=5, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
@@ -1036,29 +1075,31 @@ _FILE = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=1132,
serialized_end=1221,
)
-_FILETRANSFERDATA = descriptor.Descriptor(
+_FILETRANSFERDATA = _descriptor.Descriptor(
name='FileTransferData',
full_name='pbnetwork.FileTransferData',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='ftID', full_name='pbnetwork.FileTransferData.ftID', index=0,
number=1, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='data', full_name='pbnetwork.FileTransferData.data', index=1,
number=2, type=12, cpp_type=9, label=2,
- has_default_value=False, default_value="",
+ has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -1071,22 +1112,24 @@ _FILETRANSFERDATA = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=1223,
serialized_end=1269,
)
-_BACKENDCONFIG = descriptor.Descriptor(
+_BACKENDCONFIG = _descriptor.Descriptor(
name='BackendConfig',
full_name='pbnetwork.BackendConfig',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='config', full_name='pbnetwork.BackendConfig.config', index=0,
number=1, type=9, cpp_type=9, label=2,
- has_default_value=False, default_value=unicode("", "utf-8"),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -1099,29 +1142,31 @@ _BACKENDCONFIG = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=1271,
serialized_end=1302,
)
-_WRAPPERMESSAGE = descriptor.Descriptor(
+_WRAPPERMESSAGE = _descriptor.Descriptor(
name='WrapperMessage',
full_name='pbnetwork.WrapperMessage',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='type', full_name='pbnetwork.WrapperMessage.type', index=0,
number=1, type=14, cpp_type=8, label=2,
has_default_value=False, default_value=1,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
- descriptor.FieldDescriptor(
+ _descriptor.FieldDescriptor(
name='payload', full_name='pbnetwork.WrapperMessage.payload', index=1,
number=2, type=12, cpp_type=9, label=1,
- has_default_value=False, default_value="",
+ has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -1135,111 +1180,148 @@ _WRAPPERMESSAGE = descriptor.Descriptor(
options=None,
is_extendable=False,
extension_ranges=[],
+ oneofs=[
+ ],
serialized_start=1305,
serialized_end=2099,
)
-
_BUDDY.fields_by_name['status'].enum_type = _STATUSTYPE
_PARTICIPANT.fields_by_name['status'].enum_type = _STATUSTYPE
_STATUS.fields_by_name['status'].enum_type = _STATUSTYPE
_WRAPPERMESSAGE.fields_by_name['type'].enum_type = _WRAPPERMESSAGE_TYPE
-_WRAPPERMESSAGE_TYPE.containing_type = _WRAPPERMESSAGE;
+_WRAPPERMESSAGE_TYPE.containing_type = _WRAPPERMESSAGE
+DESCRIPTOR.message_types_by_name['Connected'] = _CONNECTED
+DESCRIPTOR.message_types_by_name['Disconnected'] = _DISCONNECTED
+DESCRIPTOR.message_types_by_name['Login'] = _LOGIN
+DESCRIPTOR.message_types_by_name['Logout'] = _LOGOUT
+DESCRIPTOR.message_types_by_name['Buddy'] = _BUDDY
+DESCRIPTOR.message_types_by_name['ConversationMessage'] = _CONVERSATIONMESSAGE
+DESCRIPTOR.message_types_by_name['Room'] = _ROOM
+DESCRIPTOR.message_types_by_name['RoomList'] = _ROOMLIST
+DESCRIPTOR.message_types_by_name['Participant'] = _PARTICIPANT
+DESCRIPTOR.message_types_by_name['VCard'] = _VCARD
+DESCRIPTOR.message_types_by_name['Status'] = _STATUS
+DESCRIPTOR.message_types_by_name['Stats'] = _STATS
+DESCRIPTOR.message_types_by_name['File'] = _FILE
+DESCRIPTOR.message_types_by_name['FileTransferData'] = _FILETRANSFERDATA
+DESCRIPTOR.message_types_by_name['BackendConfig'] = _BACKENDCONFIG
+DESCRIPTOR.message_types_by_name['WrapperMessage'] = _WRAPPERMESSAGE
+DESCRIPTOR.enum_types_by_name['ConnectionError'] = _CONNECTIONERROR
+DESCRIPTOR.enum_types_by_name['StatusType'] = _STATUSTYPE
+DESCRIPTOR.enum_types_by_name['ParticipantFlag'] = _PARTICIPANTFLAG
-class Connected(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _CONNECTED
-
+Connected = _reflection.GeneratedProtocolMessageType('Connected', (_message.Message,), dict(
+ DESCRIPTOR = _CONNECTED,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Connected)
+ ))
+_sym_db.RegisterMessage(Connected)
-class Disconnected(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _DISCONNECTED
-
+Disconnected = _reflection.GeneratedProtocolMessageType('Disconnected', (_message.Message,), dict(
+ DESCRIPTOR = _DISCONNECTED,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Disconnected)
+ ))
+_sym_db.RegisterMessage(Disconnected)
-class Login(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _LOGIN
-
+Login = _reflection.GeneratedProtocolMessageType('Login', (_message.Message,), dict(
+ DESCRIPTOR = _LOGIN,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Login)
+ ))
+_sym_db.RegisterMessage(Login)
-class Logout(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _LOGOUT
-
+Logout = _reflection.GeneratedProtocolMessageType('Logout', (_message.Message,), dict(
+ DESCRIPTOR = _LOGOUT,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Logout)
+ ))
+_sym_db.RegisterMessage(Logout)
-class Buddy(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _BUDDY
-
+Buddy = _reflection.GeneratedProtocolMessageType('Buddy', (_message.Message,), dict(
+ DESCRIPTOR = _BUDDY,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Buddy)
+ ))
+_sym_db.RegisterMessage(Buddy)
-class ConversationMessage(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _CONVERSATIONMESSAGE
-
+ConversationMessage = _reflection.GeneratedProtocolMessageType('ConversationMessage', (_message.Message,), dict(
+ DESCRIPTOR = _CONVERSATIONMESSAGE,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.ConversationMessage)
+ ))
+_sym_db.RegisterMessage(ConversationMessage)
-class Room(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _ROOM
-
+Room = _reflection.GeneratedProtocolMessageType('Room', (_message.Message,), dict(
+ DESCRIPTOR = _ROOM,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Room)
+ ))
+_sym_db.RegisterMessage(Room)
-class RoomList(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _ROOMLIST
-
+RoomList = _reflection.GeneratedProtocolMessageType('RoomList', (_message.Message,), dict(
+ DESCRIPTOR = _ROOMLIST,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.RoomList)
+ ))
+_sym_db.RegisterMessage(RoomList)
-class Participant(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _PARTICIPANT
-
+Participant = _reflection.GeneratedProtocolMessageType('Participant', (_message.Message,), dict(
+ DESCRIPTOR = _PARTICIPANT,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Participant)
+ ))
+_sym_db.RegisterMessage(Participant)
-class VCard(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _VCARD
-
+VCard = _reflection.GeneratedProtocolMessageType('VCard', (_message.Message,), dict(
+ DESCRIPTOR = _VCARD,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.VCard)
+ ))
+_sym_db.RegisterMessage(VCard)
-class Status(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _STATUS
-
+Status = _reflection.GeneratedProtocolMessageType('Status', (_message.Message,), dict(
+ DESCRIPTOR = _STATUS,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Status)
+ ))
+_sym_db.RegisterMessage(Status)
-class Stats(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _STATS
-
+Stats = _reflection.GeneratedProtocolMessageType('Stats', (_message.Message,), dict(
+ DESCRIPTOR = _STATS,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.Stats)
+ ))
+_sym_db.RegisterMessage(Stats)
-class File(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _FILE
-
+File = _reflection.GeneratedProtocolMessageType('File', (_message.Message,), dict(
+ DESCRIPTOR = _FILE,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.File)
+ ))
+_sym_db.RegisterMessage(File)
-class FileTransferData(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _FILETRANSFERDATA
-
+FileTransferData = _reflection.GeneratedProtocolMessageType('FileTransferData', (_message.Message,), dict(
+ DESCRIPTOR = _FILETRANSFERDATA,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.FileTransferData)
+ ))
+_sym_db.RegisterMessage(FileTransferData)
-class BackendConfig(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _BACKENDCONFIG
-
+BackendConfig = _reflection.GeneratedProtocolMessageType('BackendConfig', (_message.Message,), dict(
+ DESCRIPTOR = _BACKENDCONFIG,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.BackendConfig)
+ ))
+_sym_db.RegisterMessage(BackendConfig)
-class WrapperMessage(message.Message):
- __metaclass__ = reflection.GeneratedProtocolMessageType
- DESCRIPTOR = _WRAPPERMESSAGE
-
+WrapperMessage = _reflection.GeneratedProtocolMessageType('WrapperMessage', (_message.Message,), dict(
+ DESCRIPTOR = _WRAPPERMESSAGE,
+ __module__ = 'protocol_pb2'
# @@protoc_insertion_point(class_scope:pbnetwork.WrapperMessage)
+ ))
+_sym_db.RegisterMessage(WrapperMessage)
+
# @@protoc_insertion_point(module_scope)
diff --git a/bot.py b/bot.py
index 8712d91..aa9bd35 100644
--- a/bot.py
+++ b/bot.py
@@ -31,7 +31,6 @@ import os
import utils
from constants import *
-#from googleclient import GoogleClient
from Yowsup.Contacts.contacts import WAContactsSyncRequest
@@ -40,10 +39,7 @@ class Bot():
self.session = session
self.name = name
- # self.google = GoogleClient()
-
self.commands = {
-# "import": self._import,
"help": self._help,
"prune": self._prune,
"welcome": self._welcome,
@@ -79,41 +75,6 @@ class Bot():
def send(self, message):
self.session.backend.handleMessage(self.session.user, self.name, message)
-# def __do_import(self, token):
-# # Google
-# google = self.google.getContacts(token)
-# self.send("%d buddies imported from google" % len(google))
-#
-# result = { }
-# for number, name in google.iteritems():
-# number = re.sub("[^0-9]", "", number)
-# number = number if number[0] == "0" else "+" + number
-#
-# result[number] = { 'nick': name, 'state': 0 }
-#
-# # WhatsApp
-# user = self.session.legacyName
-# password = self.session.password
-# sync = WAContactsSyncRequest(user, password, result.keys())
-# whatsapp = sync.send()['c']
-#
-# for w in whatsapp:
-# result[w['p']]['state'] = w['w']
-# result[w['p']]['number'] = w['n']
-#
-# self.send("%d buddies are using whatsapp" % len(filter(lambda w: w['w'], whatsapp)))
-#
-# for r in result.values():
-# if r['nick']:
-# self.session.buddies.add(
-# number = r['number'],
-# nick = r['nick'],
-# groups = [u'Google'],
-# state = r['state']
-# )
-#
-# self.send("%d buddies imported" % len(whatsapp))
-
def __get_token(self, filename, timeout = 30):
file = open(filename, 'r')
file.seek(-1, 2) # look at the end
@@ -135,25 +96,6 @@ class Bot():
file.close()
# commands
-# def _import(self, token = None):
-# if not token:
-# token_url = self.google.getTokenUrl("http://whatsapp.0l.de/auth.py")
-# auth_url = "http://whatsapp.0l.de/auth.py?number=%s&auth_url=%s" % (self.session.legacyName, urllib.quote(token_url))
-# short_url = utils.shorten(auth_url)
-# self.send("please visit this url to auth: %s" % short_url)
-#
-# self.send("waiting for authorization...")
-# token = self.__get_token(TOKEN_FILE)
-# if token:
-# self.send("got token: %s" % token)
-# self.__do_import(token)
-# self.session.updateRoster()
-# else:
-# self.send("timeout! please use \"\\import [token]\"")
-# else:
-# self.__do_import(token)
-# self.session.updateRoster()
-
def _sync(self):
user = self.session.legacyName
password = self.session.password
@@ -170,7 +112,6 @@ class Bot():
self.send("""following bot commands are available:
\\help show this message
\\prune clear your buddylist
-\\import [token] import buddies from Google
\\sync sync your imported contacts with WhatsApp
\\fortune [database] give me a quote
diff --git a/buddy.py b/buddy.py
index 8338c11..e07ec46 100644
--- a/buddy.py
+++ b/buddy.py
@@ -23,7 +23,6 @@ __status__ = "Prototype"
"""
from Spectrum2 import protocol_pb2
-from Yowsup.Contacts.contacts import WAContactsSyncRequest
import logging
@@ -48,7 +47,7 @@ class Number():
class Buddy():
- def __init__(self, owner, number, nick, groups, id, db):
+ def __init__(self, owner, number, nick, groups, image_hash, id, db):
self.id = id
self.db = db
@@ -56,14 +55,17 @@ class Buddy():
self.owner = owner
self.number = number
self.groups = groups
+ self.image_hash = image_hash
- def update(self, nick, groups):
+ def update(self, nick, groups, image_hash):
self.nick = nick
self.groups = groups
+ if image_hash is not None:
+ self.image_hash = image_hash
groups = u",".join(groups).encode("latin-1")
cur = self.db.cursor()
- cur.execute("UPDATE buddies SET nick = %s, groups = %s WHERE owner_id = %s AND buddy_id = %s", (self.nick, groups, self.owner.id, self.number.id))
+ cur.execute("UPDATE buddies SET nick = %s, groups = %s, image_hash = %s WHERE owner_id = %s AND buddy_id = %s", (self.nick, groups, image_hash, self.owner.id, self.number.id))
self.db.commit()
def delete(self):
@@ -73,13 +75,13 @@ class Buddy():
self.id = None
@staticmethod
- def create(owner, number, nick, groups, db):
+ def create(owner, number, nick, groups, image_hash, db):
groups = u",".join(groups).encode("latin-1")
cur = db.cursor()
- cur.execute("REPLACE buddies (owner_id, buddy_id, nick, groups) VALUES (%s, %s, %s, %s)", (owner.id, number.id, nick, groups))
+ cur.execute("REPLACE buddies (owner_id, buddy_id, nick, groups, image_hash) VALUES (%s, %s, %s, %s, %s)", (owner.id, number.id, nick, groups, image_hash))
db.commit()
- return Buddy(owner, number, nick, groups, cur.lastrowid, db)
+ return Buddy(owner, number, nick, groups, image_hash, cur.lastrowid, db)
def __str__(self):
return "%s (nick=%s, id=%s)" % (self.number, self.nick, self.id)
@@ -99,7 +101,8 @@ class BuddyList(dict):
n.number AS number,
b.nick AS nick,
b.groups AS groups,
- n.state AS state
+ n.state AS state,
+ b.image_hash AS image_hash
FROM buddies AS b
LEFT JOIN numbers AS n
ON b.buddy_id = n.id
@@ -109,26 +112,28 @@ class BuddyList(dict):
ORDER BY b.owner_id DESC""", self.owner.id)
for i in range(cur.rowcount):
- id, number, nick, groups, state = cur.fetchone()
- self[number] = Buddy(self.owner, Number(number, state, self.db), nick.decode('latin1'), groups.split(","), id, self.db)
+ id, number, nick, groups, state, image_hash = cur.fetchone()
+ self[number] = Buddy(self.owner, Number(number, state, self.db), nick.decode('latin1'), groups.split(","), image_hash, id, self.db)
- def update(self, number, nick, groups):
+ def update(self, number, nick, groups, image_hash):
if number in self:
buddy = self[number]
- buddy.update(nick, groups)
+ buddy.update(nick, groups, image_hash)
else:
- buddy = self.add(number, nick, groups, 1)
+ buddy = self.add(number, nick, groups, 1, image_hash)
return buddy
- def add(self, number, nick, groups = [], state = 0):
- return Buddy.create(self.owner, Number(number, state, self.db), nick, groups, self.db)
+ def add(self, number, nick, groups = [], state = 0, image_hash = ""):
+ return Buddy.create(self.owner, Number(number, state, self.db), nick, groups, image_hash, self.db)
def remove(self, number):
- buddy = self[number]
- buddy.delete()
-
- return buddy
+ try:
+ buddy = self[number]
+ buddy.delete()
+ return buddy
+ except KeyError:
+ return None
def prune(self):
cur = self.db.cursor()
diff --git a/cgi/auth.py b/cgi/auth.py
deleted file mode 100755
index 5eeb3c0..0000000
--- a/cgi/auth.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-
-__author__ = "Steffen Vogel"
-__copyright__ = "Copyright 2013, Steffen Vogel"
-__license__ = "GPLv3"
-__maintainer__ = "Steffen Vogel"
-__email__ = "post@steffenvogel.de"
-__status__ = "Prototype"
-
-"""
- This file is part of transWhat
-
- transWhat is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- any later version.
-
- transwhat is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with transWhat. If not, see