"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.provider = void 0;
exports.listenEditorSettings = listenEditorSettings;
exports.handler = handler;
const language_service_1 = require("@volar/language-service");
const request_light_1 = require("request-light");
exports.provider = {
    async stat(uri) {
        const text = await this.readFile(uri);
        if (text !== undefined) {
            return {
                type: language_service_1.FileType.File,
                size: text.length,
                ctime: 0,
                mtime: 0,
            };
        }
    },
    readFile(uri) {
        return handler(uri);
    },
    readDirectory() {
        return [];
    },
};
function listenEditorSettings(server) {
    server.configurations.onDidChange(updateHttpSettings);
    updateHttpSettings();
    async function updateHttpSettings() {
        const httpSettings = await server.configurations.get('http');
        (0, request_light_1.configure)(httpSettings?.proxy, httpSettings?.proxyStrictSSL ?? false);
    }
}
function handler(uri) {
    const headers = { 'Accept-Encoding': 'gzip, deflate' };
    return (0, request_light_1.xhr)({ url: uri.toString(true), followRedirects: 5, headers }).then(response => {
        if (response.status !== 200) {
            return;
        }
        return response.responseText;
    }, (error) => {
        return Promise.reject(error.responseText || (0, request_light_1.getErrorStatusDescription)(error.status) || error);
    });
}
//# sourceMappingURL=http.js.map