package de.srsoftware.widerhall;

import de.srsoftware.widerhall.mail.Forwarder;
import de.srsoftware.widerhall.mail.ImapClient;
import de.srsoftware.widerhall.mail.MessageHandler;
import de.srsoftware.widerhall.web.Static;
import de.srsoftware.widerhall.web.Rest;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.json.simple.JSONObject;

import java.io.File;

public class Application {

    public static void main(String[] args) throws Exception {
        var config = Configuration.setFile(new File("/tmp/config.json"));
        //startMailSystem(json);
        startWebserver(config);
    }

    private static void startWebserver(Configuration config) throws Exception {
        var server = new Server();
        var connector = new ServerConnector(server);
        connector.setPort(config.serverPort());

        SessionHandler sh = new SessionHandler();
        server.setConnectors(new Connector[]{connector});
        ServletContextHandler context = new ServletContextHandler(server, "/",sh,null,null,null);
        context.addServlet(Rest.class,"/api");
        context.addServlet(Static.class,"/static/*");

        server.start();
    }

    private static void startMailSystem(JSONObject json) {
        MessageHandler forward = new Forwarder(json);
        new ImapClient(json)
                .addListener(forward)
                .start();
    }
}