All checks were successful
Deploy Production Server / if_merged (pull_request) Successful in 10m4s
39 lines
1.4 KiB
Java
39 lines
1.4 KiB
Java
package fr.titionfire.ffsaf.rest;
|
|
|
|
import fr.titionfire.ffsaf.rest.client.SirenService;
|
|
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;
|
|
|
|
@RestClient
|
|
SirenService sirenService;
|
|
|
|
@GET
|
|
@Path("state_id/{stateId}")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
@Operation(hidden = true)
|
|
public Uni<AssoData> getAssoInfo(@PathParam("stateId") String stateId) {
|
|
return ((stateId.charAt(0) == 'W') ? stateIdService.get_rna(stateId) : sirenService.get_unite(
|
|
stateId).chain(stateIdService::getAssoDataFromUnit)).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;
|
|
});
|
|
}
|
|
}
|