@fanoutio/grip
Version:
GRIP Interface Library
35 lines (34 loc) • 1.07 kB
JavaScript
import { encodeCString, escapeQuotes } from './string.js';
import { encodeBytesToBase64String } from './base64.js';
export function createKeepAliveHeader(data, timeout) {
let output = null;
if (typeof data === 'string') {
try {
output = encodeCString(data) + '; format=cstring';
}
catch (ex) {
output = null;
}
}
if (output == null) {
const textEncoder = new TextEncoder();
const bytes = typeof data === 'string' ? textEncoder.encode(data) : data;
output = encodeBytesToBase64String(bytes) + '; format=base64';
}
output += `; timeout=${Math.floor(timeout)}`;
return output;
}
export function createMetaHeader(data) {
return Object.entries(data)
.map(([key, value]) => {
return `${key}="${escapeQuotes(value)}"`;
})
.join(', ');
}
export function createNextLinkHeader(uri, timeout = 0) {
let output = `<${uri}>; rel=next`;
if (timeout > 0) {
output += `; timeout=${Math.floor(timeout)}`;
}
return output;
}