提交 67906686 编写于 作者: J Joao Moreno

use electron net for update checks

上级 76008aac
......@@ -17,6 +17,10 @@ import { createGunzip } from 'zlib';
export type Agent = any;
export interface IRawRequestFunction {
(options: http.RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
}
export interface IRequestOptions {
type?: string;
url?: string;
......@@ -28,6 +32,7 @@ export interface IRequestOptions {
agent?: Agent;
followRedirects?: number;
strictSSL?: boolean;
getRawRequest?(options: IRequestOptions): IRawRequestFunction;
}
export interface IRequestContext {
......@@ -44,12 +49,18 @@ export interface IRequestFunction {
(options: IRequestOptions): TPromise<IRequestContext>;
}
function getNodeRequest(options: IRequestOptions): IRawRequestFunction {
const endpoint = parseUrl(options.url);
return endpoint.protocol === 'https:' ? https.request : http.request;
}
export function request(options: IRequestOptions): TPromise<IRequestContext> {
let req: http.ClientRequest;
return new TPromise<IRequestContext>((c, e) => {
const endpoint = parseUrl(options.url);
const rawRequest = endpoint.protocol === 'https:' ? https.request : http.request;
const getRawRequest = options.getRawRequest || getNodeRequest;
const rawRequest = getRawRequest(options);
const opts: https.RequestOptions = {
hostname: endpoint.hostname,
port: endpoint.port ? parseInt(endpoint.port) : (endpoint.protocol === 'https:' ? 443 : 80),
......
......@@ -44,7 +44,7 @@ import { EnvironmentService } from 'vs/platform/environment/node/environmentServ
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ConfigurationService } from 'vs/platform/configuration/node/configurationService';
import { IRequestService } from 'vs/platform/request/node/request';
import { RequestService } from 'vs/platform/request/node/requestService';
import { RequestService } from 'vs/platform/request/electron-main/requestService';
import { IURLService } from 'vs/platform/url/common/url';
import { URLChannel } from 'vs/platform/url/common/urlIpc';
import { URLService } from 'vs/platform/url/electron-main/urlService';
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { TPromise } from 'vs/base/common/winjs.base';
import { IRequestOptions, IRequestContext, request, IRawRequestFunction } from 'vs/base/node/request';
import { RequestService as NodeRequestService } from 'vs/platform/request/node/requestService';
import { assign } from 'vs/base/common/objects';
import { net } from 'electron';
function getRawRequest(options: IRequestOptions): IRawRequestFunction {
return net.request as any as IRawRequestFunction;
}
export class RequestService extends NodeRequestService {
request(options: IRequestOptions): TPromise<IRequestContext> {
return super.request(options, options => request(assign({}, options || {}, { getRawRequest })));
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册