class InfoApiHandler implements Callable<FullHttpResponse> {

    @Override
    public FullHttpResponse call() throws Exception {
    	LoggingService.logDebug(MODULE_NAME, "Processing info http request");
        if (!ApiHandlerHelpers.validateMethod(this.req, GET)) {
            LoggingService.logError(MODULE_NAME, "Request method not allowed", new AgentUserException("Request method not allowed"));
            return ApiHandlerHelpers.methodNotAllowedResponse();
        }

        if (!ApiHandlerHelpers.validateAccessToken(this.req)) {
            String errorMsg = "Incorrect access token";
            outputBuffer.writeBytes(errorMsg.getBytes(UTF_8));
            LoggingService.logError(MODULE_NAME, "Request method not allowed", new AgentUserException(errorMsg));
            return ApiHandlerHelpers.unauthorizedResponse(outputBuffer, errorMsg);
        }

        try {
            String[] info = Configuration.getConfigReport().split("\\\\n");

            ObjectMapper objectMapper = new ObjectMapper();
            Map<String, String> resultMap = new HashMap<>();
            for (String it : info) {
                String[] infoItem = it.split(" : ");
                String key = infoItem[0].trim().toLowerCase().replace(" ", "-");
                if (key.equals("gps-coordinates(lat,lon)")) {
                    key = "gps-coordinates";
                } else if (key.equals("developer's-mode")) {
                    key = "developer-mode";
                }
                resultMap.put(key, infoItem[1].trim());
            }

            String jsonResult = objectMapper.writeValueAsString(resultMap);
            FullHttpResponse res;
            res = ApiHandlerHelpers.successResponse(outputBuffer, jsonResult);
            res.headers().set(HttpHeaderNames.CONTENT_TYPE, "application/json");
            LoggingService.logDebug(MODULE_NAME, "Finished processing info http request");
            return res;
        } catch (Exception e) {
            String errorMsg = "Log message parsing error";
            LoggingService.logError(MODULE_NAME, errorMsg, new AgentUserException(e.getMessage(), e));
            return ApiHandlerHelpers.badRequestResponse(outputBuffer, errorMsg);
        }
    }

    public  InfoApiHandler(HttpRequest request, ByteBuf outputBuffer, byte[] content);

}