SSEResponse.parse constructor
SSEResponse.parse(
- String rawResponse
Parses a raw SSE response string and returns an SSEResponse instance.
rawResponse is the raw response string to parse.
Returns an SSEResponse instance with the parsed data.
Implementation
factory SSEResponse.parse(String rawResponse) {
String? id;
String? event;
String? comment;
StringBuffer dataBuffer = StringBuffer();
final RegExp regex = RegExp(r'^(id|event|data|:|comment):\s*(.*)$');
for (String line in rawResponse.split('\n')) {
final match = regex.firstMatch(line);
if (match != null) {
final key = match.group(1);
final value = match.group(2)?.trim() ?? '';
switch (key) {
case 'id':
id = value;
break;
case 'event':
event = value;
break;
case 'data':
if (dataBuffer.isNotEmpty) dataBuffer.write('\n');
dataBuffer.write(value);
break;
case ':':
comment = value;
break;
}
}
}
dynamic parsedData;
final jsonData = dataBuffer.toString();
if (jsonData.isNotEmpty) {
try {
parsedData = json.decode(jsonData);
} catch (e) {
return SSEResponse.raw(rawResponse);
}
}
return SSEResponse(
id ?? '', event ?? '', comment ?? '', parsedData, rawResponse);
}