34 lines
1.2 KiB
Java
34 lines
1.2 KiB
Java
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<AssoData> 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;
|
|
});
|
|
}
|
|
}
|