UNPKG

@sussudio/platform

Version:

Internal APIs for VS Code's service injection the base services.

41 lines (40 loc) 1.68 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); } }