UNPKG

electron-info

Version:

Get useful data about Electron releases.

39 lines (38 loc) 1.47 kB
import logdown from 'logdown'; import fs from 'node:fs/promises'; import { inspect } from 'node:util'; export class HTTPService { constructor(options) { this.options = options; this.logger = logdown('electron-info/HTTPService', { logger: console, markdown: false, }); if (this.options.debug) { this.logger.state.isEnabled = true; } this.logger.log('Initialized', this.options); } async downloadReleasesFile(downloadUrl, targetFile) { this.logger.log('Downloading releases file:', { downloadUrl, targetFile }); // eslint-disable-next-line no-useless-assignment let releases = []; try { const response = await fetch(downloadUrl, { signal: AbortSignal.timeout(this.options.timeout) }); if (!response.ok) { throw new Error(response.statusText); } releases = (await response.json()); } catch (error) { throw new Error(`Request failed: "${error.message}"`, { cause: error }); } // eslint-disable-next-line no-magic-numbers this.logger.info('Received data from server:', inspect(releases).toString().slice(0, 40), '...'); if (!Array.isArray(releases)) { throw new Error('Invalid data received from server'); } await fs.writeFile(targetFile, JSON.stringify(releases)); return releases; } }