commit 1803bc8a0d2640d62c25a5da5122ded406b5b72c Author: Nick Chambers Date: Sat Apr 13 23:11:56 2024 -0500 Setup the initial structure of the project diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..04c2f92 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/build/ +/sources.txt +/cobweb.jar +.DS_Store diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..3348bc6 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1 @@ +Main-Class: cobweb.Cobweb diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e254790 --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +build: + find src -type f -name '*.java' > sources.txt + javac -d build @sources.txt + jar cmf META-INF/MANIFEST.MF cobweb.jar -C build . + +clean: + rm -rf build sources.txt cobweb.jar diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..5c00ea7 --- /dev/null +++ b/Readme.md @@ -0,0 +1,3 @@ +# Cobweb + +Serves web. diff --git a/src/Cobweb.java b/src/Cobweb.java new file mode 100644 index 0000000..05d230d --- /dev/null +++ b/src/Cobweb.java @@ -0,0 +1,30 @@ +package cobweb; + +import com.spookyinternet.cobweb.*; + +public class Cobweb { + private static final int PORT = 4815; + private static final byte[] HOST = { 127, 0, 0, 1 }; + + public static void main(String[] args) { + CobwebServer srv = new CobwebServer(PORT, HOST); + + srv.on("get", "/hello/{?name}", (req) -> { + if(req.params.length > 0) { + return new HttpStaticResponse("Hello, " + req.params[0] + "!"); + } else { + return new HttpStaticResponse("Hello, world!"); + } + }); + +/* + srv.on("get", "/redirect", HttpPermanentRedirect("https://www.example.com")); + + srv.on("get", "/*", WwwDir(WWW_DIR, [ + AllowTrailingSlash, + AllowImpliedIndex, + AllowDirectoryListing + ])); +*/ + } +} diff --git a/src/com/spookyinternet/cobweb/CobwebServer.java b/src/com/spookyinternet/cobweb/CobwebServer.java new file mode 100644 index 0000000..aa3cd6e --- /dev/null +++ b/src/com/spookyinternet/cobweb/CobwebServer.java @@ -0,0 +1,11 @@ +package com.spookyinternet.cobweb; + +public class CobwebServer { + public CobwebServer(int port, byte[] host) { + System.out.println("Hello, constructor!"); + } + + public void on(String get, String path, HttpRequestFunction fn) { + System.out.println("Hello, on!"); + } +} diff --git a/src/com/spookyinternet/cobweb/HttpRequest.java b/src/com/spookyinternet/cobweb/HttpRequest.java new file mode 100644 index 0000000..61b4eac --- /dev/null +++ b/src/com/spookyinternet/cobweb/HttpRequest.java @@ -0,0 +1,5 @@ +package com.spookyinternet.cobweb; + +public class HttpRequest { + public String[] params; +} diff --git a/src/com/spookyinternet/cobweb/HttpRequestFunction.java b/src/com/spookyinternet/cobweb/HttpRequestFunction.java new file mode 100644 index 0000000..33f02b1 --- /dev/null +++ b/src/com/spookyinternet/cobweb/HttpRequestFunction.java @@ -0,0 +1,5 @@ +package com.spookyinternet.cobweb; + +public interface HttpRequestFunction { + HttpResponse process(HttpRequest req); +} diff --git a/src/com/spookyinternet/cobweb/HttpResponse.java b/src/com/spookyinternet/cobweb/HttpResponse.java new file mode 100644 index 0000000..422816c --- /dev/null +++ b/src/com/spookyinternet/cobweb/HttpResponse.java @@ -0,0 +1,5 @@ +package com.spookyinternet.cobweb; + +public class HttpResponse { + +} diff --git a/src/com/spookyinternet/cobweb/HttpStaticResponse.java b/src/com/spookyinternet/cobweb/HttpStaticResponse.java new file mode 100644 index 0000000..d2d1ea8 --- /dev/null +++ b/src/com/spookyinternet/cobweb/HttpStaticResponse.java @@ -0,0 +1,6 @@ +package com.spookyinternet.cobweb; + +public class HttpStaticResponse extends HttpResponse { + public HttpStaticResponse(String text) { + } +}