Add optional Datastar plumbing
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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));
|
||||
}
|
||||
Reference in New Issue
Block a user