From e1e4d728b50ca390e101a834b6a81f11085074f3 Mon Sep 17 00:00:00 2001 From: Nayan <33187059+GShadow5@users.noreply.github.com> Date: Thu, 8 May 2025 19:23:06 -0400 Subject: [PATCH] enable additional file types and add demo files --- public/image.jpg | Bin 0 -> 39639 bytes public/includetest.html | 14 ++++++++++++++ public/index.css | 27 +++++++++++++++++++++++++++ public/index.html | 1 + public/script.js | 4 ++++ response_builder.c | 9 +++------ 6 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 public/image.jpg create mode 100644 public/includetest.html create mode 100644 public/index.css create mode 100644 public/script.js diff --git a/public/image.jpg b/public/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af71d383587b5ab1288b9eaf4564f6c070806140 GIT binary patch literal 39639 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 AUjP6A literal 0 HcmV?d00001 diff --git a/public/includetest.html b/public/includetest.html new file mode 100644 index 0000000..fcecc5a --- /dev/null +++ b/public/includetest.html @@ -0,0 +1,14 @@ + + + + Document + + + +
+

Demo page

+

If you are seeing this then the server is working :)

+ +
+ + \ No newline at end of file diff --git a/public/index.css b/public/index.css new file mode 100644 index 0000000..ae415ca --- /dev/null +++ b/public/index.css @@ -0,0 +1,27 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +#root { + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background-color: aqua; +} + +h1 { + font-size: 3rem; +} + +p { + font-size: 1.5rem; +} + +a { + font-size: 1.5rem; +} \ No newline at end of file diff --git a/public/index.html b/public/index.html index b932471..dcd081d 100644 --- a/public/index.html +++ b/public/index.html @@ -31,6 +31,7 @@

Demo page

If you are seeing this then the server is working :)

+

Click here to see an example of including css and js as separate files

\ No newline at end of file diff --git a/public/script.js b/public/script.js new file mode 100644 index 0000000..60e8c6e --- /dev/null +++ b/public/script.js @@ -0,0 +1,4 @@ +const button = document.createElement('button'); +button.textContent = 'Click me!'; +button.onclick = () => alert('You clicked the button!'); +document.body.appendChild(button); diff --git a/response_builder.c b/response_builder.c index 5b7ae30..c20dee4 100644 --- a/response_builder.c +++ b/response_builder.c @@ -16,16 +16,13 @@ void response_handle_get(http_request* req, http_response* res) { if (strcmp(ptr, ".html") == 0) { response_build_static_file(file_path, HTML, OK, res); } else if (strcmp(ptr, ".jpg") == 0) { - serve_404(res); - return; + response_build_static_file(file_path, JPG, OK, res); } else if (strcmp(ptr, ".png") == 0) { response_build_static_file(file_path, PNG, OK, res); } else if (strcmp(ptr, ".css") == 0) { - serve_404(res); - return; + response_build_static_file(file_path, CSS, OK, res); } else if (strcmp(ptr, ".js") == 0) { - serve_404(res); - return; + response_build_static_file(file_path, JS, OK, res); } else { serve_404(res); return;