Skip to content

Commit 838ad62

Browse files
committed
add client version to ServiceMetadata; add default user agent header customization
1 parent e1009b8 commit 838ad62

File tree

9 files changed

+54
-17
lines changed

9 files changed

+54
-17
lines changed

packages/package-generator/src/ClientModuleGenerator.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ export class ClientModuleGenerator extends ModuleGenerator {
5959
model,
6060
runtime,
6161
customizations,
62-
version
6362
);
6463

6564
if (smoke) {
@@ -293,7 +292,12 @@ tsconfig.test.json
293292
}
294293

295294
private *modelFiles() {
296-
yield* new ModelGenerator(this.model, this.circularDependencies);
295+
for (let [file, generated] of new ModelGenerator(this.model, this.circularDependencies)) {
296+
if (file === 'ServiceMetadata') {
297+
generated += `\nexport const clientVersion: string = '${this.version}';`
298+
}
299+
yield [file, generated];
300+
}
297301
yield* new OperationGenerator(this.model);
298302
}
299303

packages/service-types-generator/src/ClientGenerator.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@ export class ClientGenerator {
2020
private readonly client: Client;
2121
private readonly classicClient: ClassicClient;
2222
private readonly configuration: Configuration;
23-
private readonly version: string = '0.1.0';
2423

2524
constructor(
2625
model: TreeModel,
2726
target: RuntimeTarget,
2827
customizations: Array<CustomizationDefinition> = [],
29-
version: string,
3028
) {
3129
customizations = customizations
3230
.concat(getServiceCustomizations(model, target).client);
@@ -37,8 +35,7 @@ export class ClientGenerator {
3735
this.configuration = new Configuration(
3836
this.client.prefix,
3937
target,
40-
this.getConcattedConfig(customizations),
41-
version,
38+
this.getConcattedConfig(customizations)
4239
);
4340
}
4441

packages/service-types-generator/src/Components/Client/Client.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ export class Client {
6262
${configurationImports.toString()}
6363
import {InputTypesUnion} from './types/InputTypesUnion';
6464
import {OutputTypesUnion} from './types/OutputTypesUnion';
65+
import {clientVersion, ServiceMetadata} from './model/ServiceMetadata';
6566
6667
export class ${this.className} {
6768
protected readonly config: ${this.prefix}ResolvedConfiguration;

packages/service-types-generator/src/Components/Client/Configuration.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export class Configuration {
1111
private readonly prefix: string,
1212
private readonly target: RuntimeTarget,
1313
private readonly config: ConfigurationDefinition,
14-
private readonly version: string = '0.1.0',
1514
) {}
1615

1716
get className() {

packages/service-types-generator/src/ServiceCustomizations/customizationsFromModel/index.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,11 @@ describe('customizationsFromModel', () => {
6363
}
6464
);
6565
}
66+
67+
it(`should return a property definition for user-agent header`, () => {
68+
const {client} = customizationsFromModel(model, 'universal');
69+
const [customization, ...rest] = client.reverse();
70+
expect(client[0]).toHaveProperty('type');
71+
expect(client[0].type).toBe('Middleware');
72+
});
6673
});

packages/service-types-generator/src/ServiceCustomizations/customizationsFromModel/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
TreeModel,
3030
} from '@aws-sdk/build-types';
3131
import { retryMiddleware } from './retryMiddleware';
32+
import { userAgentCustomization } from './userAgentCustomization';
3233

3334
/**
3435
* Collect the "customizations" that must be applied to a service client based
@@ -63,6 +64,7 @@ export function customizationsFromModel(
6364
],
6465
commands: {},
6566
},
66-
signatureCustomizations(model, target)
67+
signatureCustomizations(model, target),
68+
userAgentCustomization(target),
6769
);
6870
}

packages/service-types-generator/src/ServiceCustomizations/customizationsFromModel/setUserAgentMiddleware.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { RuntimeTarget, ServiceCustomizationDefinition } from '@aws-sdk/build-types';
2+
import { IMPORTS } from '../../internalImports';
3+
import { packageNameToVariable } from '../../packageNameToVariable';
4+
5+
export function userAgentCustomization(
6+
runtime: RuntimeTarget
7+
): ServiceCustomizationDefinition {
8+
const imports = [
9+
IMPORTS['middleware-header-default']
10+
];
11+
if (runtime === 'node') {
12+
imports.push(IMPORTS['util-user-agent-node']);
13+
} else {
14+
imports.push(IMPORTS['util-user-agent-browser']);
15+
}
16+
const defaultValuePackageName = runtime === 'node' ? '@aws-sdk/util-user-agent-node' : '@aws-sdk/util-user-agent-browser';
17+
return {
18+
client: [{
19+
type: 'Middleware',
20+
step: 'build',
21+
priority: 0,
22+
imports,
23+
expression: `${packageNameToVariable('@aws-sdk/middleware-header-default')}({'${runtime === 'node' ? 'User-Agent' : 'X-Amz-User-Agent'}': ${packageNameToVariable(defaultValuePackageName)}.defaultUserAgent(ServiceMetadata.serviceId || ServiceMetadata.endpointPrefix, clientVersion)})`,
24+
tags: '{USERAGENT: true}'
25+
}],
26+
commands: {}
27+
}
28+
}

packages/service-types-generator/src/internalImports.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,14 @@ export const IMPORTS: {[key: string]: Import} = {
412412
package: '@aws-sdk/util-uri-escape',
413413
version: '^0.1.0-preview.1',
414414
},
415+
'util-user-agent-browser': {
416+
package: '@aws-sdk/util-user-agent-browser',
417+
version: '^0.1.0-preview.1',
418+
},
419+
'util-user-agent-node': {
420+
package: '@aws-sdk/util-user-agent-node',
421+
version: '^0.1.0-preview.1',
422+
},
415423
'util-utf8-browser': {
416424
package: '@aws-sdk/util-utf8-browser',
417425
version: '^0.1.0-preview.1',

0 commit comments

Comments
 (0)