Created
February 13, 2018 23:50
-
-
Save c0mpiler/550b03ed91d2a6988953c8513f9ad272 to your computer and use it in GitHub Desktop.
HelloQbit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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