package dev.dinauer.metrics.service; import dev.dinauer.metrics.service.client.auth.AuthenticationService; import dev.dinauer.metrics.service.model.BucketUnit; import dev.dinauer.metrics.service.model.Collection; import jakarta.inject.Inject; import jakarta.ws.rs.*; import java.util.List; import java.util.Map; import java.util.Optional; @Path("/{resource}/{metric}") public class Resource { @Inject AuthenticationService authenticationService; @Inject Service service; @POST public void insert(@PathParam("resource") String resource, @PathParam("metric") String metric, Map values) { if (authenticationService.canWrite()) { service.index(resource, metric, values); } else { throw new ForbiddenException(); } } @GET public List get(@PathParam("resource") String resource, @PathParam("metric") String metric, @QueryParam("bucket-unit") Optional bucketUnit) { if (authenticationService.canRead()) { return service.get(resource, metric, bucketUnit.orElse(BucketUnit.RAW)); } else { throw new ForbiddenException(); } } }