Lumiere Server is a web server designed for people who want to build a basic website in a quick and simple way.
If you want to support me, you can star the project 👀🌃
To build the JAR file, first clone the repository as shown below:
sudo apt update
sudo apt install git -y
git clone https://github.com/DevSnaith/lumiere-server.git
After the cloning is done, cd
to the lumiere-server/
folder. There you will find the compile.sh
script; run it to generate the jar file.
In case you cannot execute
compile.sh
, give it executable permission usingchmod +x ./compile.sh
.
cd lumiere-server/
chmod +x ./compile.sh
./compile.sh
If all goes well, you will find a new file called lumiere-server.jar
, Type java -jar lumiere-server.jar
the output should be like the one shown below:
Lumiere-server version <version>
lumiere-server at github https://github.com/DevSnaith/lumiere-server
Now copy the lumiere-server.jar
and add it to your project.
Lumiere
class contains the basic things that must be available for the server to work well, it manages the traffic of requests and forwards them to the RequestHandler
interface. It also adds some properties in the header.
You need to pass a RequestHandler
to Lumiere
, The easiest way to do that is to use the SimpleResponse
class that implements the RequestHandler
interface.
int server_port = 8080;
String body = "<b>Hello, World!</b>";
boolean contentTypeIsHTML = true; // false = text/plan
SimpleResponse requestHandler = new SimpleResponse(body, contentTypeIsHTML);
Lumiere server = new Lumiere(requestHandler);
server.bootServer(server_port); // start the server
If you want to make a dynamic response, use RequestHandler
/* new RequestHandler */
new Lumiere((Socket socket, HttpRequest request, HttpResponse response) -> {
response.setContentType("text/html");
response.push("<b>"+request.getProperty("User-Agent")+"</b>");
}).bootServer(8080);
You can create multiple pages for your simple server using HttpController
HttpController controller = new HttpController();
controller.addHandler("/", new SimpleResponse("<a href=\"/info\">GO TO INFO</a>", true));
controller.addHandler("/info", new SimpleResponse("Meow", false));
controller.addHandler("/agent", (Socket socket, HttpRequest request, HttpResponse response) -> {
response.setContentType("text/html");
response.push("<b>"+request.getProperty("User-Agent")+"</b>");
});
new Lumiere(controller).bootServer(8080);
Lumiere-server
includes a logger class called GlobalLogger
.
Use GlobalLogger.printf(...)
to send a message via GlobalLogger
.
// v Msg Level v The Msg v obj to return v formatting the msg
GlobalLogger.getLogger().printf(LogLevel.INFO, "Math: %d", null, (5 + 5));
// [INFO 0:00 AM]: Math: 10
You can change the message output by changing the outputstream using GlobalLogger.os = <OUTOUTSTREAM>;
You can change the log pattern, the default pattern is [!L !D{h:mm a}]: !M\n
.
char | usage |
---|---|
!L | Prints the msg level. |
!M | Print the msg. |
!CNAME | It is used to find out where the message came from. |
!D{pattern} | Print the date. |
GlobalLogger.pattern="FROM: !CNAME | YEAR: !D{YYYY} | MSG: !M\n"
// FROM: org.eu.lumiere.net.RequestListener | YEAR: 2023 | MSG: Lumiere using port 8080
Disable it using GlobalLogger.pattern=""
or GlobalLogger.os = null;