MCPcopy
hub / github.com/wavetermdev/waveterm / getUrlInSession

Function getUrlInSession

emain/emain-ipc.ts:81–131  ·  view source on GitHub ↗
(session: Electron.Session, url: string)

Source from the content-addressed store, hash-verified

79}
80
81function getUrlInSession(session: Electron.Session, url: string): Promise<UrlInSessionResult> {
82 return new Promise((resolve, reject) => {
83 if (url.startsWith("data:")) {
84 try {
85 const parsed = parseDataUrl(url);
86 const buffer = Buffer.from(parsed.buffer);
87 const readable = Readable.from(buffer);
88 resolve({ stream: readable, mimeType: parsed.mimeType, fileName: "image" });
89 } catch (err) {
90 return reject(err);
91 }
92 return;
93 }
94 const request = electron.net.request({
95 url,
96 method: "GET",
97 session,
98 });
99 const readable = new Readable({
100 read() {},
101 });
102 request.on("response", (response) => {
103 const statusCode = response.statusCode;
104 if (statusCode < 200 || statusCode >= 300) {
105 readable.destroy();
106 request.abort();
107 reject(new Error(`HTTP request failed with status ${statusCode}: ${response.statusMessage || ""}`));
108 return;
109 }
110
111 const mimeType = cleanMimeType(getSingleHeaderVal(response.headers, "content-type"));
112 const fileName = getFileNameFromUrl(url) || "image";
113 response.on("data", (chunk) => {
114 readable.push(chunk);
115 });
116 response.on("end", () => {
117 readable.push(null);
118 resolve({ stream: readable, mimeType, fileName });
119 });
120 response.on("error", (err) => {
121 readable.destroy(err);
122 reject(err);
123 });
124 });
125 request.on("error", (err) => {
126 readable.destroy(err);
127 reject(err);
128 });
129 request.end();
130 });
131}
132
133function saveImageFileWithNativeDialog(
134 sender: electron.WebContents,

Callers 1

initIpcHandlersFunction · 0.85

Calls 7

parseDataUrlFunction · 0.90
cleanMimeTypeFunction · 0.85
getSingleHeaderValFunction · 0.85
getFileNameFromUrlFunction · 0.85
onMethod · 0.80
pushMethod · 0.80
destroyMethod · 0.45

Tested by

no test coverage detected