39 lines
1012 B
Plaintext
39 lines
1012 B
Plaintext
String datastar_data_lines(String field, String value)
|
|
{
|
|
String out = "";
|
|
for(String line : split(value, "\n"))
|
|
out += "data: " + field + " " + line + "\n";
|
|
return(out);
|
|
}
|
|
|
|
void datastar_sse_headers(Request& context)
|
|
{
|
|
context.call["app"]["page_type"] = "blank";
|
|
context.header["Content-Type"] = "text/event-stream; charset=utf-8";
|
|
context.header["Cache-Control"] = "no-cache, no-store, must-revalidate";
|
|
context.header["X-Accel-Buffering"] = "no";
|
|
}
|
|
|
|
String datastar_event(String event_name, StringMap fields)
|
|
{
|
|
String out = "event: " + event_name + "\n";
|
|
for(const auto& field : fields)
|
|
out += datastar_data_lines(field.first, field.second);
|
|
out += "\n";
|
|
return(out);
|
|
}
|
|
|
|
String datastar_patch_elements(String html)
|
|
{
|
|
StringMap fields;
|
|
fields["elements"] = html;
|
|
return(datastar_event("datastar-patch-elements", fields));
|
|
}
|
|
|
|
String datastar_patch_signals(String signals_json)
|
|
{
|
|
StringMap fields;
|
|
fields["signals"] = signals_json;
|
|
return(datastar_event("datastar-patch-signals", fields));
|
|
}
|