package com.nvarghese.beowulf.smf.scan.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.bson.types.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.nvarghese.beowulf.smf.scan.dto.scanrequest.ScanRequest;
import com.nvarghese.beowulf.smf.scan.services.ResourceNotFoundException;
import com.nvarghese.beowulf.smf.scan.services.ScanManagementService;
/**
* This resource provides answers to simple queries such as start time, expected
* time , percentage done as defined in requirement.
*/
@Path("/api/scan/{id}")
public class SimpleQueryResource {
static Logger logger = LoggerFactory.getLogger(SimpleQueryResource.class);
@GET
@Produces(MediaType.APPLICATION_XML)
public Response getSimpleInfo(@PathParam("id") String id) {
logger.info("Getting information for id: " + id);
ScanRequest scanRequest = null;
ObjectId objectId = null;
ScanManagementService scanManagementService = new ScanManagementService();
Response response = null;
try {
if (ObjectId.isValid(id)) {
objectId = new ObjectId(id);
scanRequest = scanManagementService.getWebScanRequest(objectId);
response = Response.status(Status.OK).entity(scanRequest).build();
} else {
response = Response.status(Status.BAD_REQUEST).entity("Id is invalid").build();
}
} catch (ResourceNotFoundException e) {
logger.warn("Requested webscandocument for id: {} cannot be found");
response = Response.status(Status.NOT_FOUND).entity("Resource not found").build();
} catch (Exception e) {
logger.error("Failed to retrieve web scan document. Reason: {}", e.getMessage(), e);
response = Response.status(Status.NOT_FOUND).entity("Resource not found").build();
}
return response;
}
}