Skip to content

Commit 6175467

Browse files
authored
Update ufirebase.py
Version 1.1
1 parent ee76491 commit 6175467

File tree

1 file changed

+131
-88
lines changed

1 file changed

+131
-88
lines changed

ufirebase.py

Lines changed: 131 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -7,112 +7,144 @@
77
class FIREBASE_GLOBAL_VAR:
88
GLOBAL_URL=None
99
GLOBAL_URL_ADINFO=None
10-
SOCKET=None
11-
SSOCKET=None
10+
SLIST={}
1211

1312
class INTERNAL:
14-
def connect():
13+
def connect(id):
1514
LOCAL_ADINFO=usocket.getaddrinfo(FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"], FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["port"], 0, usocket.SOCK_STREAM)[0]
16-
FIREBASE_GLOBAL_VAR.SOCKET = usocket.socket(LOCAL_ADINFO[0], LOCAL_ADINFO[1], LOCAL_ADINFO[2])
17-
FIREBASE_GLOBAL_VAR.SOCKET.connect(LOCAL_ADINFO[-1])
15+
FIREBASE_GLOBAL_VAR.SLIST["S"+id] = usocket.socket(LOCAL_ADINFO[0], LOCAL_ADINFO[1], LOCAL_ADINFO[2])
16+
FIREBASE_GLOBAL_VAR.SLIST["S"+id].connect(LOCAL_ADINFO[-1])
1817
if FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["proto"] == "https:":
19-
FIREBASE_GLOBAL_VAR.SSOCKET = ussl.wrap_socket(FIREBASE_GLOBAL_VAR.SOCKET, server_hostname=FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"])
18+
try:
19+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id] = ussl.wrap_socket(FIREBASE_GLOBAL_VAR.SLIST["S"+id], server_hostname=FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"])
20+
except:
21+
print("ENOMEM, try to restart. Do not make to many id's (sokets) simultaneously! (or use a board with more ram)")
22+
FIREBASE_GLOBAL_VAR.SLIST["S"+id].close()
23+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=None
24+
FIREBASE_GLOBAL_VAR.SLIST["S"+id]=None
25+
raise MemoryError
26+
2027
else:
21-
FIREBASE_GLOBAL_VAR.SSOCKET=FIREBASE_GLOBAL_VAR.SOCKET
22-
def disconnect():
23-
FIREBASE_GLOBAL_VAR.SSOCKET.close()
24-
FIREBASE_GLOBAL_VAR.SSOCKET=None
25-
FIREBASE_GLOBAL_VAR.SOCKET=None
28+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=FIREBASE_GLOBAL_VAR.SLIST["S"+id]
29+
def disconnect(id):
30+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id].close()
31+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=None
32+
FIREBASE_GLOBAL_VAR.SLIST["S"+id]=None
2633

27-
def put(PATH, DATA):
28-
while FIREBASE_GLOBAL_VAR.SSOCKET:
29-
time.sleep(1)
30-
FIREBASE_GLOBAL_VAR.SSOCKET=True
31-
INTERNAL.connect()
32-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"PUT /"+PATH+b".json HTTP/1.0\r\n")
33-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n")
34-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Content-Length: "+str(len(DATA))+"\r\n\r\n")
35-
FIREBASE_GLOBAL_VAR.SSOCKET.write(DATA)
36-
LOCAL_DUMMY=FIREBASE_GLOBAL_VAR.SSOCKET.read()
34+
def put(PATH, DATA, id):
35+
try:
36+
while FIREBASE_GLOBAL_VAR.SLIST["SS"+id]:
37+
time.sleep(2)
38+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
39+
except:
40+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
41+
INTERNAL.connect(id)
42+
LOCAL_SS=FIREBASE_GLOBAL_VAR.SLIST["SS"+id]
43+
LOCAL_SS.write(b"PUT /"+PATH+b".json HTTP/1.0\r\n")
44+
LOCAL_SS.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n")
45+
LOCAL_SS.write(b"Content-Length: "+str(len(DATA))+"\r\n\r\n")
46+
LOCAL_SS.write(DATA)
47+
LOCAL_DUMMY=LOCAL_SS.read()
3748
del LOCAL_DUMMY
38-
INTERNAL.disconnect()
49+
INTERNAL.disconnect(id)
3950

4051

41-
def patch(PATH, DATA):
42-
while FIREBASE_GLOBAL_VAR.SSOCKET:
43-
time.sleep(1)
44-
FIREBASE_GLOBAL_VAR.SSOCKET=True
45-
INTERNAL.connect()
46-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"PATCH /"+PATH+b".json HTTP/1.0\r\n")
47-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n")
48-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Content-Length: "+str(len(DATA))+"\r\n\r\n")
49-
FIREBASE_GLOBAL_VAR.SSOCKET.write(DATA)
50-
LOCAL_DUMMY=FIREBASE_GLOBAL_VAR.SSOCKET.read()
52+
def patch(PATH, DATA, id):
53+
try:
54+
while FIREBASE_GLOBAL_VAR.SLIST["SS"+id]:
55+
time.sleep(1)
56+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
57+
except:
58+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
59+
INTERNAL.connect(id)
60+
LOCAL_SS=FIREBASE_GLOBAL_VAR.SLIST["SS"+id]
61+
LOCAL_SS.write(b"PATCH /"+PATH+b".json HTTP/1.0\r\n")
62+
LOCAL_SS.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n")
63+
LOCAL_SS.write(b"Content-Length: "+str(len(DATA))+"\r\n\r\n")
64+
LOCAL_SS.write(DATA)
65+
LOCAL_DUMMY=LOCAL_SS.read()
5166
del LOCAL_DUMMY
52-
INTERNAL.disconnect()
67+
INTERNAL.disconnect(id)
5368

5469

55-
def get(PATH, DUMP):
56-
while FIREBASE_GLOBAL_VAR.SSOCKET:
57-
time.sleep(1)
58-
FIREBASE_GLOBAL_VAR.SSOCKET=True
59-
INTERNAL.connect()
60-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"GET /"+PATH+b".json HTTP/1.0\r\n")
61-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n\r\n")
62-
LOCAL_OUTPUT=ujson.loads(FIREBASE_GLOBAL_VAR.SSOCKET.read().splitlines()[-1])
63-
INTERNAL.disconnect()
70+
def get(PATH, DUMP, id):
71+
try:
72+
while FIREBASE_GLOBAL_VAR.SLIST["SS"+id]:
73+
time.sleep(1)
74+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
75+
except:
76+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
77+
INTERNAL.connect(id)
78+
LOCAL_SS=FIREBASE_GLOBAL_VAR.SLIST["SS"+id]
79+
LOCAL_SS.write(b"GET /"+PATH+b".json HTTP/1.0\r\n")
80+
LOCAL_SS.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n\r\n")
81+
LOCAL_OUTPUT=ujson.loads(LOCAL_SS.read().splitlines()[-1])
82+
INTERNAL.disconnect(id)
6483
globals()[DUMP]=LOCAL_OUTPUT
6584

66-
def getfile(PATH, FILE, bg):
67-
while FIREBASE_GLOBAL_VAR.SSOCKET:
68-
time.sleep(1)
69-
FIREBASE_GLOBAL_VAR.SSOCKET=True
70-
INTERNAL.connect()
71-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"GET /"+PATH+b".json HTTP/1.0\r\n")
72-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n\r\n")
73-
while not FIREBASE_GLOBAL_VAR.SSOCKET.readline()==b"\r\n":
85+
def getfile(PATH, FILE, bg, id):
86+
try:
87+
while FIREBASE_GLOBAL_VAR.SLIST["SS"+id]:
88+
time.sleep(1)
89+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
90+
except:
91+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
92+
INTERNAL.connect(id)
93+
LOCAL_SS=FIREBASE_GLOBAL_VAR.SLIST["SS"+id]
94+
LOCAL_SS.write(b"GET /"+PATH+b".json HTTP/1.0\r\n")
95+
LOCAL_SS.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n\r\n")
96+
while not LOCAL_SS.readline()==b"\r\n":
7497
pass
7598
LOCAL_FILE=open(FILE, "wb")
7699
if bg:
77100
while True:
78-
LOCAL_LINE=FIREBASE_GLOBAL_VAR.SSOCKET.read(1024)
101+
LOCAL_LINE=LOCAL_SS.read(1024)
79102
if LOCAL_LINE==b"":
80103
break
81104
LOCAL_FILE.write(LOCAL_LINE)
82105
time.sleep_ms(1)
83106
else:
84107
while True:
85-
LOCAL_LINE=FIREBASE_GLOBAL_VAR.SSOCKET.read(1024)
108+
LOCAL_LINE=LOCAL_SS.read(1024)
86109
if LOCAL_LINE==b"":
87110
break
88111
LOCAL_FILE.write(LOCAL_LINE)
89112

90113
LOCAL_FILE.close()
91-
INTERNAL.disconnect()
114+
INTERNAL.disconnect(id)
92115

93-
def delete(PATH):
94-
while FIREBASE_GLOBAL_VAR.SSOCKET:
95-
time.sleep(1)
96-
FIREBASE_GLOBAL_VAR.SSOCKET=True
97-
INTERNAL.connect()
98-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"DELETE /"+PATH+b".json HTTP/1.0\r\n")
99-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n\r\n")
100-
LOCAL_DUMMY=FIREBASE_GLOBAL_VAR.SSOCKET.read()
116+
def delete(PATH, id):
117+
try:
118+
while FIREBASE_GLOBAL_VAR.SLIST["SS"+id]:
119+
time.sleep(1)
120+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
121+
except:
122+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
123+
INTERNAL.connect(id)
124+
LOCAL_SS=FIREBASE_GLOBAL_VAR.SLIST["SS"+id]
125+
LOCAL_SS.write(b"DELETE /"+PATH+b".json HTTP/1.0\r\n")
126+
LOCAL_SS.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n\r\n")
127+
LOCAL_DUMMY=LOCAL_SS.read()
101128
del LOCAL_DUMMY
102-
INTERNAL.disconnect()
129+
INTERNAL.disconnect(id)
103130

104-
def addto(PATH, DATA):
105-
while FIREBASE_GLOBAL_VAR.SSOCKET:
106-
time.sleep(1)
107-
FIREBASE_GLOBAL_VAR.SSOCKET=True
108-
INTERNAL.connect()
109-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"POST /"+PATH+b".json HTTP/1.0\r\n")
110-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n")
111-
FIREBASE_GLOBAL_VAR.SSOCKET.write(b"Content-Length: "+str(len(DATA))+"\r\n\r\n")
112-
FIREBASE_GLOBAL_VAR.SSOCKET.write(DATA)
113-
LOCAL_DUMMY=FIREBASE_GLOBAL_VAR.SSOCKET.read()
131+
def addto(PATH, DATA, id):
132+
try:
133+
while FIREBASE_GLOBAL_VAR.SLIST["SS"+id]:
134+
time.sleep(1)
135+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
136+
except:
137+
FIREBASE_GLOBAL_VAR.SLIST["SS"+id]=True
138+
INTERNAL.connect(id)
139+
LOCAL_SS=FIREBASE_GLOBAL_VAR.SLIST["SS"+id]
140+
LOCAL_SS.write(b"POST /"+PATH+b".json HTTP/1.0\r\n")
141+
LOCAL_SS.write(b"Host: "+FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO["host"]+b"\r\n")
142+
LOCAL_SS.write(b"Content-Length: "+str(len(DATA))+"\r\n\r\n")
143+
144+
LOCAL_SS.write(DATA)
145+
LOCAL_DUMMY=LOCAL_SS.read()
114146
del LOCAL_DUMMY
115-
INTERNAL.disconnect()
147+
INTERNAL.disconnect(id)
116148

117149
def setURL(url):
118150
FIREBASE_GLOBAL_VAR.GLOBAL_URL=url
@@ -135,27 +167,38 @@ def setURL(url):
135167

136168
FIREBASE_GLOBAL_VAR.GLOBAL_URL_ADINFO={"proto": proto, "host": host, "port": port}
137169

138-
def put(PATH, DATA):
139-
_thread.start_new_thread(INTERNAL.put, [PATH, ujson.dumps(DATA)])
140-
170+
def put(PATH, DATA, bg=True, id=0):
171+
if bg:
172+
_thread.start_new_thread(INTERNAL.put, [PATH, ujson.dumps(DATA), str(id)])
173+
else:
174+
INTERNAL.put(PATH, ujson.dumps(DATA), str(id))
141175

142-
def patch(PATH, DATA):
143-
_thread.start_new_thread(INTERNAL.addto, [PATH, ujson.dumps(DATA)])
176+
def patch(PATH, DATA, bg=True, id=0):
177+
if bg:
178+
_thread.start_new_thread(INTERNAL.put, [PATH, ujson.dumps(DATA), str(id)])
179+
else:
180+
INTERNAL.put(PATH, ujson.dumps(DATA), str(id))
144181

145-
def getfile(PATH, FILE, bg=False):
182+
def getfile(PATH, FILE, bg=False, id=0):
146183
if bg:
147-
_thread.start_new_thread(INTERNAL.getfile, [PATH, FILE, bg])
184+
_thread.start_new_thread(INTERNAL.getfile, [PATH, FILE, bg, str(id)])
148185
else:
149-
INTERNAL.getfile(PATH, FILE, bg)
186+
INTERNAL.getfile(PATH, FILE, bg, str(id))
150187

151-
def get(PATH, DUMP, bg=False):
188+
def get(PATH, DUMP, bg=False, id=0):
152189
if bg:
153-
_thread.start_new_thread(INTERNAL.get, [PATH, DUMP])
190+
_thread.start_new_thread(INTERNAL.get, [PATH, DUMP, str(id)])
154191
else:
155-
INTERNAL.get(PATH, DUMP)
192+
INTERNAL.get(PATH, DUMP, str(id))
156193

157-
def delete(PATH):
158-
_thread.start_new_thread(INTERNAL.delete, [PATH])
194+
def delete(PATH, bg=True, id=0):
195+
if bg:
196+
_thread.start_new_thread(INTERNAL.put, [PATH, str(id)])
197+
else:
198+
INTERNAL.put(PATH, str(id))
159199

160-
def addto(PATH, DATA):
161-
_thread.start_new_thread(INTERNAL.addto, [PATH, ujson.dumps(DATA)])
200+
def addto(PATH, DATA, bg=True, id=0):
201+
if bg:
202+
_thread.start_new_thread(INTERNAL.put, [PATH, ujson.dumps(DATA), str(id)])
203+
else:
204+
INTERNAL.put(PATH, ujson.dumps(DATA), str(id))

0 commit comments

Comments
 (0)