package com.hubspot.blazar.resources;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.eventbus.EventBus;
import com.google.inject.Inject;
import com.hubspot.blazar.github.GitHubProtos.CreateEvent;
import com.hubspot.blazar.github.GitHubProtos.DeleteEvent;
import com.hubspot.blazar.github.GitHubProtos.PushEvent;
@Path("/github/webhooks")
@Consumes(MediaType.APPLICATION_JSON)
public class GitHubWebhookResource {
private static final Logger LOG = LoggerFactory.getLogger(GitHubWebhookResource.class);
private final EventBus eventBus;
@Inject
public GitHubWebhookResource(EventBus eventBus) {
this.eventBus = eventBus;
}
@POST
@Path("/create")
public void processCreateEvent(CreateEvent createEvent) {
LOG.info("Got CreateEvent for ref {} for {} ", createEvent.getRef(), createEvent.getRepository().getFullName());
eventBus.post(createEvent);
}
@POST
@Path("/delete")
public void processDeleteEvent(DeleteEvent deleteEvent) {
LOG.info("Got DeleteEvent for ref {} for {}", deleteEvent.getRef(), deleteEvent.getRepository().getFullName());
eventBus.post(deleteEvent);
}
@POST
@Path("/push")
public void processPushEvent(PushEvent pushEvent) {
LOG.info("Got PushEvent for ref {} beforeSha {} afterSha {} for {}",
pushEvent.getRef(), pushEvent.getBefore(), pushEvent.getAfter(), pushEvent.getRepository().getFullName());
eventBus.post(pushEvent);
}
}