Compare commits

...

5 Commits

Author SHA1 Message Date
Chris-MS-896
34f53709c8 Merge branch 'v-yiqcao/addHostedFile' of https://github.com/Azure/cosmos-explorer into v-yiqcao/addHostedFile 2021-01-11 11:08:34 -06:00
Chris-MS-896
ed7a8dafcf "minor changess" 2021-01-11 11:08:23 -06:00
Chris-MS-896
2e83adc7db Merge branch 'master' into v-yiqcao/addHostedFile 2021-01-08 10:27:51 -06:00
Chris-MS-896
bbddeddbc7 Merge branch 'master' into v-yiqcao/addHostedFile 2021-01-06 19:49:56 -06:00
Chris-MS-896
e28b6cd44a no message 2021-01-05 21:26:42 -06:00
3 changed files with 31 additions and 22 deletions

View File

@@ -2,33 +2,42 @@ import * as Constants from "../../../Common/Constants";
import * as DataModels from "../../../Contracts/DataModels"; import * as DataModels from "../../../Contracts/DataModels";
export class ConnectionStringParser { export class ConnectionStringParser {
public static parseConnectionString(connectionString: string): DataModels.AccessInputMetadata { public static parseConnectionString(connectionString: string): DataModels.AccessInputMetadata | undefined {
if (!!connectionString) { if (!!connectionString) {
try { try {
const accessInput: DataModels.AccessInputMetadata = {} as DataModels.AccessInputMetadata; const accessInput: DataModels.AccessInputMetadata = {} as DataModels.AccessInputMetadata;
const connectionStringParts = connectionString.split(";"); const connectionStringParts = connectionString.split(";");
connectionStringParts.forEach((connectionStringPart: string) => { connectionStringParts.forEach((connectionStringPart: string) => {
if (RegExp(Constants.EndpointsRegex.sql).test(connectionStringPart)) { const sqlMatchResult = connectionStringPart.match(Constants.EndpointsRegex.sql);
accessInput.accountName = connectionStringPart.match(Constants.EndpointsRegex.sql)[1]; const mongoMatchResult = connectionStringPart.match(Constants.EndpointsRegex.mongo);
const mongoComputeMatchResult = connectionStringPart.match(Constants.EndpointsRegex.mongoCompute);
const tableMatchResult = connectionStringPart.match(Constants.EndpointsRegex.table);
if (sqlMatchResult && sqlMatchResult.length > 1) {
accessInput.accountName = sqlMatchResult[1];
accessInput.apiKind = DataModels.ApiKind.SQL; accessInput.apiKind = DataModels.ApiKind.SQL;
} else if (RegExp(Constants.EndpointsRegex.mongo).test(connectionStringPart)) { } else if (mongoMatchResult && mongoMatchResult.length > 2) {
const matches: string[] = connectionStringPart.match(Constants.EndpointsRegex.mongo); accessInput.accountName = mongoMatchResult[2];
accessInput.accountName = matches && matches.length > 1 && matches[2];
accessInput.apiKind = DataModels.ApiKind.MongoDB; accessInput.apiKind = DataModels.ApiKind.MongoDB;
} else if (RegExp(Constants.EndpointsRegex.mongoCompute).test(connectionStringPart)) { } else if (mongoComputeMatchResult && mongoComputeMatchResult.length > 2) {
const matches: string[] = connectionStringPart.match(Constants.EndpointsRegex.mongoCompute); accessInput.accountName = mongoComputeMatchResult[2];
accessInput.accountName = matches && matches.length > 1 && matches[2];
accessInput.apiKind = DataModels.ApiKind.MongoDBCompute; accessInput.apiKind = DataModels.ApiKind.MongoDBCompute;
} else if (Constants.EndpointsRegex.cassandra.some(regex => RegExp(regex).test(connectionStringPart))) { } else if (
Constants.EndpointsRegex.cassandra &&
Constants.EndpointsRegex.cassandra.some(regex => RegExp(regex).test(connectionStringPart))
) {
Constants.EndpointsRegex.cassandra.forEach(regex => { Constants.EndpointsRegex.cassandra.forEach(regex => {
if (RegExp(regex).test(connectionStringPart)) { if (RegExp(regex).test(connectionStringPart)) {
accessInput.accountName = connectionStringPart.match(regex)[1]; const connectionMatch = connectionStringPart.match(regex);
accessInput.apiKind = DataModels.ApiKind.Cassandra; if (connectionMatch && connectionMatch.length > 1) {
accessInput.accountName = connectionMatch[1];
accessInput.apiKind = DataModels.ApiKind.Cassandra;
}
} }
}); });
} else if (RegExp(Constants.EndpointsRegex.table).test(connectionStringPart)) { } else if (tableMatchResult && tableMatchResult.length > 1) {
accessInput.accountName = connectionStringPart.match(Constants.EndpointsRegex.table)[1]; accessInput.accountName = tableMatchResult[1];
accessInput.apiKind = DataModels.ApiKind.Table; accessInput.apiKind = DataModels.ApiKind.Table;
} else if (connectionStringPart.indexOf("ApiKind=Gremlin") >= 0) { } else if (connectionStringPart.indexOf("ApiKind=Gremlin") >= 0) {
accessInput.apiKind = DataModels.ApiKind.Graph; accessInput.apiKind = DataModels.ApiKind.Graph;

View File

@@ -4,7 +4,7 @@ import * as DataModels from "../Contracts/DataModels";
import { DefaultAccountExperienceType } from "../DefaultAccountExperienceType"; import { DefaultAccountExperienceType } from "../DefaultAccountExperienceType";
export class DefaultExperienceUtility { export class DefaultExperienceUtility {
public static getDefaultExperienceFromDatabaseAccount(databaseAccount: DataModels.DatabaseAccount): string { public static getDefaultExperienceFromDatabaseAccount(databaseAccount: DataModels.DatabaseAccount): string | null {
if (!databaseAccount) { if (!databaseAccount) {
return null; return null;
} }
@@ -81,11 +81,9 @@ export class DefaultExperienceUtility {
private static _getDefaultExperience(kind: string, capabilities: DataModels.Capability[]): string { private static _getDefaultExperience(kind: string, capabilities: DataModels.Capability[]): string {
const defaultDefaultExperience: string = Constants.DefaultAccountExperience.DocumentDB; const defaultDefaultExperience: string = Constants.DefaultAccountExperience.DocumentDB;
const defaultExperienceFromKind: string = DefaultExperienceUtility._getDefaultExperienceFromAccountKind(kind); const defaultExperienceFromKind: string = DefaultExperienceUtility._getDefaultExperienceFromAccountKind(kind) || "";
const defaultExperienceFromCapabilities: string = DefaultExperienceUtility._getDefaultExperienceFromAccountCapabilities( const defaultExperienceFromCapabilities: string =
capabilities DefaultExperienceUtility._getDefaultExperienceFromAccountCapabilities(capabilities) || "";
);
if (!!defaultExperienceFromKind) { if (!!defaultExperienceFromKind) {
return defaultExperienceFromKind; return defaultExperienceFromKind;
} }
@@ -97,7 +95,7 @@ export class DefaultExperienceUtility {
return defaultDefaultExperience; return defaultDefaultExperience;
} }
private static _getDefaultExperienceFromAccountKind(kind: string): string { private static _getDefaultExperienceFromAccountKind(kind: string): string | null {
if (!kind) { if (!kind) {
return null; return null;
} }
@@ -113,7 +111,7 @@ export class DefaultExperienceUtility {
return null; return null;
} }
private static _getDefaultExperienceFromAccountCapabilities(capabilities: DataModels.Capability[]): string { private static _getDefaultExperienceFromAccountCapabilities(capabilities: DataModels.Capability[]): string | null {
if (!capabilities) { if (!capabilities) {
return null; return null;
} }

View File

@@ -62,6 +62,8 @@
"./src/GitHub/GitHubConnector.ts", "./src/GitHub/GitHubConnector.ts",
"./src/Index.ts", "./src/Index.ts",
"./src/NotebookWorkspaceManager/NotebookWorkspaceResourceProviderMockClients.ts", "./src/NotebookWorkspaceManager/NotebookWorkspaceResourceProviderMockClients.ts",
"./src/Platform/Hosted/Helpers/ConnectionStringParser.ts",
"./src/Platform/Hosted/HostedUtils.ts",
"./src/ReactDevTools.ts", "./src/ReactDevTools.ts",
"./src/ResourceProvider/IResourceProviderClient.ts", "./src/ResourceProvider/IResourceProviderClient.ts",
"./src/Shared/Constants.ts", "./src/Shared/Constants.ts",