lynkr
Version:
Self-hosted LLM gateway and tier-routing proxy for Claude Code, Cursor, and Codex. Routes across Ollama, AWS Bedrock, OpenRouter, Databricks, Azure OpenAI, llama.cpp, and LM Studio with prompt caching, MCP tools, and 60-80% cost savings.
31 lines (26 loc) • 1.04 kB
JavaScript
function parseMultipart(buffer, boundary) {
const boundaryStr = `--${boundary}`;
const str = buffer.toString("latin1");
const parts = str.split(boundaryStr).filter((p) => p.trim() && p.trim() !== "--");
let file = null;
let filename = null;
let mimeType = null;
let purpose = null;
for (const part of parts) {
const headerEnd = part.indexOf("\r\n\r\n");
if (headerEnd === -1) continue;
const headers = part.substring(0, headerEnd);
const body = part.substring(headerEnd + 4).replace(/\r\n$/, "");
if (headers.includes('name="purpose"')) {
purpose = body.trim();
} else if (headers.includes('name="file"') || headers.includes("filename=")) {
const fnMatch = headers.match(/filename="([^"]+)"/);
if (fnMatch) filename = fnMatch[1];
const ctMatch = headers.match(/Content-Type:\s*(.+)/i);
if (ctMatch) mimeType = ctMatch[1].trim();
file = Buffer.from(body, "latin1");
}
}
return { file, filename, mimeType, purpose };
}
module.exports = { parseMultipart };