package io.swagger.validator.resources; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponses; import io.swagger.validator.models.ValidationResponse; import io.swagger.validator.services.ValidatorService; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; @Path("/") @Api(value = "/validator", description = "Validator for Swagger Specs") public class ValidatorResource { ValidatorService service = new ValidatorService(); @GET @ApiOperation(value = "Validates a spec based on a URL") @ApiResponses(value = {}) @Produces({"image/png"}) public Response validateByUrl( @Context HttpServletRequest request, @Context HttpServletResponse response, @ApiParam(value = "url of spec to validate") @QueryParam("url") String url) throws WebApplicationException { try { service.validateByUrl(request, response, url); response.addHeader("Cache-Control", "no-cache"); } catch (Exception e) { e.printStackTrace(); } return Response.ok().build(); } @GET @Path("/debug") @Produces({"application/json"}) @ApiOperation(value = "Validates a spec based on a URL", response = ValidationResponse.class, responseContainer = "List") @ApiResponses(value = {}) public Response debugByUrl( @Context HttpServletRequest request, @Context HttpServletResponse response, @ApiParam(value = "url of spec to validate") @QueryParam("url") String url) throws WebApplicationException { try { return Response.ok().entity(service.debugByUrl(request, response, url)).build(); } catch (Exception e) { e.printStackTrace(); return Response.status(500).build(); } } @POST @Path("/debug") @Produces({"application/json"}) @ApiOperation(value = "Validates a spec based on message body", response = ValidationResponse.class, responseContainer = "List") @ApiResponses(value = {}) public Response debugByContent( @Context HttpServletRequest request, @Context HttpServletResponse response, @ApiParam(value = "spec contents") String spec) throws WebApplicationException { try { return Response.ok().entity(service.debugByContent(request, response, spec)).build(); } catch (Exception e) { return Response.status(500).build(); } } }