コード例 #1
0
    def toProtocolTreeNode(self):
        node = super(ListGroupsResultIqProtocolEntity, self).toProtocolTreeNode()

        groupsNodes = []
        for group in self.groupsList:
            groupNode = ProtocolTreeNode("group", {
                "id":       group.getId(),
                "creator":    group.getCreator(),
                "subject":  group.getSubject(),
                "s_o":      group.getSubjectOwner(),
                "s_t":      str(group.getSubjectTime()),
                "creation": str(group.getCreationTime())
                },
            )
            participants = []
            for jid, _type in group.getParticipants().items():
                pnode = ProtocolTreeNode("participant", {"jid": jid})
                if _type:
                    pnode["type"] = _type
                participants.append(pnode)
            groupNode.addChildren(participants)
            groupsNodes.append(groupNode)

        node.addChild(ProtocolTreeNode("groups", children = groupsNodes))
        return node
コード例 #2
0
ファイル: iq_crypto.py プロジェクト: cinashp/whatsappbot
 def toProtocolTreeNode(self):
     node = super(CryptoIqProtocolEntity, self).toProtocolTreeNode()
     cryptoNode = ProtocolTreeNode("crypto", {"action": "create"})
     googleNode = ProtocolTreeNode("google", data = "fe5cf90c511fb899781bbed754577098e460d048312c8b36c11c91ca4b49ca34".decode('hex'))
     cryptoNode.addChild(googleNode)
     node.addChild(cryptoNode)
     return node
コード例 #3
0
 def toProtocolTreeNode(self):
     node = super(PrivacyListIqProtocolEntity, self).toProtocolTreeNode()
     queryNode = ProtocolTreeNode("query")
     listNode = ProtocolTreeNode("list", {"name": self.listName})
     queryNode.addChild(listNode)
     node.addChild(queryNode)
     return node
コード例 #4
0
 def toProtocolTreeNode(self):
     node = super(SuccessLeaveGroupsIqProtocolEntity, self).\
         toProtocolTreeNode()
     leaveNode = ProtocolTreeNode(
         "leave", {}, [ProtocolTreeNode("group", {"id": self.groupId})])
     node.addChild(leaveNode)
     return node
コード例 #5
0
ファイル: iq_groups_leave.py プロジェクト: zaval/yowsup
 def toProtocolTreeNode(self):
     node = super(LeaveGroupsIqProtocolEntity, self).toProtocolTreeNode()
     leaveNode = ProtocolTreeNode(
         "leave", {},
         [ProtocolTreeNode("group", {"id": jid}) for jid in self.jids])
     node.addChild(leaveNode)
     return node
コード例 #6
0
    def toProtocolTreeNode(self):
        node = super(CreateGroupsNotificationProtocolEntity,
                     self).toProtocolTreeNode()
        createNode = ProtocolTreeNode("create", {
            "type": self.getCreatetype(),
            "key": self.key
        })
        groupNode = ProtocolTreeNode(
            "group", {
                "subject": self.getSubject(),
                "creation": str(self.getCreationTimestamp()),
                "creator": self.getCreatorJid(),
                "s_t": self.getSubjectTimestamp(),
                "s_o": self.getSubjectOwnerJid(),
                "id": self.getGroupId()
            })

        participants = []
        for jid, _type in self.getParticipants().items():
            pnode = ProtocolTreeNode("participant", {"jid": jid})
            if _type:
                pnode["type"] = _type
            participants.append(pnode)

        groupNode.addChildren(participants)
        createNode.addChild(groupNode)
        node.addChild(createNode)

        return node
コード例 #7
0
ファイル: message.py プロジェクト: jonnieluv/yowsup
    def toProtocolTreeNode(self):
        attribs = {
            "type": self._type,
            "id": self._id,
        }

        if not self.isOutgoing():
            attribs["t"] = str(self.timestamp)

        if self.offline is not None:
            attribs["offline"] = "1" if self.offline else "0"

        if self.isOutgoing():
            attribs["to"] = self.to
        else:
            attribs["from"] = self._from

        if self.notify:
            attribs["notify"] = self.notify

        if self.retry:
            attribs["retry"] = str(self.retry)
        if self.participant:
            attribs["participant"] = participant

        xNode = None
        if self.isOutgoing():
            serverNode = ProtocolTreeNode("server", {})
            xNode = ProtocolTreeNode("x", {"xmlns": "jabber:x:event"},
                                     [serverNode])

        return self._createProtocolTreeNode(
            attribs, children=[xNode] if xNode else None, data=None)
コード例 #8
0
 def setUp(self):
     super(BroadcastTextMessageTest, self).setUp()
     self.ProtocolEntity = BroadcastTextMessage
     broadcastNode = ProtocolTreeNode("broadcast")
     jids = ["jid1", "jid2"]
     toNodes = [ProtocolTreeNode("to", {"jid": jid}) for jid in jids]
     broadcastNode.addChildren(toNodes)
     self.node.addChild(broadcastNode)
コード例 #9
0
 def toProtocolTreeNode(self):
     node = super(ListPicturesIqProtocolEntity, self).toProtocolTreeNode()
     userNodes = [
         ProtocolTreeNode("user", {"jid": jid}) for jid in self.jids
     ]
     listNode = ProtocolTreeNode("list", {}, userNodes)
     node.addChild(listNode)
     return node
コード例 #10
0
    def toProtocolTreeNode(self):
        node = super(StreamErrorProtocolEntity, self).toProtocolTreeNode()
        type = self.getErrorType()
        node.addChild(ProtocolTreeNode(type))
        if type == self.__class__.TYPE_CONFLICT and "text" in self.data:
            node.addChild(ProtocolTreeNode("text", data=self.data["text"]))

        return node
コード例 #11
0
 def toProtocolTreeNode(self):
     attribs = {"type": self.type, "v": str(self.version)}
     if self.mediaType:
         attribs["mediatype"] = self.mediaType
     encNode = ProtocolTreeNode("enc", attribs, data=self.data)
     if self.jid:
         return ProtocolTreeNode("to", {"jid": self.jid}, [encNode])
     return encNode
コード例 #12
0
 def toProtocolTreeNode(self):
     node = super(SetPrivacyIqProtocolEntity, self).toProtocolTreeNode()
     queryNode = ProtocolTreeNode(self.__class__.XMLNS)
     for name in self.names:
         listNode = ProtocolTreeNode("category", {"name": name, "value": self.value})
         queryNode.addChild(listNode)
     node.addChild(queryNode)
     return node
コード例 #13
0
    def toProtocolTreeNode(self):
        users = [ProtocolTreeNode("user", {'jid': jid}) for jid in self.jids]

        node = super(GetStatusesIqProtocolEntity, self).toProtocolTreeNode()
        statusNode = ProtocolTreeNode("status", None, users)
        node.addChild(statusNode)

        return node
コード例 #14
0
 def toProtocolTreeNode(self):
     node = super(ParticipantsGroupsIqProtocolEntity,
                  self).toProtocolTreeNode()
     participantNodes = [
         ProtocolTreeNode("participant", {"jid": participant})
         for participant in self.participantList
     ]
     node.addChild(ProtocolTreeNode(self.mode, {}, participantNodes))
     return node
コード例 #15
0
 def toProtocolTreeNode(self):
     node = super(LeaveGroupsIqProtocolEntity, self).toProtocolTreeNode()
     groupNodes = [
         ProtocolTreeNode("group", {"id": groupid})
         for groupid in self.groupList
     ]
     node.addChild(
         ProtocolTreeNode("leave", {"action": "delete"}, groupNodes))
     return node
コード例 #16
0
ファイル: iq_key_get.py プロジェクト: cinashp/whatsappbot
    def toProtocolTreeNode(self):
        node = super(GetKeysIqProtocolEntity, self).toProtocolTreeNode()
        keyNode = ProtocolTreeNode("key")

        for jid in self.getJids():
            userNode = ProtocolTreeNode("user", { "jid": jid })
            keyNode.addChild(userNode)
        node.addChild(keyNode)
        return node
コード例 #17
0
 def handleContactMessage(self, originalEncNode, contactMessage):
     messageNode = copy.deepcopy(originalEncNode)
     messageNode["type"] = "media"
     mediaNode = ProtocolTreeNode("media", {"type": "vcard"}, [
         ProtocolTreeNode("vcard", {"name": contactMessage.display_name},
                          data=contactMessage.vcard)
     ])
     messageNode.addChild(mediaNode)
     self.toUpper(messageNode)
コード例 #18
0
 def toProtocolTreeNode(self):
     node = super(CreateGroupsIqProtocolEntity, self).toProtocolTreeNode()
     cnode = ProtocolTreeNode("create", {"subject": self.subject})
     participantNodes = [
         ProtocolTreeNode("participant", {"jid": participant})
         for participant in self.participantList
     ]
     cnode.addChildren(participantNodes)
     node.addChild(cnode)
     return node
コード例 #19
0
    def test_encode(self):
        node = ProtocolTreeNode("message", {"form": "abc", "to":"xyz"}, [ProtocolTreeNode("media", {"width" : "123"}, data=b"123456")])
        result = self.encoder.protocolTreeNodeToBytes(node)

        self.assertTrue(result in (
            [0, 248, 6, 95, 179, 252, 3, 120, 121, 122, 252, 4, 102, 111, 114, 109, 252, 3, 97, 98, 99, 248, 1, 248, 4, 93,
             236, 104, 255, 130, 18, 63, 252, 6, 49, 50, 51, 52, 53, 54],
            [0, 248, 6, 95, 252, 4, 102, 111, 114, 109, 252, 3, 97, 98, 99, 179, 252, 3, 120, 121, 122, 248, 1, 248, 4, 93,
             236, 104, 255, 130, 18, 63, 252, 6, 49, 50, 51, 52, 53, 54]
            )
        )
コード例 #20
0
ファイル: test_call.py プロジェクト: cinashp/whatsappbot
 def setUp(self):
     self.ProtocolEntity = CallProtocolEntity
     children = [ProtocolTreeNode("offer", {"call-id": "call_id"})]
     attribs = {
         "t": "12345",
         "from": "from_jid",
         "offline": "0",
         "id": "message_id",
         "notify": "notify_name"
     }
     self.node = ProtocolTreeNode("call", attribs, children)
コード例 #21
0
ファイル: test_encoder.py プロジェクト: jacr6/yowsup-tutorial
 def test_encode(self):
     node = ProtocolTreeNode("message", {
         "form": "abc",
         "to": "xyz"
     }, [ProtocolTreeNode("media", {"width": "123"}, data="123456")])
     result = self.encoder.protocolTreeNodeToBytes(node)
     self.assertEqual(result, [
         248, 6, 89, 165, 252, 3, 120, 121, 122, 252, 4, 102, 111, 114, 109,
         252, 3, 97, 98, 99, 248, 1, 248, 4, 87, 236, 99, 252, 3, 49, 50,
         51, 252, 6, 49, 50, 51, 52, 53, 54
     ])
コード例 #22
0
ファイル: test_decoder.py プロジェクト: yakkobr/whatsapp-bot
 def test_decode(self):
     data = bytearray([
         0, 248, 6, 9, 11, 252, 3, 120, 121, 122, 5, 252, 3, 97, 98, 99,
         248, 1, 248, 4, 50, 238, 86, 255, 130, 18, 63, 252, 6, 49, 50, 51,
         52, 53, 54
     ])
     node = self.decoder.getProtocolTreeNode(data)
     targetNode = ProtocolTreeNode("message", {
         "from": "abc",
         "to": "xyz"
     }, [ProtocolTreeNode("media", {"width": "123"}, data=b"123456")])
     self.assertEqual(node, targetNode)
コード例 #23
0
ファイル: iq_key_get.py プロジェクト: yakkobr/whatsapp-bot
    def toProtocolTreeNode(self):
        node = super(GetKeysIqProtocolEntity, self).toProtocolTreeNode()
        keyNode = ProtocolTreeNode("key")

        for jid in self.jids:
            attrs = { "jid": jid }
            if self.reason is not None:
                attrs["reason"] = self.reason
            userNode = ProtocolTreeNode("user", attrs)
            keyNode.addChild(userNode)
        node.addChild(keyNode)
        return node
コード例 #24
0
    def toProtocolTreeNode(self):
        node = super(AddGroupsNotificationProtocolEntity, self).toProtocolTreeNode()
        addNode = ProtocolTreeNode("add")
        participants = []
        for jid in self.getParticipants():
            pnode = ProtocolTreeNode("participant", {"jid": jid})
            participants.append(pnode)

        addNode.addChildren(participants)
        node.addChild(addNode)

        return node
コード例 #25
0
    def toProtocolTreeNode(self):
        node = super().toProtocolTreeNode()
        demoteNode = ProtocolTreeNode("demote", {"subject": self.subject})
        participants = []
        for jid in self.getParticipants():
            pnode = ProtocolTreeNode("participant", {"jid": jid})
            participants.append(pnode)

        demoteNode.addChildren(participants)
        node.addChild(demoteNode)

        return node
コード例 #26
0
 def test_decode(self):
     data = [
         248, 6, 89, 165, 252, 3, 120, 121, 122, 252, 4, 102, 111, 114, 109,
         252, 3, 97, 98, 99, 248, 1, 248, 4, 87, 236, 99, 252, 3, 49, 50,
         51, 252, 6, 49, 50, 51, 52, 53, 54
     ]
     node = self.decoder.getProtocolTreeNode(data)
     targetNode = ProtocolTreeNode("message", {
         "form": "abc",
         "to": "xyz"
     }, [ProtocolTreeNode("media", {"width": "123"}, data="123456")])
     self.assertEqual(node, targetNode)
コード例 #27
0
    def toProtocolTreeNode(self):
        node = super(RemoveGroupsNotificationProtocolEntity,
                     self).toProtocolTreeNode()
        removeNode = ProtocolTreeNode("remove", {"subject": self.subject})
        participants = []
        for jid in self.getParticipants():
            pnode = ProtocolTreeNode("participant", {"jid": jid})
            participants.append(pnode)

        removeNode.addChildren(participants)
        node.addChild(removeNode)

        return node
コード例 #28
0
    def toProtocolTreeNode(self):
        node = super(PictureIqProtocolEntity, self).toProtocolTreeNode()
        attribs = {"type": "image", "id": self.pictureId}

        pictureNode = ProtocolTreeNode("picture", attribs, None,
                                       self.getPictureData())
        previewNode = ProtocolTreeNode("picture", {"type": "preview"}, None,
                                       self.getPreviewData())

        node.addChild(pictureNode)
        node.addChild(previewNode)

        return node
コード例 #29
0
ファイル: test_iq_sync_get.py プロジェクト: vishnuc91/yowsup
    def setUp(self):
        super(GetSyncIqProtocolEntityTest, self).setUp()
        self.ProtocolEntity = GetSyncIqProtocolEntity

        users = [
            ProtocolTreeNode("user", data="abc"),
            ProtocolTreeNode("user", data="xyz")
        ]

        syncNode = self.node.getChild("sync")
        syncNode.setAttribute("mode", GetSyncIqProtocolEntity.MODE_DELTA)
        syncNode.setAttribute("context",
                              GetSyncIqProtocolEntity.CONTEXT_INTERACTIVE)
        syncNode.addChildren(users)
コード例 #30
0
 def toProtocolTreeNode(self):
     node = super(RetryOutgoingReceiptProtocolEntity,
                  self).toProtocolTreeNode()
     node.setAttribute("type", "retry")
     retry = ProtocolTreeNode(
         "retry", {
             "count": str(self.count),
             "t": str(self.t),
             "id": self.getId(),
             "v": str(self.v)
         })
     node.addChild(retry)
     registration = ProtocolTreeNode("registration", data=self.regData)
     node.addChild(registration)
     return node