package org.rakam.ui; import com.google.auto.service.AutoService; import com.google.inject.Binder; import com.google.inject.Scopes; import com.google.inject.multibindings.Multibinder; import com.google.inject.multibindings.OptionalBinder; import org.rakam.plugin.RakamModule; import org.rakam.server.http.HttpService; import org.rakam.server.http.RakamHttpRequest; import org.rakam.ui.customreport.CustomReportMetadata; import org.rakam.ui.page.CustomPageDatabase; import javax.ws.rs.GET; import javax.ws.rs.Path; @AutoService(RakamModule.class) public class RakamWebUIFallbackModule extends RakamModule { @Override protected void setup(Binder binder) { OptionalBinder.newOptionalBinder(binder, CustomPageDatabase.class); OptionalBinder.newOptionalBinder(binder, CustomReportMetadata.class); OptionalBinder.newOptionalBinder(binder, ReportMetadata.class); OptionalBinder.newOptionalBinder(binder, DashboardService.class); if(!"true".equals(getConfig("ui.enable"))) { Multibinder.newSetBinder(binder, HttpService.class).addBinding() .to(RootAPIInformationService.class).in(Scopes.SINGLETON); } } @Override public String name() { return "Fallback for Rakam API BI Module"; } @Override public String description() { return null; } @Path("/") public static class RootAPIInformationService extends HttpService { @GET @Path("/") public void main(RakamHttpRequest request) { request.response("Rakam API is successfully installed! \n---------- \n" + "Visit app.rakam.io to register the API with Rakam BI or api.rakam.io for API documentation.") .end(); } } }