package org.karmaexchange.resources;
import static org.karmaexchange.util.OfyService.ofy;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.karmaexchange.dao.BaseDao;
import org.karmaexchange.dao.Organization;
import org.karmaexchange.dao.derived.EventSourceInfo;
import org.karmaexchange.resources.msg.ErrorResponseMsg;
import org.karmaexchange.resources.msg.ErrorResponseMsg.ErrorInfo;
import com.googlecode.objectify.Key;
@Path(EventSourceInfoResource.RESOURCE_PATH)
public class EventSourceInfoResource {
public static final String RESOURCE_PATH = "/admin/event_source_info";
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public EventSourceInfo getResource(
@QueryParam("orgId") String orgId) {
Key<Organization> orgKey = validateOrgId(orgId);
return ofy().load()
.key(EventSourceInfo.createKey(orgKey))
.now();
}
@POST
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public void updateResource(@QueryParam("orgId") String orgId,
EventSourceInfo inputSourceInfo) {
Key<Organization> orgKey =
validateOrgId(orgId);
inputSourceInfo.init(orgKey);
BaseDao.upsert(inputSourceInfo);
}
private Key<Organization> validateOrgId(String orgId) {
if (orgId == null) {
throw ErrorResponseMsg.createException(
"'orgId' must be specified",
ErrorInfo.Type.BAD_REQUEST);
}
return Organization.createKey(orgId);
}
}