1
0
Fork 0
forked from fun/fun

Added GET and POST support to HTTPServer class. (0.37.32)

This commit is contained in:
Johannes Findeisen 2025-12-29 17:24:08 +01:00
commit 83281bf2de
4 changed files with 92 additions and 6 deletions

View file

@ -9,6 +9,8 @@
* Added: 2025-12-28
*/
#include <strings.fun>
print("<!doctype html><html><body>")
print("<h1>Fun Environment Information</h1>")
print("<p><strong>Current Path:</strong> " + env("PATH") + "</p>")
@ -25,4 +27,32 @@ while i < len(all_keys)
print("<li>" + key + "=" + all_env[key] + "</li>")
i = i + 1
print("</ul>")
print("<h2>GET Variables:</h2>")
print("<ul>")
qs = env("QUERY_STRING")
if (len(qs) > 0)
params = str_split(qs, "&")
i = 0
while i < len(params)
kv = str_split(params[i], "=")
if (len(kv) == 2)
print("<li>" + kv[0] + " = " + kv[1] + "</li>")
else
print("<li>" + params[i] + "</li>")
i = i + 1
print("</ul>")
print("<h2>POST Variables:</h2>")
print("<ul>")
pd = env("POST_DATA")
if (len(pd) > 0)
params = str_split(pd, "&")
i = 0
while i < len(params)
kv = str_split(params[i], "=")
if (len(kv) == 2)
print("<li>" + kv[0] + " = " + kv[1] + "</li>")
else
print("<li>" + params[i] + "</li>")
i = i + 1
print("</ul>")
print("</body></html>")

View file

@ -0,0 +1,32 @@
#include <io/socket.fun>
c = TcpClient()
if (c.connect("127.0.0.1", 8080))
print("Connecting to server...")
// Test GET
print("Testing GET...")
c.send("GET /info.fun?foo=bar&baz=qux HTTP/1.1\r\nHost: localhost\r\n\r\n")
resp = c.recv_all(4096)
print("GET Response contains foo=bar: " + to_string(find(resp, "foo = bar") >= 0))
print("GET Response contains baz=qux: " + to_string(find(resp, "baz = qux") >= 0))
c.close()
else
print("Failed to connect to server")
if (c.connect("127.0.0.1", 8080))
// Test POST
print("Testing POST...")
body = "postfoo=postbar&postbaz=postqux"
req = "POST /info.fun HTTP/1.1\r\n"
req = req + "Host: localhost\r\n"
req = req + "Content-Length: " + to_string(len(body)) + "\r\n"
req = req + "\r\n"
req = req + body
c.send(req)
resp = c.recv_all(4096)
print("POST Response contains postfoo=postbar: " + to_string(find(resp, "postfoo = postbar") >= 0))
print("POST Response contains postbaz=postqux: " + to_string(find(resp, "postbaz = postqux") >= 0))
c.close()
else
print("Failed to connect to server for POST")