package io.mazenmc.skypebot.api;
import io.mazenmc.skypebot.engine.api.BaseResource;
import io.mazenmc.skypebot.engine.api.Path;
import org.json.JSONObject;
import org.reflections.Reflections;
import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
import java.lang.reflect.Method;
public class API extends Application {
public API() {
setName("SkypeBot API");
}
@Override
public Restlet createInboundRoot() {
Router baseRouter = new Router(getContext());
Reflections r = new Reflections("io.mazenmc.skypebot.api");
for (Class<? extends BaseResource> c : r.getSubTypesOf(BaseResource.class)) {
try {
Method m = c.getMethod("processRequest", String.class, JSONObject.class, String.class);
Path p = m.getAnnotation(Path.class);
if (p != null) {
baseRouter.attach(p.value(), c);
}
} catch (NoSuchMethodException ignored) {
}
}
return baseRouter;
}
}