Skip to content

Commit 736d9c3

Browse files
committed
feat(): more of the request receiver
Signed-off-by: João Vitor Dias <joao.dias.santos223@gmail.com>
1 parent 62c1517 commit 736d9c3

File tree

2 files changed

+104
-57
lines changed

2 files changed

+104
-57
lines changed

assets/public/post.html

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,31 @@ <h1 class="h2">Add a new friend</h1>
5757
<div id="form-container">
5858
<div class="form-group">
5959
<label for="nameInputName">Name</label>
60-
<input name="name" type="text" class="form-control" id="nameInputName"
61-
placeholder="Ashe123">
60+
<input class="form-control" id="nameInputName" name="name" placeholder="Ashe123"
61+
type="text">
6262
</div>
6363
<div class="form-group">
6464
<label for="phoneInputName">Phone</label>
65-
<input name="phone" type="text" class="form-control" id="phoneInputName"
66-
placeholder="(11) 11111-1111">
65+
<input class="form-control" id="phoneInputName" name="phone" placeholder="(11) 11111-1111"
66+
type="text">
6767
</div>
6868
<div class="form-group">
6969
<label for="pokemonInputName">Pokemon</label>
70-
<input name="pokemon" type="text" class="form-control" id="pokemonInputName"
71-
placeholder="Charmander">
70+
<input class="form-control" id="pokemonInputName" name="pokemon" placeholder="Charmander"
71+
type="text">
7272
</div>
7373
<div class="form-group">
7474
<label for="imageInputName">Image</label>
75-
<input name="image" type="text" class="form-control" id="imageInputName"
76-
placeholder="Link to image">
75+
<input class="form-control" id="imageInputName" name="image" placeholder="Link to image"
76+
style="display:none" type="text"><br>
77+
<img alt="Card image cap" class="card-img-top" height="200" id="imageTag" src=""
78+
style='object-fit: cover'>
79+
<br>
80+
<input id="imageFileInput" onchange="previewFile()" type="file"><br>
7781
</div>
78-
<button id="submit-button" type="submit" onclick="sendRequest()" class="btn btn-primary" style="">Add</button>
82+
<button class="btn btn-primary" id="submit-button" onclick="sendRequest()" style=""
83+
type="submit">Add
84+
</button>
7985
<br><br>
8086
<div id="register_response"></div>
8187
</div>
@@ -85,7 +91,7 @@ <h1 class="h2">Add a new friend</h1>
8591
<img src="/newfriend.jpeg" class="img-responsive d-block w-100" style='object-fit: cover' alt="logo"/>
8692
</div>
8793
</div>
88-
94+
8995
</main>
9096
</div>
9197
</div>
@@ -108,54 +114,64 @@ <h1 class="h2">Add a new friend</h1>
108114
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
109115
<script>
110116

111-
function toJSONString(form) {
117+
function toJSONString(form, image) {
112118
const obj = {};
113-
const elements = form.querySelectorAll("input, select, textarea");
114-
for (let i = 0; i < elements.length; ++i) {
115-
const element = elements[i];
116-
const name = element.name;
117-
const value = element.value;
118-
119-
if (name) {
120-
obj[name] = value;
121-
}
122-
}
119+
120+
obj['name'] = document.getElementById("nameInputName").value
121+
obj['phone'] = document.getElementById("phoneInputName").value
122+
obj['pokemon'] = document.getElementById("pokemonInputName").value
123+
obj['image'] = image;
123124

124125
return JSON.stringify(obj);
125126
}
126127

128+
function previewFile() {
129+
const preview = document.querySelector('img');
130+
const file = document.querySelector('input[type=file]').files[0];
131+
const reader = new FileReader();
132+
133+
reader.addEventListener("load", function () {
134+
// convert image file to base64 string
135+
preview.src = reader.result;
136+
}, false);
137+
138+
if (file) {
139+
reader.readAsDataURL(file);
140+
}
141+
}
142+
143+
127144
function sendRequest() {
128-
let json = toJSONString(document.getElementById("form-container"));
145+
const preview = document.querySelector('img');
146+
let json = toJSONString(document.getElementById("form-container"), preview.src);
147+
json = json + "\r\n\0";
129148
let xhr = new XMLHttpRequest();
130149
let url = "/post";
131150
let button = document.getElementById("submit-button");
132-
let responseDiv = document.getElementById("register_response")
133151
let oldButtonColor = button.style.backgroundColor;
134152
let oldButtonName = button.innerText;
135153

154+
xhr.open("POST", url, true);
155+
xhr.setRequestHeader("Content-Type", "application/json");
156+
xhr.setRequestHeader("Cache-Control", "no-cache, no-store, max-age=0");
157+
136158
xhr.onreadystatechange = function () {
137-
switch (this.readyState){
159+
switch (this.readyState) {
138160
case 1:
139161
button.style.opacity = "1.0"
140162
button.setAttribute("disabled", "true");
141163
console.log("OPENED")
142164
break;
143165
case 4:
144-
// responseDiv.innerHTML = this.responseText;
145-
// setTimeout(() => {
146-
// responseDiv.innerHTML = "";
147-
// }, 3000)
148-
149-
if (this.status === 201){
166+
if (this.status === 201) {
150167
button.style.backgroundColor = "#48D40B"
151168
button.innerText = "OK";
152-
}
153-
else {
169+
} else {
154170
button.style.backgroundColor = "#EB1C0A"
155171
button.innerText = "ERROR"
156172
}
157173

158-
setTimeout(()=>{
174+
setTimeout(() => {
159175
button.style.background = oldButtonColor;
160176
button.innerText = oldButtonName;
161177
button.removeAttribute("disabled");
@@ -165,11 +181,8 @@ <h1 class="h2">Add a new friend</h1>
165181
break;
166182
}
167183
}
168-
169-
xhr.open("POST", url, true);
170-
xhr.setRequestHeader("Content-Type", "application/json");
171-
xhr.setRequestHeader("Cache-Control", "no-cache, no-store, max-age=0");
172184
xhr.send(json);
185+
console.log("send: ", json)
173186
}
174187

175188
</script>

handler/HandlerRequests.py

Lines changed: 54 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
1-
from message.StatusCode import StatusCode
2-
from server import *
31
from threading import Thread
42

53
from message.ParserMessage import ParserMessage
64
from message.Request import Request
75
from message.StatusCode import StatusCode
86

7+
from handler.HandlerErrors import HandlerErrors
8+
from methods.DELETE import DELETE
99
from methods.GET import GET
1010
from methods.POST import POST
1111
from methods.PUT import PUT
12-
from methods.DELETE import DELETE
1312

14-
from handler.HandlerErrors import HandlerErrors
13+
import time
14+
15+
16+
def recv(sock, chunkSize=8192, timeout=2):
17+
fragments = []
18+
19+
data = None
20+
21+
while True:
22+
data = sock.recv(chunkSize)
23+
print(data, end="\n\n\n\n\n\n\n")
24+
25+
if not data:
26+
return b"".join(fragments)
27+
28+
fragments.append(data)
1529

1630

1731
class Handler(Thread):
@@ -24,24 +38,44 @@ def run(self):
2438
connectionSocket, addr = self.server.serverSocket.accept()
2539

2640
while True:
27-
request = connectionSocket.recv(32768).decode()
41+
request = recv(connectionSocket, 8192).decode()
42+
# request = connectionSocket.recv(100000).decode()
43+
print(request)
2844

2945
if not request:
3046
break
31-
else:
32-
request = Request(ParserMessage.parseRequest(request))
33-
request.setIp(addr)
34-
35-
self.checkTypeRequest(request, connectionSocket)
36-
break
3747

38-
def checkTypeRequest(self, request, connectionSocket):
39-
response = {}
40-
41-
try:
42-
response = eval(request.type).response(request)
43-
except Exception as e:
44-
print(e)
48+
request = Request(ParserMessage.parseRequest(request))
49+
request.setIp(addr)
50+
51+
# self.checkTypeRequest(request, connectionSocket)
52+
response = self.getResponseToRequest(request)
53+
connectionSocket.send(response)
54+
break
55+
56+
def getResponseToRequest(self, request):
57+
response: str
58+
59+
if request.type == "GET":
60+
response = GET.response(request)
61+
elif request.type == "POST":
62+
response = POST.response(request)
63+
elif request.type == "PUT":
64+
response = PUT.response(request)
65+
elif request.type == "DELETE":
66+
response = DELETE.response(request)
67+
else:
4568
response = HandlerErrors.sendErrorCode(request, StatusCode.BAD_REQUEST)
46-
connectionSocket.send(response)
47-
connectionSocket.close()
69+
70+
return response
71+
72+
# def checkTypeRequest(self, request, connectionSocket):
73+
# response = {}
74+
#
75+
# try:
76+
# response = eval(request.type).response(request)
77+
# except Exception as e:
78+
# print(e)
79+
# response = HandlerErrors.sendErrorCode(request, StatusCode.BAD_REQUEST)
80+
# connectionSocket.send(response)
81+
# connectionSocket.close()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy