Skip to content

Commit aba4101

Browse files
authored
[Tables] Support Emulator and Azurite (Azure#13165)
* Support Emulator and Azurite * Support UseDevelopmentStorage connection string * make usedevelopmentstorage case-insensitive * Use toLowerCase
1 parent 55a9780 commit aba4101

File tree

4 files changed

+25
-14
lines changed

4 files changed

+25
-14
lines changed

sdk/tables/data-tables/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## 1.0.0-beta.4 (2021-01-12)
44

5+
- Fix issue that prevented support for Azure Storage Emulator and Azurite [#13165](https://github.com/Azure/azure-sdk-for-js/pull/13165)
6+
57
### Breaking Changes
68

79
- Don't deserialize DateTime into a JavaScript Date to avoid losing precision [#12650](https://github.com/Azure/azure-sdk-for-js/pull/12650)

sdk/tables/data-tables/src/TableClient.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ export class TableClient {
132132
? credentialOrOptions
133133
: options) || {};
134134

135+
clientOptions.endpoint = clientOptions.endpoint || url;
135136
if (!clientOptions.userAgentOptions) {
136137
clientOptions.userAgentOptions = {};
137138
}
@@ -151,15 +152,15 @@ export class TableClient {
151152
} else {
152153
// The client is meant to be a regular service client, so we need to create the regular set of pipelines
153154
const internalPipelineOptions: InternalPipelineOptions = {
154-
...clientOptions,
155-
...{
156-
loggingOptions: {
157-
logger: logger.info,
158-
allowedHeaderNames: [...TablesLoggingAllowedHeaderNames]
159-
}
155+
loggingOptions: {
156+
logger: logger.info,
157+
allowedHeaderNames: [...TablesLoggingAllowedHeaderNames]
160158
}
161159
};
162-
pipeline = createPipelineFromOptions(internalPipelineOptions, credential);
160+
pipeline = {
161+
...clientOptions,
162+
...createPipelineFromOptions(internalPipelineOptions, credential)
163+
};
163164
}
164165

165166
this.tableName = tableName;

sdk/tables/data-tables/src/TableServiceClient.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ export class TableServiceClient {
103103
? credentialOrOptions
104104
: options) || {};
105105

106+
clientOptions.endpoint = clientOptions.endpoint || url;
107+
106108
if (!clientOptions.userAgentOptions) {
107109
clientOptions.userAgentOptions = {};
108110
}
@@ -114,16 +116,16 @@ export class TableServiceClient {
114116
}
115117

116118
const internalPipelineOptions: InternalPipelineOptions = {
117-
...clientOptions,
118-
...{
119-
loggingOptions: {
120-
logger: logger.info,
121-
allowedHeaderNames: [...TablesLoggingAllowedHeaderNames]
122-
}
119+
loggingOptions: {
120+
logger: logger.info,
121+
allowedHeaderNames: [...TablesLoggingAllowedHeaderNames]
123122
}
124123
};
125124

126-
const pipeline = createPipelineFromOptions(internalPipelineOptions, credential);
125+
const pipeline = {
126+
...clientOptions,
127+
...createPipelineFromOptions(internalPipelineOptions, credential)
128+
};
127129
const client = new GeneratedClient(url, pipeline);
128130
this.table = client.table;
129131
this.service = client.service;

sdk/tables/data-tables/src/utils/connectionString.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import { fromAccountConnectionString, getAccountConnectionString } from "./accou
66
import { ClientParamsFromConnectionString, ConnectionString } from "./internalModels";
77
import { URL } from "./url";
88

9+
const DevelopmentConnectionString =
10+
"DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1";
11+
912
/**
1013
* This function parses a connection string into a set of
1114
* parameters to pass to be passed to TableClientService,
@@ -20,6 +23,9 @@ export function getClientParamsFromConnectionString(
2023
connectionString: string,
2124
options?: TableServiceClientOptions
2225
): ClientParamsFromConnectionString {
26+
if (connectionString.toLowerCase().indexOf("usedevelopmentstorage=true") !== -1) {
27+
connectionString = DevelopmentConnectionString;
28+
}
2329
const extractedCreds = extractConnectionStringParts(connectionString);
2430
if (extractedCreds.kind === "AccountConnString") {
2531
return fromAccountConnectionString(extractedCreds, options);

0 commit comments

Comments
 (0)