package com.nvarghese.beowulf.smf.scan.resources; import java.net.URI; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.nvarghese.beowulf.common.exception.ServiceException; import com.nvarghese.beowulf.common.scan.dto.config.Profile; import com.nvarghese.beowulf.smf.scan.dto.scanrequest.ScanRequest; import com.nvarghese.beowulf.smf.scan.services.ScanManagementService; /** * The REST resource file responsible for submission of new web scan requests * * @author nibin * */ @Path("/api/scan") public class NewScanResource { @Context UriInfo uriInfo; static Logger logger = LoggerFactory.getLogger(NewScanResource.class); @POST @Path("new") @Consumes(MediaType.APPLICATION_XML) @Produces(MediaType.APPLICATION_XML) public Response postScanRequest(Profile scanProfile) { Response response = null; ScanManagementService scanManagementService = new ScanManagementService(); ScanRequest scanRequest; try { scanRequest = scanManagementService.createWebScanRequest(scanProfile); UriBuilder ub = uriInfo.getBaseUriBuilder(); URI uri = ub.path("/scan/" + scanRequest.getId()).build(); response = Response.created(uri).entity(scanRequest).build(); logger.info("Successfully submitted request for new scan with id:{} ", scanRequest.getId()); } catch (ServiceException e) { response = Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); } return response; } }