mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-01 01:25:38 -05:00
* Merge from vscode a234f13c45b40a0929777cb440ee011b7549eed2 * update distro * fix layering * update distro * fix tests
107 lines
2.9 KiB
TypeScript
107 lines
2.9 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { URI } from 'vs/base/common/uri';
|
|
import * as platform from 'vs/base/common/platform';
|
|
|
|
export namespace Schemas {
|
|
|
|
/**
|
|
* A schema that is used for models that exist in memory
|
|
* only and that have no correspondence on a server or such.
|
|
*/
|
|
export const inMemory = 'inmemory';
|
|
|
|
/**
|
|
* A schema that is used for setting files
|
|
*/
|
|
export const vscode = 'vscode';
|
|
|
|
/**
|
|
* A schema that is used for internal private files
|
|
*/
|
|
export const internal = 'private';
|
|
|
|
/**
|
|
* A walk-through document.
|
|
*/
|
|
export const walkThrough = 'walkThrough';
|
|
|
|
/**
|
|
* An embedded code snippet.
|
|
*/
|
|
export const walkThroughSnippet = 'walkThroughSnippet';
|
|
|
|
export const http = 'http';
|
|
|
|
export const https = 'https';
|
|
|
|
export const file = 'file';
|
|
|
|
export const mailto = 'mailto';
|
|
|
|
export const untitled = 'untitled';
|
|
|
|
export const data = 'data';
|
|
|
|
export const command = 'command';
|
|
|
|
export const vscodeRemote = 'vscode-remote';
|
|
|
|
export const vscodeRemoteResource = 'vscode-remote-resource';
|
|
|
|
export const userData = 'vscode-userdata';
|
|
}
|
|
|
|
class RemoteAuthoritiesImpl {
|
|
private readonly _hosts: { [authority: string]: string | undefined; } = Object.create(null);
|
|
private readonly _ports: { [authority: string]: number | undefined; } = Object.create(null);
|
|
private readonly _connectionTokens: { [authority: string]: string | undefined; } = Object.create(null);
|
|
private _preferredWebSchema: 'http' | 'https' = 'http';
|
|
private _delegate: ((uri: URI) => URI) | null = null;
|
|
|
|
setPreferredWebSchema(schema: 'http' | 'https') {
|
|
this._preferredWebSchema = schema;
|
|
}
|
|
|
|
setDelegate(delegate: (uri: URI) => URI): void {
|
|
this._delegate = delegate;
|
|
}
|
|
|
|
set(authority: string, host: string, port: number): void {
|
|
this._hosts[authority] = host;
|
|
this._ports[authority] = port;
|
|
}
|
|
|
|
setConnectionToken(authority: string, connectionToken: string): void {
|
|
this._connectionTokens[authority] = connectionToken;
|
|
}
|
|
|
|
rewrite(uri: URI): URI {
|
|
if (this._delegate) {
|
|
return this._delegate(uri);
|
|
}
|
|
const authority = uri.authority;
|
|
let host = this._hosts[authority];
|
|
if (host && host.indexOf(':') !== -1) {
|
|
host = `[${host}]`;
|
|
}
|
|
const port = this._ports[authority];
|
|
const connectionToken = this._connectionTokens[authority];
|
|
let query = `path=${encodeURIComponent(uri.path)}`;
|
|
if (typeof connectionToken === 'string') {
|
|
query += `&tkn=${encodeURIComponent(connectionToken)}`;
|
|
}
|
|
return URI.from({
|
|
scheme: platform.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource,
|
|
authority: `${host}:${port}`,
|
|
path: `/vscode-remote-resource`,
|
|
query
|
|
});
|
|
}
|
|
}
|
|
|
|
export const RemoteAuthorities = new RemoteAuthoritiesImpl();
|