Skip to content

Commit 4350a27

Browse files
committed
url decode strings for post data
1 parent 57046b7 commit 4350a27

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

gurgleapps_webserver.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,28 @@ async def serve_request(self, reader, writer):
187187
self.serving = False
188188
except OSError as e:
189189
print(e)
190+
191+
def parse_form_data(self, form_data_raw):
192+
form_data = {}
193+
for pair in form_data_raw.split('&'):
194+
key, value = pair.split('=')
195+
form_data[self.url_decode(key)] = self.url_decode(value)
196+
return form_data
197+
198+
def url_decode(self, encoded_str):
199+
decoded_str = ""
200+
i = 0
201+
while i < len(encoded_str):
202+
if encoded_str[i] == '%':
203+
hex_code = encoded_str[i + 1:i + 3]
204+
char = chr(int(hex_code, 16))
205+
decoded_str += char
206+
i += 3
207+
else:
208+
decoded_str += encoded_str[i]
209+
i += 1
210+
return decoded_str
211+
190212

191213
def dir_exists(self, filename):
192214
try:
@@ -323,13 +345,6 @@ def blink_element(element, pin, duration=0.27):
323345
blink_element(element, led_pin)
324346
await asyncio.sleep(delay_between_digits if element != '.' else 2 * delay_between_digits)
325347
await asyncio.sleep(delay_between_repititions)
326-
327-
def parse_form_data(self, form_data_raw):
328-
form_data = {}
329-
for pair in form_data_raw.split('&'):
330-
key, value = pair.split('=')
331-
form_data[key] = value
332-
return form_data
333348

334349

335350
def list_files_and_folders(self, path):

0 commit comments

Comments
 (0)