package thboileau.test.gae;

import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.data.ChallengeScheme;
import org.restlet.data.MediaType;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.routing.Router;
import org.restlet.security.ChallengeAuthenticator;
import org.restlet.security.MapVerifier;

public class TestApplication extends Application {

    /**
     * Creates a root Restlet that will receive all incoming calls.
     */
    @Override
    public Restlet createRoot() {
        // Create a router Restlet that defines routes.
        Router router = new Router(getContext());

        router.attachDefault(annos.TestServerResource.class);

        Restlet call = new Restlet() {
            @Override
            public void handle(Request request, Response response) {
                response.setEntity("Call", MediaType.TEXT_PLAIN);
            }

        };
        Restlet sms = new Restlet() {
            @Override
            public void handle(Request request, Response response) {
                response.setEntity("SMS", MediaType.TEXT_PLAIN);
            }

        };
        router.attach("/addcall", call);
        router.attach("/addsms", sms);

        ChallengeAuthenticator authenticator = new ChallengeAuthenticator(
                getContext(), ChallengeScheme.HTTP_BASIC,
                "com.eris4.warp4.callfriends.server.restlet");
        MapVerifier verifier = new MapVerifier();
        verifier.getLocalSecrets().put("callFriends", "callFriends".toCharArray());
        authenticator.setVerifier(verifier);
        authenticator.setNext(router);

//        Router guardedRouter = new Router(getContext());
//        guardedRouter.attach("/", authenticator);

        return authenticator;
    }
}