Skip to content

Instantly share code, notes, and snippets.

@c0mpiler
Created February 13, 2018 23:50
Show Gist options
  • Save c0mpiler/550b03ed91d2a6988953c8513f9ad272 to your computer and use it in GitHub Desktop.
Save c0mpiler/550b03ed91d2a6988953c8513f9ad272 to your computer and use it in GitHub Desktop.
HelloQbit
import HelloWorldService;
import io.advantageous.qbit.admin.ManagedServiceBuilder;
import io.advantageous.qbit.http.request.HttpBinaryResponse;
import io.advantageous.qbit.http.request.HttpResponseBuilder;
import io.advantageous.qbit.http.request.HttpTextResponse;
import io.advantageous.qbit.http.request.decorator.HttpBinaryResponseHolder;
import io.advantageous.qbit.http.request.decorator.HttpResponseDecorator;
import io.advantageous.qbit.http.request.decorator.HttpTextResponseHolder;
import io.advantageous.qbit.system.QBitSystemManager;
import io.advantageous.qbit.util.MultiMap;
import static io.advantageous.qbit.admin.ManagedServiceBuilder.managedServiceBuilder;
public class HelloQbit {
public static void main(final String... args) {
QBitSystemManager systemManager = new QBitSystemManager();
final ManagedServiceBuilder managedServiceBuilder =
managedServiceBuilder()
.setRootURI("/services");
managedServiceBuilder.getHttpServerBuilder().addResponseDecorator(new HttpResponseDecorator() {
@Override
public boolean decorateTextResponse(HttpTextResponseHolder responseHolder, String requestPath,
String method,
int code, String contentType, String payload,
MultiMap<String, String> responseHeaders,
MultiMap<String, String> requestHeaders,
MultiMap<String, String> requestParams) {
final HttpResponseBuilder responseBuilder = HttpResponseBuilder.httpResponseBuilder()
.setCode(code)
.setContentType(contentType)
.setBody(payload);
if (responseHeaders != null && !responseHeaders.isEmpty()) {
responseBuilder.setHeaders(responseHeaders);
}
responseBuilder
.addHeader("Cache-Control", "no-cache, no-store, must-revalidate")
.addHeader("Pragma", "no-cache")
.addHeader("Expires", "0")
.addHeader("Access-Control-Allow-Origin", "*")
.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
.addHeader("Access-Control-Allow-Headers", "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range")
.addHeader("Access-Control-Expose-Headers", "Content-Length,Content-Range");
responseHolder.setHttpTextResponse((HttpTextResponse) responseBuilder
.build());
return true;
}
@Override
public boolean decorateBinaryResponse(HttpBinaryResponseHolder responseHolder, String requestPath,
String method,
int code, String contentType, byte[] payload,
MultiMap<String, String> responseHeaders,
MultiMap<String, String> requestHeaders,
MultiMap<String, String> requestParams) {
final HttpResponseBuilder responseBuilder = HttpResponseBuilder.httpResponseBuilder()
.setCode(code)
.setContentType(contentType)
.setBody(payload);
if (responseHeaders != null && !responseHeaders.isEmpty()) {
responseBuilder.setHeaders(responseHeaders);
}
responseBuilder
.addHeader("Cache-Control", "no-cache, no-store, must-revalidate")
.addHeader("Pragma", "no-cache")
.addHeader("Expires", "0")
.addHeader("Access-Control-Allow-Origin", "*")
.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
.addHeader("Access-Control-Allow-Headers", "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range")
.addHeader("Access-Control-Expose-Headers", "Content-Length,Content-Range");
responseHolder.setHttpBinaryResponse((HttpBinaryResponse)responseBuilder
.build());
return true;
}
});
/* Start the service. */
managedServiceBuilder
.addEndpointService(new HelloWorldService())
.getEndpointServerBuilder()
.build();
managedServiceBuilder.startApplication();
/* Start the admin builder which exposes health end-points and meta data. */
managedServiceBuilder.getAdminBuilder().build().startServer();
System.out.println("Servers started");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment