Simple and lightweight web server for creating basic pages using Java
Go to file
2023-04-19 10:53:36 +03:00
.github/ISSUE_TEMPLATE Update issue templates 2023-04-14 10:11:07 +03:00
src/org/eu/lumiere soon... 2023-04-19 10:53:36 +03:00
.gitignore add new lines 2023-04-19 10:51:41 +03:00
compile.sh Create compile method 2023-04-14 07:26:04 +03:00
README.md Update README.md 2023-04-14 13:09:48 +03:00
Ask

Lumiere Server

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 👀🌃

Build the JAR

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 using chmod +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.

Usage/Examples

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 HttpRequestHandler interface. It also adds some properties in the header.

You need to pass a HttpRequestHandler to Lumiere, The easiest way to do that is to use the SimpleResponse class that implements the HttpRequestHandler interface.

Example using SimpleResponse class

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 HttpRequestHandler

Example using HttpRequestHandler interface

/* new HttpRequestHandler */
new Lumiere((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

Example using HttpController class

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", (HttpRequest request, HttpResponse response) -> {
  response.setContentType("text/html");
  response.push("<b>"+request.getProperty("User-Agent")+"</b>");
});

new Lumiere(controller).bootServer(8080);

Logger

Lumiere-server includes a logger class called GlobalLogger.

Use GlobalLogger.printf(...) to send a message via GlobalLogger.

Example

//                              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.                                    

Pattern Example

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;