mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-28 01:25:39 -05:00
* removes more builder references * remove builder from profiler * formatting * fix profiler dailog * remove builder from oatuhdialog * remove the rest of builder references * formatting * add more strict null checks to base * enable strict tslint rules * fix formatting * fix compile error * fix the rest of the hygeny issues and add pipeline step * fix pipeline files
90 lines
2.7 KiB
TypeScript
90 lines
2.7 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 { localize } from 'vs/nls';
|
|
|
|
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
|
|
|
|
export namespace constants {
|
|
export const userPropName = 'user';
|
|
export const knoxPortPropName = 'knoxport';
|
|
export const clusterPropName = 'clustername';
|
|
export const passwordPropName = 'password';
|
|
export const defaultKnoxPort = '30443';
|
|
}
|
|
/**
|
|
* This is a temporary connection definition, with known properties for Knox gateway connections.
|
|
* Long term this should be refactored to an extension contribution
|
|
*
|
|
* @export
|
|
*/
|
|
export class NotebookConnection {
|
|
private _host: string;
|
|
private _knoxPort: string;
|
|
|
|
constructor(private _connectionProfile: IConnectionProfile) {
|
|
if (!this._connectionProfile) {
|
|
throw new Error(localize('connectionInfoMissing', 'connectionInfo is required'));
|
|
}
|
|
}
|
|
|
|
public get connectionProfile(): IConnectionProfile {
|
|
return this._connectionProfile;
|
|
}
|
|
|
|
|
|
public get host(): string {
|
|
if (!this._host) {
|
|
this.ensureHostAndPort();
|
|
}
|
|
return this._host;
|
|
}
|
|
|
|
/**
|
|
* Sets host and port values, using any ',' or ':' delimited port in the hostname in
|
|
* preference to the built in port.
|
|
*/
|
|
private ensureHostAndPort(): void {
|
|
this._host = this.connectionProfile.serverName;
|
|
this._knoxPort = NotebookConnection.getKnoxPortOrDefault(this.connectionProfile);
|
|
// determine whether the host has either a ',' or ':' in it
|
|
this.setHostAndPort(',');
|
|
this.setHostAndPort(':');
|
|
}
|
|
|
|
// set port and host correctly after we've identified that a delimiter exists in the host name
|
|
private setHostAndPort(delimeter: string): void {
|
|
let originalHost = this._host;
|
|
let index = originalHost.indexOf(delimeter);
|
|
if (index > -1) {
|
|
this._host = originalHost.slice(0, index);
|
|
this._knoxPort = originalHost.slice(index + 1);
|
|
}
|
|
}
|
|
|
|
public get user(): string {
|
|
return this._connectionProfile.options[constants.userPropName];
|
|
}
|
|
|
|
public get password(): string {
|
|
return this._connectionProfile.options[constants.passwordPropName];
|
|
}
|
|
|
|
public get knoxport(): string {
|
|
if (!this._knoxPort) {
|
|
this.ensureHostAndPort();
|
|
}
|
|
return this._knoxPort;
|
|
}
|
|
|
|
private static getKnoxPortOrDefault(connectionProfile: IConnectionProfile): string {
|
|
let port = connectionProfile.options[constants.knoxPortPropName];
|
|
if (!port) {
|
|
port = constants.defaultKnoxPort;
|
|
}
|
|
return port;
|
|
}
|
|
}
|