api/src/be/jeffcheasey88/todo/Main.java

64 lines
1.9 KiB
Java

package be.jeffcheasey88.todo;
import static dev.peerat.framework.RequestType.OPTIONS;
import java.io.File;
import java.util.regex.Matcher;
import org.jose4j.lang.JoseException;
import be.jeffcheasey88.todo.model.JsonRepository;
import be.jeffcheasey88.todo.model.UserWorker;
import be.jeffcheasey88.todo.routes.users.Login;
import dev.peerat.framework.Context;
import dev.peerat.framework.HttpReader;
import dev.peerat.framework.HttpWriter;
import dev.peerat.framework.RequestType;
import dev.peerat.framework.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.Router;
public class Main {
public static void main(String[] args) throws Exception {
Router<UserWorker> router = new Router<UserWorker>().configureJwt(
(builder) -> builder.setExpectedIssuer("http://localhost"),
(claims) -> {
claims.setIssuer("http://localhost"); // who creates the token and signs it
claims.setExpirationTimeMinutesInTheFuture(100);
},
(claims) -> new UserWorker(claims))
.addDefaultHeaders(RequestType.GET, "Access-Control-Allow-Origin: *")
.addDefaultHeaders(RequestType.POST, "Access-Control-Allow-Origin: *");
router.setDefault((matcher, context, reader, writer) -> {
context.response(404);
writer.write("404 not Found.\n");
});
router.register(new Response(){
@Route(path = "^(.*)$", type = OPTIONS)
@Override
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception {
context.response(200,
"Access-Control-Allow-Origin: *",
"Access-Control-Allow-Methods: *",
"Access-Control-Allow-Headers: *"
);
}
});
JsonRepository json = new JsonRepository(new File("/home/todo/"), (username) -> {
try{
return router.createAuthUser(new UserWorker(username));
}catch(JoseException e){}
return null;
});
router.register(new Login(json));
router.listen(80, false);
}
}