qortal/src/api/ApiService.java
Kc 4f279fc616 ADDED: ApiClient
ADDED: UsageDescription annotation
ADDED: Start class as entry point

first implementation of annotated resource descriptions
2018-09-18 23:41:37 +02:00

81 lines
2.0 KiB
Java

package api;
//import io.swagger.jaxrs.config.DefaultJaxrsConfig;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.InetAccessHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletContainer;
import settings.Settings;
public class ApiService {
private Server server;
private Set<Class<?>> resources;
public ApiService()
{
// resources to register
resources = new HashSet<Class<?>>();
resources.add(BlocksResource.class);
ResourceConfig config = new ResourceConfig(resources);
// create RPC server
this.server = new Server(Settings.getInstance().getRpcPort());
// whitelist
InetAccessHandler accessHandler = new InetAccessHandler();
for(String pattern : Settings.getInstance().getRpcAllowed())
accessHandler.include(pattern);
this.server.setHandler(accessHandler);
// context
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
context.setContextPath("/");
accessHandler.setHandler(context);
// API servlet
ServletContainer container = new ServletContainer(config);
ServletHolder apiServlet = new ServletHolder(container);
apiServlet.setInitOrder(1);
context.addServlet(apiServlet, "/api/*");
}
Iterable<Class<?>> getResources()
{
return resources;
}
public void start()
{
try
{
//START RPC
server.start();
}
catch (Exception e)
{
//FAILED TO START RPC
}
}
public void stop()
{
try
{
//STOP RPC
server.stop();
}
catch (Exception e)
{
//FAILED TO STOP RPC
}
}
}