package org.openstack.atlas.api.mgmt.resources;
import org.openstack.atlas.api.faults.HttpResponseBuilder;
import org.openstack.atlas.api.helpers.ResponseFactory;
import org.openstack.atlas.api.mgmt.repository.ValidatorRepository;
import org.openstack.atlas.api.mgmt.resources.providers.ManagementDependencyProvider;
import org.openstack.atlas.api.validation.context.HttpRequestType;
import org.openstack.atlas.api.validation.results.ValidatorResult;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.ZeusEvent;
import javax.ws.rs.POST;
import javax.ws.rs.core.Response;
public class CallbackResource extends ManagementDependencyProvider {
@POST
public Response receiveCallbackMessage(ZeusEvent event) {
try {
ValidatorResult result = ValidatorRepository.getValidatorFor(ZeusEvent.class).validate(event, HttpRequestType.POST);
if (!result.passedValidation()) {
return Response.status(400).entity(HttpResponseBuilder.buildBadRequestResponse("Validation fault", result.getValidationErrorMessages())).build();
}
org.openstack.atlas.service.domain.pojos.ZeusEvent zeusEvent = getDozerMapper().map(event, org.openstack.atlas.service.domain.pojos.ZeusEvent.class);
callbackService.handleZeusEvent(zeusEvent);
return Response.status(Response.Status.OK).build();
} catch (Exception e) {
return ResponseFactory.getErrorResponse(e, null, null);
}
}
}