wnox 0.7.0__py3-none-any.whl → 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wnox/__init__.py +110 -15
- {wnox-0.7.0.dist-info → wnox-0.9.0.dist-info}/METADATA +3 -1
- wnox-0.9.0.dist-info/RECORD +6 -0
- wnox-0.7.0.dist-info/RECORD +0 -6
- {wnox-0.7.0.dist-info → wnox-0.9.0.dist-info}/LICENSE.txt +0 -0
- {wnox-0.7.0.dist-info → wnox-0.9.0.dist-info}/WHEEL +0 -0
- {wnox-0.7.0.dist-info → wnox-0.9.0.dist-info}/top_level.txt +0 -0
wnox/__init__.py
CHANGED
@@ -10,6 +10,10 @@ import requests as r
|
|
10
10
|
|
11
11
|
import random
|
12
12
|
import string
|
13
|
+
from dotenv import load_dotenv
|
14
|
+
import os
|
15
|
+
from pymongo import MongoClient
|
16
|
+
|
13
17
|
|
14
18
|
nest_asyncio.apply()
|
15
19
|
eventdatax = {}
|
@@ -46,6 +50,11 @@ class WSX(ClientXMPP, EventEmitter):
|
|
46
50
|
connected = False
|
47
51
|
def __init__(self, jid, password, app:str, uid:str, resource:str):
|
48
52
|
|
53
|
+
if "-" in app:
|
54
|
+
raise "app should not contain dash '-'"
|
55
|
+
if "-" in resource:
|
56
|
+
raise "resource should not contain dash '-'"
|
57
|
+
|
49
58
|
ClientXMPP.__init__(self, jid, password)
|
50
59
|
EventEmitter.__init__(self)
|
51
60
|
self.app = app
|
@@ -59,10 +68,10 @@ class WSX(ClientXMPP, EventEmitter):
|
|
59
68
|
|
60
69
|
async def start(self, event):
|
61
70
|
"""Handle session start."""
|
62
|
-
|
71
|
+
|
63
72
|
self.send_presence(ptype="presence")
|
64
73
|
await self.get_roster()
|
65
|
-
await self.emit("
|
74
|
+
await self.emit("__connect",{})
|
66
75
|
self.connected = True
|
67
76
|
|
68
77
|
|
@@ -71,7 +80,7 @@ class WSX(ClientXMPP, EventEmitter):
|
|
71
80
|
|
72
81
|
async def on_disconnect(self, event):
|
73
82
|
"""Handle disconnection and attempt reconnection."""
|
74
|
-
await self.emit("
|
83
|
+
await self.emit("__disconnect",{})
|
75
84
|
self.connected = False
|
76
85
|
asyncio.create_task(self.reconnect())
|
77
86
|
|
@@ -95,24 +104,49 @@ class WSX(ClientXMPP, EventEmitter):
|
|
95
104
|
delayed = "urn:xmpp:delay" in str(stanza)
|
96
105
|
|
97
106
|
if body and not delayed:
|
98
|
-
|
107
|
+
|
99
108
|
|
100
109
|
if body.startswith("{"):
|
101
110
|
try:
|
102
111
|
json_data = json.loads(body)
|
112
|
+
if "__connect" in json_data:
|
113
|
+
return
|
114
|
+
if "__disconnect" in json_data:
|
115
|
+
return
|
116
|
+
if "__message" in json_data:
|
117
|
+
return
|
118
|
+
|
103
119
|
if "api" in json_data:
|
120
|
+
user_uid = from_jid.split('@')[0]
|
104
121
|
data = {key: val for key, val in json_data.items() if key != "api"}
|
105
122
|
data = {key: val for key, val in data.items() if key != "mid"}
|
106
123
|
data["from"] = from_jid
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
124
|
+
data["app"] = None
|
125
|
+
|
126
|
+
if len(user_uid) == 24 and ObjectId.is_valid(user_uid):
|
127
|
+
data["uid"] = user_uid
|
128
|
+
data["app"] = None
|
129
|
+
data["resource"] = None
|
130
|
+
if "@qepal.com/" in from_jid:
|
131
|
+
data["resource"] = from_jid.split("@qepal.com/")[1]
|
132
|
+
|
133
|
+
elif "conference.qepal.com" in from_jid:
|
134
|
+
pass
|
135
|
+
elif "-" in user_uid:
|
136
|
+
app = user_uid.split('-')[0]
|
137
|
+
user_uid = user_uid.split('-')[1]
|
138
|
+
data["app"] = app
|
139
|
+
data["uid"] = user_uid
|
140
|
+
data["resource"] = from_jid.split('@qepal.com/')[1]
|
141
|
+
|
142
|
+
result = await self.emit(json_data["api"], data)
|
143
|
+
if result == None:
|
144
|
+
result = {}
|
145
|
+
self.send_message(
|
113
146
|
mto=from_jid,
|
114
147
|
mbody=json.dumps({**result, "mid": json_data.get("mid")})
|
115
148
|
)
|
149
|
+
|
116
150
|
else:
|
117
151
|
if "mid" in json_data:
|
118
152
|
data = {key: val for key, val in json_data.items() if key != "mid"}
|
@@ -120,18 +154,80 @@ class WSX(ClientXMPP, EventEmitter):
|
|
120
154
|
if json_data.get("mid") in eventsx:
|
121
155
|
eventsx.get(json_data.get("mid")).set()
|
122
156
|
else:
|
123
|
-
|
157
|
+
|
158
|
+
data["channel"] = None
|
159
|
+
if "@conference.qepal.com" in from_jid:
|
160
|
+
s = from_jid.split("@conference.qepal.com/")
|
161
|
+
data = {"from": from_jid, "body": body, "itsme": itsme, "itsbro": itsbro}
|
162
|
+
data["channel"] = s[0]
|
163
|
+
data["uid"] = None
|
164
|
+
data["resource"] = None
|
165
|
+
data["app"] = None
|
166
|
+
ss = s[1].split("-")
|
167
|
+
if len(ss) == 2 and len(ss[0]) == 24 and ObjectId.is_valid(ss[0]):
|
168
|
+
data["uid"] = ss[0]
|
169
|
+
data["resource"] = ss[1]
|
170
|
+
elif len(ss) == 3 and len(ss[1]) == 24 and ObjectId.is_valid(ss[1]):
|
171
|
+
data["uid"] = ss[1]
|
172
|
+
data["app"] = ss[0]
|
173
|
+
data["resource"] = ss[2]
|
174
|
+
await self.emit("__message", data)
|
124
175
|
|
125
176
|
except json.JSONDecodeError:
|
126
177
|
pass
|
127
178
|
else:
|
128
|
-
|
129
|
-
|
179
|
+
data = {"from": from_jid, "body": body, "itsme": itsme, "itsbro": itsbro}
|
180
|
+
data["channel"] = None
|
181
|
+
data["uid"] = None
|
182
|
+
data["resource"] = None
|
183
|
+
data["app"] = None
|
184
|
+
if "@qepal.com" in from_jid:
|
185
|
+
ss = from_jid.split("@qepal.com/")
|
186
|
+
if len(ss) == 2 and len(ss[0]) == 24 and ObjectId.is_valid(ss[0]):
|
187
|
+
data["uid"] = ss[0]
|
188
|
+
data["resource"] = ss[1]
|
189
|
+
elif "-" in ss[0]:
|
190
|
+
sss = ss[0].split("-")
|
191
|
+
data["app"] = sss[0]
|
192
|
+
data["uid"] = sss[1]
|
193
|
+
data["resource"] = ss[1]
|
194
|
+
elif "@conference.qepal.com" in from_jid:
|
195
|
+
ss = from_jid.split("@conference.qepal.com/")
|
196
|
+
data["channel"] = ss[0]
|
197
|
+
if "-" in ss[1]:
|
198
|
+
sss = ss[1].split("-")
|
199
|
+
if len(sss) == 2:
|
200
|
+
data["uid"] = sss[0]
|
201
|
+
data["resource"] = sss[1]
|
202
|
+
elif len(sss) == 3 and len(sss[1]) == 24 and ObjectId.is_valid(sss[1]):
|
203
|
+
data["app"] = sss[0]
|
204
|
+
data["uid"] = sss[1]
|
205
|
+
data["resource"] = sss[2]
|
206
|
+
await self.emit("__message",data)
|
207
|
+
|
130
208
|
|
131
209
|
|
132
210
|
class App:
|
133
211
|
|
212
|
+
udb = None
|
134
213
|
def __init__(self, *, app:str, resource:str, securekey:str, image:str, public:bool=False):
|
214
|
+
|
215
|
+
load_dotenv(".env.local")
|
216
|
+
mongourl = os.getenv("UMONGOURL")
|
217
|
+
mongo_db = os.getenv("UMONGODB_DB")
|
218
|
+
|
219
|
+
if mongourl:
|
220
|
+
try:
|
221
|
+
client = MongoClient(mongourl)
|
222
|
+
client.server_info()
|
223
|
+
self.udb = client[mongo_db]
|
224
|
+
print("✅ mongo udb connected.")
|
225
|
+
except:
|
226
|
+
print("❌ mongo udb not connected.")
|
227
|
+
else:
|
228
|
+
print("❌ no .env.local correct file")
|
229
|
+
|
230
|
+
|
135
231
|
self.app = app
|
136
232
|
self.channels = set()
|
137
233
|
self.resource = resource
|
@@ -166,8 +262,7 @@ class App:
|
|
166
262
|
else:
|
167
263
|
jid = jids[0]
|
168
264
|
if jid == None:
|
169
|
-
|
170
|
-
return
|
265
|
+
return { "error": "no worker found" }
|
171
266
|
|
172
267
|
mid = serial_generator(10)
|
173
268
|
msg = {"mid":mid, "api":cmd, **body }
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: wnox
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.9.0
|
4
4
|
Summary: QE nexus client.
|
5
5
|
Home-page: https://github.com/arminkardan/pywnox
|
6
6
|
Author: Ethan (Armin) Cardan
|
@@ -14,6 +14,8 @@ Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE.txt
|
15
15
|
Requires-Dist: slixmpp
|
16
16
|
Requires-Dist: bson
|
17
|
+
Requires-Dist: python-dotenv
|
18
|
+
Requires-Dist: pymongo
|
17
19
|
Dynamic: author
|
18
20
|
Dynamic: home-page
|
19
21
|
Dynamic: requires-python
|
@@ -0,0 +1,6 @@
|
|
1
|
+
wnox/__init__.py,sha256=V6y8LqJa16zkRKkfxzCeYHX6hqO2oJB4oUbcU8IP69o,12940
|
2
|
+
wnox-0.9.0.dist-info/LICENSE.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
wnox-0.9.0.dist-info/METADATA,sha256=Vms5_1QfZN_Pg2HpB7RNT5g9PLgs6zFMAqN2OIDuWpE,859
|
4
|
+
wnox-0.9.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
5
|
+
wnox-0.9.0.dist-info/top_level.txt,sha256=Xm9SC1bx_o6zjvo2FI-3QiZX2PZ_0UBQkGlvfYsnkwc,5
|
6
|
+
wnox-0.9.0.dist-info/RECORD,,
|
wnox-0.7.0.dist-info/RECORD
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
wnox/__init__.py,sha256=0A8ZDb2AIEno90-9dYpcgWrbBfObb6PJ1xotKJFbs-g,8315
|
2
|
-
wnox-0.7.0.dist-info/LICENSE.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
wnox-0.7.0.dist-info/METADATA,sha256=I-B2nqRwQCDlNJdPbnG4L2XXR-zZh813VyojTDGYHIM,805
|
4
|
-
wnox-0.7.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
5
|
-
wnox-0.7.0.dist-info/top_level.txt,sha256=Xm9SC1bx_o6zjvo2FI-3QiZX2PZ_0UBQkGlvfYsnkwc,5
|
6
|
-
wnox-0.7.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|