MCPcopy Create free account
hub / github.com/csskit/csskit / downloadFile

Function downloadFile

packages/csskit_vscode/src/main.js:169–199  ·  view source on GitHub ↗

* @param {string} url * @param {string} dest * @returns {Promise }

(url, dest)

Source from the content-addressed store, hash-verified

167 * @returns {Promise<void>}
168 */
169function downloadFile(url, dest) {
170 return new Promise((resolve, reject) => {
171 /**
172 * @param {string} currentUrl
173 */
174 function follow(currentUrl) {
175 https
176 .get(currentUrl, { headers: { "User-Agent": "csskit-vscode" } }, (res) => {
177 if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
178 follow(res.headers.location);
179 res.resume();
180 return;
181 }
182 if (res.statusCode !== 200) {
183 reject(new Error(`Download failed with status ${res.statusCode}`));
184 res.resume();
185 return;
186 }
187 const file = fs.createWriteStream(dest);
188 res.pipe(file);
189 file.on("finish", () => file.close(() => resolve()));
190 file.on("error", (e) => {
191 fs.unlink(dest, () => {});
192 reject(e);
193 });
194 })
195 .on("error", reject);
196 }
197 follow(url);
198 });
199}

Callers 1

ensureBinaryFunction · 0.85

Calls 1

followFunction · 0.85

Tested by

no test coverage detected