UNPKG

sussudio

Version:

An unofficial VS Code Internal API

42 lines (41 loc) 2.12 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as https from 'https'; import { AbstractOneDataSystemAppender } from "../common/1dsAppender.mjs"; export class OneDataSystemAppender extends AbstractOneDataSystemAppender { constructor(isInternalTelemetry, eventPrefix, defaultData, iKeyOrClientFactory) { // Override the way events get sent since node doesn't have XHTMLRequest const customHttpXHROverride = { sendPOST: (payload, oncomplete) => { const options = { method: 'POST', headers: { ...payload.headers, 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload.data) } }; try { const req = https.request(payload.urlString, options, res => { res.on('data', function (responseData) { oncomplete(res.statusCode ?? 200, res.headers, responseData.toString()); }); // On response with error send status of 0 and a blank response to oncomplete so we can retry events res.on('error', function (err) { oncomplete(0, {}); }); }); req.write(payload.data); req.end(); } catch { // If it errors out, send status of 0 and a blank response to oncomplete so we can retry events oncomplete(0, {}); } } }; super(isInternalTelemetry, eventPrefix, defaultData, iKeyOrClientFactory, customHttpXHROverride); } }