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 router = new Router().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); } }