public void install(final Jooby app) {
requireNonNull(app, "Application is required.");
ObjectMapper mapper = Json.mapper();
ObjectWriter yaml = Yaml.pretty();
app.use(new SwaggerModule(mapper));
app.get(path + "/swagger.json", path + "/:tag/swagger.json", req -> {
SwaggerBuilder sb = req.require(SwaggerBuilder.class);
Swagger swagger = sb.build(req.param("tag").toOptional(), predicate, tag, Swagger.class);
byte[] json = mapper.writer().withDefaultPrettyPrinter().writeValueAsBytes(swagger);
return Results.json(json);
}).name("swagger(json)");
app.get(path + "/swagger.yml", path + "/:tag/swagger.yml", req -> {
SwaggerBuilder sb = req.require(SwaggerBuilder.class);
Swagger swagger = sb.build(req.param("tag").toOptional(), predicate, tag, SwaggerYml.class);
byte[] yml = yaml.writeValueAsBytes(swagger);
return Results.ok(yml).type("application/yaml");
}).name("swagger(yml)");
if (ui) {
app.assets(path + "/ui/**",
"/META-INF/resources/webjars/swagger-ui/" + wjversion(app.getClass()) + "/{0}");
app.get(path, path + "/:tag", new SwaggerHandler(path))
.name("swagger(html)")
.produces(MediaType.html);
}
}