package com.cadrlife.devsearch.esplugin;
import com.cadrlife.devsearch.esplugin.service.CodeSearchIndexService;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.rest.*;
import static org.elasticsearch.rest.RestRequest.Method.GET;
import static org.elasticsearch.rest.RestStatus.OK;
public class StatusRestHandler extends BaseRestHandler {
private final ObjectMapper objectMapper;
private final CodeSearchIndexService indexService;
@Inject
public StatusRestHandler(Settings settings, Client client, RestController restController, CodeSearchIndexService indexService, ObjectMapper objectMapper) {
super(settings, client);
this.indexService = indexService;
this.objectMapper = objectMapper;
restController.registerHandler(GET, "/_dev-search/status", this);
}
@Override
public void handleRequest(final RestRequest request, final RestChannel channel) {
try {
channel.sendResponse(new BytesRestResponse(OK, objectMapper.writeValueAsString(indexService.getStatus())));
} catch (Exception e) {
logger.error("Failed for '{}', '{}', '{}'", e);
channel.sendResponse(new BytesRestResponse(RestStatus.INTERNAL_SERVER_ERROR, e.getMessage()));
}
}
}