public ServerSentEvent convert()

in aliyun-sdk-opensearch/src/main/java/com/aliyun/opensearch/OpenSearchClient.java [478:520]


        public ServerSentEvent<String> convert(List<String> lines) {
            ServerSentEvent.Builder<String> sseBuilder = ServerSentEvent.builder();
            StringBuilder data = null;
            StringBuilder comment = null;

            for (String line : lines) {
                if (line.startsWith("data:")) {
                    int length = line.length();
                    if (length > 5) {
                        int index = (line.charAt(5) != ' ' ? 5 : 6);
                        if (length > index) {
                            data = (data != null ? data : new StringBuilder());
                            data.append(line, index, line.length());
                            data.append('\n');
                        }
                    }
                } else {
                    if (line.startsWith("id:")) {
                        sseBuilder.id(line.substring(3).trim());
                    }
                    else if (line.startsWith("event:")) {
                        sseBuilder.event(line.substring(6).trim());
                    }
                    else if (line.startsWith("retry:")) {
                        sseBuilder.retry(Duration.ofMillis(Long.parseLong(line.substring(6).trim())));
                    }
                    else if (line.startsWith(":")) {
                        comment = (comment != null ? comment : new StringBuilder());
                        comment.append(line.substring(1).trim()).append('\n');
                    }
                }
            }

            String decodedData = (data != null ? decodeData(data) : null);

            if (comment != null) {
                sseBuilder.comment(comment.substring(0, comment.length() - 1));
            }
            if (decodedData != null) {
                sseBuilder.data(decodedData);
            }
            return sseBuilder.build();
        }