package fr.titionfire.ffsaf.rest; import fr.titionfire.ffsaf.rest.client.StateIdService; import fr.titionfire.ffsaf.rest.data.AssoData; import fr.titionfire.ffsaf.rest.exception.DNotFoundException; import io.smallrye.mutiny.Uni; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.rest.client.inject.RestClient; @Path("api/asso") public class AssoEndpoints { @RestClient StateIdService stateIdService; @GET @Path("state_id/{stateId}") @Produces(MediaType.APPLICATION_JSON) @Operation(hidden = true) public Uni getAssoInfo(@PathParam("stateId") String stateId) { return stateIdService.get_status(stateId).onFailure().transform(throwable -> { if (throwable instanceof WebApplicationException exception) { if (exception.getResponse().getStatus() == 404) return new DNotFoundException("Service momentanément indisponible"); if (exception.getResponse().getStatus() == 400) return new DNotFoundException("Asso introuvable"); } return throwable; }); } }