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())); } } }