package com.hubspot.blazar.resources;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.google.common.base.Optional;
import com.google.inject.Inject;
import com.hubspot.blazar.base.notifications.InstantMessageConfiguration;
import com.hubspot.blazar.data.service.InstantMessageConfigurationService;
import com.hubspot.jackson.jaxrs.PropertyFiltering;
@Path("/instant-message-configurations")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class InstantMessageResource {
@Inject
private final InstantMessageConfigurationService instantMessageConfigurationService;
@Inject
public InstantMessageResource(InstantMessageConfigurationService instantMessageConfigurationService) {
this.instantMessageConfigurationService = instantMessageConfigurationService;
}
@GET
@PropertyFiltering
public Set<InstantMessageConfiguration> getAll() {
return instantMessageConfigurationService.getAll();
}
@GET
@Path("/{id}")
@PropertyFiltering
public Optional<InstantMessageConfiguration> get(@PathParam("id") long id) {
return instantMessageConfigurationService.get(id);
}
@PUT
@Path("/{id}")
public void update(InstantMessageConfiguration instantMessageConfiguration, @PathParam("id") long id) {
instantMessageConfigurationService.update(instantMessageConfiguration.withNewId(id));
}
@POST
public InstantMessageConfiguration insert(InstantMessageConfiguration instantMessageConfiguration) {
return instantMessageConfigurationService.insert(instantMessageConfiguration);
}
@DELETE
@Path("/{id}")
public void delete(@PathParam("id") long id) {
instantMessageConfigurationService.delete(id);
}
@GET
@Path("/branch/{branchId}")
@PropertyFiltering
public Set<InstantMessageConfiguration> getAllByBranchId(@PathParam("branchId") long branchId) {
return instantMessageConfigurationService.getAllWithBranchId(branchId);
}
}