pl.allegro.tech.hermes.management.api.OfflineClientsEndpoint Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hermes-management Show documentation
Show all versions of hermes-management Show documentation
Fast and reliable message broker built on top of Kafka.
package pl.allegro.tech.hermes.management.api;
import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Response;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import pl.allegro.tech.hermes.api.ErrorCode;
import pl.allegro.tech.hermes.api.TopicName;
import pl.allegro.tech.hermes.management.domain.ManagementException;
import pl.allegro.tech.hermes.management.domain.clients.IframeSource;
import pl.allegro.tech.hermes.management.domain.clients.OfflineClientsService;
@Component
@Path("/topics")
public class OfflineClientsEndpoint {
private static final Logger logger = LoggerFactory.getLogger(OfflineClientsEndpoint.class);
private final Optional offlineClientsService;
OfflineClientsEndpoint(Optional offlineClientsService) {
if (!offlineClientsService.isPresent()) {
logger.info("Offline clients bean is absent");
}
this.offlineClientsService = offlineClientsService;
}
@GET
@Path("/{topic}/offline-clients-source")
@Produces(APPLICATION_JSON)
public Response find(@PathParam("topic") String topic) {
return offlineClientsService
.map(
service ->
Response.ok(
new IframeSource(
service.getIframeSource(TopicName.fromQualifiedName(topic))))
.build())
.orElseThrow(OfflineClientsServiceAbsentException::new);
}
private static class OfflineClientsServiceAbsentException extends ManagementException {
OfflineClientsServiceAbsentException() {
super("Offline clients implementation is absent");
}
@Override
public ErrorCode getCode() {
return ErrorCode.IMPLEMENTATION_ABSENT;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy