@drunk-pulumi/azure 1.0.30 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,22 +1,24 @@
1
1
  import { Input } from '@pulumi/pulumi';
2
2
  import { ResourceInfo } from '../types';
3
- import { ApimApiKeysType, ApimApiPolicyType, ApimApiServiceUrlType, ApimChildBuilderProps, BuilderAsync, IApimApiBuilder, IApimApiServiceBuilder, VersionBuilderFunction } from './types';
3
+ import { ApimApiKeysType, ApimApiPolicyType, ApimApiProps, ApimApiServiceUrlType, ApimChildBuilderProps, BuilderAsync, IApimApiBuilder, IApimApiServiceBuilder } from './types';
4
4
  export default class ApimApiBuilder extends BuilderAsync<ResourceInfo> implements IApimApiServiceBuilder, IApimApiBuilder {
5
- private props;
5
+ private args;
6
+ private _apiSetInstance;
6
7
  private _serviceUrl;
7
8
  private _keyParameters;
8
9
  private _apis;
9
- private _apiInstanceName;
10
- private _apiSets;
10
+ private readonly _apiInstanceName;
11
11
  private _policyString;
12
- constructor(props: ApimChildBuilderProps & {
12
+ constructor(args: ApimChildBuilderProps & {
13
13
  requiredSubscription: boolean;
14
14
  productId: Input<string>;
15
15
  });
16
16
  withPolicies(props: ApimApiPolicyType): IApimApiBuilder;
17
17
  withServiceUrl(props: ApimApiServiceUrlType): IApimApiBuilder;
18
- withVersion(version: string, builder: VersionBuilderFunction): IApimApiBuilder;
18
+ withVersion(version: string, props: ApimApiProps): IApimApiBuilder;
19
19
  withKeys(props: ApimApiKeysType): IApimApiBuilder;
20
+ private buildApiSet;
21
+ private buildOperations;
20
22
  private buildApis;
21
23
  build(): Promise<ResourceInfo>;
22
24
  }
@@ -32,19 +32,9 @@ const pulumi_1 = require("@pulumi/pulumi");
32
32
  const Common_1 = require("../Common");
33
33
  const ApimPolicyBuilder_1 = __importDefault(require("./ApimPolicyBuilder"));
34
34
  const types_2 = require("./types");
35
- class ApimApiRevisionBuilder {
36
- version;
37
- revisions = [];
38
- constructor(version) {
39
- this.version = version;
40
- }
41
- withRevision(props) {
42
- this.revisions.push(props);
43
- return this;
44
- }
45
- }
46
35
  class ApimApiBuilder extends types_2.BuilderAsync {
47
- props;
36
+ args;
37
+ _apiSetInstance = undefined;
48
38
  _serviceUrl = undefined;
49
39
  _keyParameters = {
50
40
  header: 'x-api-key',
@@ -52,21 +42,20 @@ class ApimApiBuilder extends types_2.BuilderAsync {
52
42
  };
53
43
  _apis = {};
54
44
  _apiInstanceName;
55
- _apiSets = {};
56
45
  _policyString = undefined;
57
- constructor(props) {
58
- super(props);
59
- this.props = props;
60
- this._apiInstanceName = `${props.name}-api`;
46
+ constructor(args) {
47
+ super(args);
48
+ this.args = args;
49
+ this._apiInstanceName = `${args.name}-set`.toLowerCase();
61
50
  //Empty Policy
62
51
  this._policyString = new ApimPolicyBuilder_1.default({
63
- ...props,
52
+ ...args,
64
53
  name: this._apiInstanceName,
65
54
  }).build();
66
55
  }
67
56
  withPolicies(props) {
68
57
  this._policyString = props(new ApimPolicyBuilder_1.default({
69
- ...this.props,
58
+ ...this.args,
70
59
  name: this._apiInstanceName,
71
60
  })).build();
72
61
  return this;
@@ -75,123 +64,156 @@ class ApimApiBuilder extends types_2.BuilderAsync {
75
64
  this._serviceUrl = props;
76
65
  return this;
77
66
  }
78
- withVersion(version, builder) {
79
- const b = new ApimApiRevisionBuilder(version);
80
- builder(b);
81
- this._apis[version] = b.revisions;
67
+ withVersion(version, props) {
68
+ this._apis[version] = props;
82
69
  return this;
83
70
  }
84
71
  withKeys(props) {
85
- this._keyParameters = props;
72
+ this._keyParameters = { ...this._keyParameters, ...props };
86
73
  return this;
87
74
  }
75
+ buildApiSet() {
76
+ //Create ApiSet
77
+ this._apiSetInstance = new apim.ApiVersionSet(this._apiInstanceName, {
78
+ versionSetId: this._apiInstanceName,
79
+ displayName: this._apiInstanceName,
80
+ description: this._apiInstanceName,
81
+ serviceName: this.args.apimServiceName,
82
+ resourceGroupName: this.args.group.resourceGroupName,
83
+ versioningScheme: types_1.enums.apimanagement.VersioningScheme.Segment,
84
+ }, { dependsOn: this.args.dependsOn, deleteBeforeReplace: true });
85
+ }
86
+ buildOperations({ operations, apiName, dependsOn, }) {
87
+ return operations.map((op) => {
88
+ const opsName = op.name.replace(/\//g, '');
89
+ const opsRsName = `${apiName}-ops-${opsName}-${op.method}`.toLowerCase();
90
+ const apiOps = new apim.ApiOperation(opsRsName, {
91
+ operationId: opsName,
92
+ serviceName: this.args.apimServiceName,
93
+ resourceGroupName: this.args.group.resourceGroupName,
94
+ apiId: apiName,
95
+ displayName: op.name,
96
+ description: op.name,
97
+ urlTemplate: op.urlTemplate ?? op.name,
98
+ method: op.method,
99
+ request: {
100
+ description: op.name,
101
+ headers: [],
102
+ queryParameters: [],
103
+ representations: [
104
+ {
105
+ contentType: 'application/json',
106
+ },
107
+ ],
108
+ },
109
+ responses: op.responses ?? [
110
+ {
111
+ description: 'successful operation',
112
+ headers: [],
113
+ representations: [
114
+ {
115
+ contentType: 'application/json',
116
+ },
117
+ ],
118
+ statusCode: 200,
119
+ },
120
+ ],
121
+ }, { dependsOn });
122
+ if (op.policies) {
123
+ const policyString = op
124
+ .policies(new ApimPolicyBuilder_1.default({
125
+ ...this.args,
126
+ name: opsRsName,
127
+ }))
128
+ .build();
129
+ new apim.ApiOperationPolicy(opsRsName, {
130
+ operationId: opsName,
131
+ serviceName: this.args.apimServiceName,
132
+ resourceGroupName: this.args.group.resourceGroupName,
133
+ apiId: apiName,
134
+ policyId: 'policy',
135
+ format: 'xml',
136
+ value: policyString,
137
+ });
138
+ }
139
+ return apiOps;
140
+ });
141
+ }
88
142
  async buildApis() {
89
143
  const date = new Date();
90
- const tasks = Object.keys(this._apis).map((k) => {
91
- const setName = `${this._apiInstanceName}-v${k}`;
92
- //Create ApiSet
93
- const apiSet = new apim.ApiVersionSet(setName, {
94
- versionSetId: setName,
95
- displayName: setName,
96
- description: setName,
97
- serviceName: this.props.apimServiceName,
98
- resourceGroupName: this.props.group.resourceGroupName,
99
- versioningScheme: types_1.enums.apimanagement.VersioningScheme.Segment,
100
- }, { dependsOn: this.props.dependsOn, deleteBeforeReplace: true });
101
- this._apiSets[k] = apiSet;
144
+ const tasks = Object.keys(this._apis).map(async (v) => {
145
+ const apiName = `${this.args.name}-${v}-api`.toLowerCase();
146
+ const revision = 1;
147
+ const apiRevName = `${apiName};rev=${revision}`;
102
148
  //Create Api
103
- const revisions = this._apis[k];
104
- return revisions.map(async (rv, index) => {
105
- const apiName = `${setName};rev=${rv.revision}`;
106
- const api = new apim.Api(apiName, {
107
- apiId: apiName,
108
- displayName: apiName,
109
- description: apiName,
110
- serviceName: this.props.apimServiceName,
111
- resourceGroupName: this.props.group.resourceGroupName,
112
- apiType: types_1.enums.apimanagement.ApiType.Http,
113
- isCurrent: index === revisions.length - 1,
114
- protocols: [types_1.enums.apimanagement.Protocol.Https],
115
- subscriptionRequired: this.props.requiredSubscription,
116
- apiVersion: k,
117
- apiVersionDescription: k,
118
- apiRevision: rv.revision.toString(),
119
- apiRevisionDescription: `${apiName} ${date.toLocaleDateString()}`,
120
- apiVersionSetId: apiSet.id,
121
- subscriptionKeyParameterNames: this._keyParameters,
122
- path: this._serviceUrl.apiPath,
123
- serviceUrl: `${this._serviceUrl.serviceUrl}/${k}`,
124
- format: 'swaggerUrl' in rv
125
- ? types_1.enums.apimanagement.ContentFormat.Openapi_json
126
- : undefined,
127
- value: 'swaggerUrl' in rv
128
- ? await Common_1.openApi.getImportConfig(rv.swaggerUrl, k)
129
- : undefined,
130
- }, { dependsOn: apiSet, deleteBeforeReplace: true });
131
- //Link API to Product
132
- new apim.ProductApi(apiName, {
133
- serviceName: this.props.apimServiceName,
134
- resourceGroupName: this.props.group.resourceGroupName,
135
- productId: this.props.productId,
149
+ const apiProps = this._apis[v];
150
+ const api = new apim.Api(apiName, {
151
+ apiId: apiName,
152
+ apiVersionSetId: this._apiSetInstance.id,
153
+ displayName: apiName,
154
+ description: apiName,
155
+ serviceName: this.args.apimServiceName,
156
+ resourceGroupName: this.args.group.resourceGroupName,
157
+ apiType: types_1.enums.apimanagement.ApiType.Http,
158
+ isCurrent: true,
159
+ protocols: [types_1.enums.apimanagement.Protocol.Https],
160
+ subscriptionRequired: this.args.requiredSubscription,
161
+ apiVersion: v,
162
+ apiVersionDescription: `The version ${v} of ${this.args.name}`,
163
+ apiRevision: revision.toString(),
164
+ apiRevisionDescription: `${apiRevName} ${date.toLocaleDateString()}`,
165
+ subscriptionKeyParameterNames: this._keyParameters,
166
+ path: this._serviceUrl.apiPath,
167
+ serviceUrl: `${this._serviceUrl.serviceUrl}/${v}`,
168
+ format: 'swaggerUrl' in apiProps
169
+ ? types_1.enums.apimanagement.ContentFormat.Openapi_json
170
+ : undefined,
171
+ value: 'swaggerUrl' in apiProps
172
+ ? await Common_1.openApi.getImportConfig(apiProps.swaggerUrl, v)
173
+ : undefined,
174
+ }, {
175
+ dependsOn: this._apiSetInstance,
176
+ deleteBeforeReplace: true,
177
+ customTimeouts: { create: '20m', update: '20m' },
178
+ });
179
+ //Link API to Product
180
+ new apim.ProductApi(apiName, {
181
+ serviceName: this.args.apimServiceName,
182
+ resourceGroupName: this.args.group.resourceGroupName,
183
+ productId: this.args.productId,
184
+ apiId: apiName,
185
+ }, { dependsOn: api });
186
+ // Apply Policy for the API
187
+ if (this._policyString) {
188
+ new apim.ApiPolicy(`${apiName}-policy`, {
189
+ serviceName: this.args.apimServiceName,
190
+ resourceGroupName: this.args.group.resourceGroupName,
136
191
  apiId: apiName,
192
+ policyId: 'policy',
193
+ format: 'xml',
194
+ value: this._policyString,
137
195
  }, { dependsOn: api });
138
- //Apply Policy for the API
139
- if (this._policyString) {
140
- new apim.ApiPolicy(`${apiName}-policy`, {
141
- serviceName: this.props.apimServiceName,
142
- resourceGroupName: this.props.group.resourceGroupName,
143
- apiId: apiName,
144
- policyId: 'policy',
145
- format: 'xml',
146
- value: this._policyString,
147
- }, { dependsOn: api });
148
- }
149
- //Create Aoi Operations
150
- if ('operations' in rv) {
151
- rv.operations.forEach((op) => {
152
- const opsName = `${apiName}-${op.name}`;
153
- const ops = new apim.ApiOperation(opsName, {
154
- operationId: opsName,
155
- apiId: api.id,
156
- displayName: opsName,
157
- description: opsName,
158
- serviceName: this.props.apimServiceName,
159
- resourceGroupName: this.props.group.resourceGroupName,
160
- ...op,
161
- }, { dependsOn: api });
162
- //Mock Operations
163
- const opName = `${opsName}-policy`;
164
- new apim.ApiOperationPolicy(opName, {
165
- policyId: 'policy',
166
- operationId: ops.id,
167
- apiId: api.id,
168
- serviceName: this.props.apimServiceName,
169
- resourceGroupName: this.props.group.resourceGroupName,
170
- format: 'xml',
171
- value: new ApimPolicyBuilder_1.default({
172
- ...this.props,
173
- name: opName,
174
- })
175
- .mockResponse({
176
- code: 200,
177
- contentType: `Welcome to ${Common_1.organization}`,
178
- })
179
- .build(),
180
- }, { dependsOn: ops, deleteBeforeReplace: true });
181
- });
182
- }
183
- });
196
+ }
197
+ //Create Aoi Operations
198
+ if ('operations' in apiProps) {
199
+ this.buildOperations({
200
+ apiName,
201
+ operations: apiProps.operations,
202
+ dependsOn: api,
203
+ });
204
+ }
184
205
  });
185
206
  await Promise.all(tasks);
186
207
  }
187
208
  async build() {
209
+ this.buildApiSet();
188
210
  await this.buildApis();
189
211
  return {
190
212
  name: this._apiInstanceName,
191
- group: this.props.group,
192
- id: (0, pulumi_1.interpolate) `${this.props.productId}`,
213
+ group: this.args.group,
214
+ id: (0, pulumi_1.interpolate) `${this.args.productId}`,
193
215
  };
194
216
  }
195
217
  }
196
218
  exports.default = ApimApiBuilder;
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQXBpQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNEQUFtRDtBQUNuRCwyQ0FBb0Q7QUFDcEQsc0NBQWtEO0FBRWxELDRFQUFvRDtBQUVwRCxtQ0FXaUI7QUFFakIsTUFBTSxzQkFBc0I7SUFFQTtJQURuQixTQUFTLEdBQTJCLEVBQUUsQ0FBQztJQUM5QyxZQUEwQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFDN0MsWUFBWSxDQUFDLEtBQTJCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBRUQsTUFBcUIsY0FDbkIsU0FBUSxvQkFBMEI7SUFleEI7SUFaRixXQUFXLEdBQXNDLFNBQVMsQ0FBQztJQUMzRCxjQUFjLEdBQWdDO1FBQ3BELE1BQU0sRUFBRSxXQUFXO1FBQ25CLEtBQUssRUFBRSxTQUFTO0tBQ2pCLENBQUM7SUFDTSxLQUFLLEdBQTJDLEVBQUUsQ0FBQztJQUVuRCxnQkFBZ0IsQ0FBUztJQUN6QixRQUFRLEdBQXVDLEVBQUUsQ0FBQztJQUNsRCxhQUFhLEdBQXVCLFNBQVMsQ0FBQztJQUV0RCxZQUNVLEtBR1A7UUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFMTCxVQUFLLEdBQUwsS0FBSyxDQUdaO1FBR0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDO1FBQzVDLGNBQWM7UUFDZCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksMkJBQWlCLENBQUM7WUFDekMsR0FBRyxLQUFLO1lBQ1IsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFB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
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQXBpQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNEQUFtRDtBQUNuRCwyQ0FBb0Q7QUFDcEQsc0NBQW9DO0FBRXBDLDRFQUFvRDtBQUNwRCxtQ0FVaUI7QUFFakIsTUFBcUIsY0FDbkIsU0FBUSxvQkFBMEI7SUFnQnhCO0lBYkYsZUFBZSxHQUFtQyxTQUFTLENBQUM7SUFFNUQsV0FBVyxHQUFzQyxTQUFTLENBQUM7SUFDM0QsY0FBYyxHQUFvQjtRQUN4QyxNQUFNLEVBQUUsV0FBVztRQUNuQixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0lBQ00sS0FBSyxHQUFpQyxFQUFFLENBQUM7SUFFaEMsZ0JBQWdCLENBQVM7SUFDbEMsYUFBYSxHQUF1QixTQUFTLENBQUM7SUFFdEQsWUFDVSxJQUdQO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTEosU0FBSSxHQUFKLElBQUksQ0FHWDtRQUdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxjQUFjO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDJCQUFpQixDQUFDO1lBQ3pDLEdBQUcsSUFBSTtZQUNQLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLElBQUksMkJBQWlCLENBQUM7WUFDcEIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FDSCxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQTRCO1FBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFlLEVBQUUsS0FBbUI7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxXQUFXO1FBQ2pCLGVBQWU7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FDM0MsSUFBSSxDQUFDLGdCQUFnQixFQUNyQjtZQUNFLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDdEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCO1lBQ3BELGdCQUFnQixFQUFFLGFBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTztTQUMvRCxFQUNELEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVPLGVBQWUsQ0FBQyxFQUN0QixVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsR0FJTTtRQUNmLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQzNCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU8sUUFBUSxPQUFPLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FDbEMsU0FBUyxFQUNUO2dCQUNFLFdBQVcsRUFBRSxPQUFPO2dCQUNwQixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO2dCQUN0QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3BELEtBQUssRUFBRSxPQUFPO2dCQUNkLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSTtnQkFDcEIsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJO2dCQUVwQixXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsSUFBSTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNO2dCQUVqQixPQUFPLEVBQUU7b0JBQ1AsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJO29CQUNwQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxlQUFlLEVBQUUsRUFBRTtvQkFDbkIsZUFBZSxFQUFFO3dCQUNmOzRCQUNFLFdBQVcsRUFBRSxrQkFBa0I7eUJBQ2hDO3FCQUNGO2lCQUNGO2dCQUNELFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxJQUFJO29CQUN6Qjt3QkFDRSxXQUFXLEVBQUUsc0JBQXNCO3dCQUNuQyxPQUFPLEVBQUUsRUFBRTt3QkFDWCxlQUFlLEVBQUU7NEJBQ2Y7Z0NBQ0UsV0FBVyxFQUFFLGtCQUFrQjs2QkFDaEM7eUJBQ0Y7d0JBQ0QsVUFBVSxFQUFFLEdBQUc7cUJBQ2hCO2lCQUNGO2FBQ0YsRUFDRCxFQUFFLFNBQVMsRUFBRSxDQUNkLENBQUM7WUFFRixJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxZQUFZLEdBQUcsRUFBRTtxQkFDcEIsUUFBUSxDQUNQLElBQUksMkJBQWlCLENBQUM7b0JBQ3BCLEdBQUcsSUFBSSxDQUFDLElBQUk7b0JBQ1osSUFBSSxFQUFFLFNBQVM7aUJBQ2hCLENBQUMsQ0FDSDtxQkFDQSxLQUFLLEVBQUUsQ0FBQztnQkFDWCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7b0JBQ3JDLFdBQVcsRUFBRSxPQUFPO29CQUNwQixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO29CQUN0QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7b0JBQ3BELEtBQUssRUFBRSxPQUFPO29CQUNkLFFBQVEsRUFBRSxRQUFRO29CQUNsQixNQUFNLEVBQUUsS0FBSztvQkFDYixLQUFLLEVBQUUsWUFBWTtpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwRCxNQUFNLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNuQixNQUFNLFVBQVUsR0FBRyxHQUFHLE9BQU8sUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNoRCxZQUFZO1lBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUvQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQ3RCLE9BQU8sRUFDUDtnQkFDRSxLQUFLLEVBQUUsT0FBTztnQkFDZCxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWdCLENBQUMsRUFBRTtnQkFDekMsV0FBVyxFQUFFLE9BQU87Z0JBQ3BCLFdBQVcsRUFBRSxPQUFPO2dCQUNwQixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO2dCQUN0QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3BELE9BQU8sRUFBRSxhQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUN6QyxTQUFTLEVBQUUsSUFBSTtnQkFDZixTQUFTLEVBQUUsQ0FBQyxhQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQy9DLG9CQUFvQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CO2dCQUVwRCxVQUFVLEVBQUUsQ0FBQztnQkFDYixxQkFBcUIsRUFBRSxlQUFlLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFFOUQsV0FBVyxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2hDLHNCQUFzQixFQUFFLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO2dCQUVwRSw2QkFBNkIsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDbEQsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFZLENBQUMsT0FBTztnQkFDL0IsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFO2dCQUVsRCxNQUFNLEVBQ0osWUFBWSxJQUFJLFFBQVE7b0JBQ3RCLENBQUMsQ0FBQyxhQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZO29CQUNoRCxDQUFDLENBQUMsU0FBUztnQkFDZixLQUFLLEVBQ0gsWUFBWSxJQUFJLFFBQVE7b0JBQ3RCLENBQUMsQ0FBQyxNQUFNLGdCQUFPLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO29CQUN2RCxDQUFDLENBQUMsU0FBUzthQUNoQixFQUNEO2dCQUNFLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDL0IsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2FBQ2pELENBQ0YsQ0FBQztZQUNGLHFCQUFxQjtZQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQ2pCLE9BQU8sRUFDUDtnQkFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO2dCQUN0QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3BELFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQzlCLEtBQUssRUFBRSxPQUFPO2FBQ2YsRUFDRCxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FDbkIsQ0FBQztZQUNGLDJCQUEyQjtZQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUNoQixHQUFHLE9BQU8sU0FBUyxFQUNuQjtvQkFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO29CQUN0QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7b0JBQ3BELEtBQUssRUFBRSxPQUFPO29CQUNkLFFBQVEsRUFBRSxRQUFRO29CQUNsQixNQUFNLEVBQUUsS0FBSztvQkFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWE7aUJBQzFCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQ25CLENBQUM7WUFDSixDQUFDO1lBRUQsdUJBQXVCO1lBQ3ZCLElBQUksWUFBWSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDO29CQUNuQixPQUFPO29CQUNQLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtvQkFDL0IsU0FBUyxFQUFFLEdBQUc7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdkIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDdEIsRUFBRSxFQUFFLElBQUEsb0JBQVcsRUFBQSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1NBQ3hDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFwUEQsaUNBb1BDIn0=
@@ -22,14 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
30
27
  const Common_1 = require("../Common");
31
28
  const Helper_1 = require("../VNet/Helper");
32
- const xml_formatter_1 = __importDefault(require("xml-formatter"));
33
29
  const types_1 = require("./types");
34
30
  class ApimPolicyBuilder {
35
31
  props;
@@ -132,7 +128,7 @@ class ApimPolicyBuilder {
132
128
  }
133
129
  buildHeaders() {
134
130
  this._inboundPolicies.push(...this._headers.map((h) => {
135
- let rs = `<set-header name="${h.name}" exists-action="${h.type}">`;
131
+ let rs = `\t<set-header name="${h.name}" exists-action="${h.type}">`;
136
132
  if (h.value) {
137
133
  rs += ` <value>${h.value}</value>`;
138
134
  }
@@ -141,9 +137,9 @@ class ApimPolicyBuilder {
141
137
  }));
142
138
  }
143
139
  buildCheckHeaders() {
144
- this._inboundPolicies.push(...this._checkHeaders.map((ch) => `<check-header name="${ch.name}" failed-check-httpcode="401" failed-check-error-message="The header ${ch.name} is not found" ignore-case="true">
140
+ this._inboundPolicies.push(...this._checkHeaders.map((ch) => `\t<check-header name="${ch.name}" failed-check-httpcode="401" failed-check-error-message="The header ${ch.name} is not found" ignore-case="true">
145
141
  ${ch.value ? ch.value.map((v) => `<value>${v}</value>`).join('\n') : ''}
146
- </check-header>`));
142
+ \t</check-header>`));
147
143
  }
148
144
  buildMockResponse() {
149
145
  this._inboundPolicies.push(...this._mockResponses.map((m) => `<mock-response status-code="${m.code ?? 200}" content-type="${m.contentType ?? 'application/json'}" />`));
@@ -249,7 +245,7 @@ class ApimPolicyBuilder {
249
245
  }</value>
250
246
  </set-header>`;
251
247
  const checkHeader = `<choose>
252
- <when condition="@(context.Request.Headers.GetValueOrDefault("IpAddressValidation", "").Equals(Boolean.FalseString))">
248
+ <when condition="@(context.Request.Headers.GetValueOrDefault(&quot;IpAddressValidation&quot;, &quot;&quot;).Equals(Boolean.FalseString))">
253
249
  <return-response>
254
250
  <set-status code="403" reason="Forbidden"/>
255
251
  <set-body>@{
@@ -268,12 +264,12 @@ class ApimPolicyBuilder {
268
264
  serviceName: this.props.apimServiceName,
269
265
  resourceGroupName: this.props.group.resourceGroupName,
270
266
  format: 'xml',
271
- value: (0, xml_formatter_1.default)(`
267
+ value: `
272
268
  <fragment>
273
269
  ${setHeader}
274
270
  ${checkHeader}
275
271
  </fragment>
276
- `),
272
+ `,
277
273
  });
278
274
  this._inboundPolicies.push(`<include-fragment fragment-id="${pfName}" />`);
279
275
  }
@@ -314,8 +310,6 @@ class ApimPolicyBuilder {
314
310
  // }
315
311
  build() {
316
312
  this.buildHeaders();
317
- this.buildBaseUrl();
318
- this.buildRewriteUri();
319
313
  this.buildCacheOptions();
320
314
  this.buildMockResponse();
321
315
  this.buildRateLimit();
@@ -323,8 +317,10 @@ class ApimPolicyBuilder {
323
317
  this.buildCors();
324
318
  this.buildValidateJwtWhitelistIp();
325
319
  this.buildWhiteListIps();
326
- this.buildCheckHeaders();
327
320
  this.buildFindAndReplace();
321
+ this.buildRewriteUri();
322
+ this.buildCheckHeaders();
323
+ this.buildBaseUrl();
328
324
  //this.buildCustomRules();
329
325
  //This must be a last rule
330
326
  this.buildVerifyClientCert();
@@ -344,13 +340,13 @@ class ApimPolicyBuilder {
344
340
  <outbound>
345
341
  <base />
346
342
  <set-header name="Strict-Transport-Security" exists-action="override">
347
- <value>max-age=15724800; includeSubDomains</value>
343
+ <value>max-age=3600; includeSubDomains</value>
348
344
  </set-header>
349
345
  <set-header name="X-XSS-Protection" exists-action="override">
350
346
  <value>1; mode=block</value>
351
347
  </set-header>
352
348
  <set-header name="Content-Security-Policy" exists-action="override">
353
- <value>default-src 'self' data: 'unsafe-inline' 'unsafe-eval'</value>
349
+ <value>default-src 'self' data:</value>
354
350
  </set-header>
355
351
  <set-header name="X-Frame-Options" exists-action="override">
356
352
  <value>Deny</value>
@@ -359,7 +355,7 @@ class ApimPolicyBuilder {
359
355
  <value>nosniff</value>
360
356
  </set-header>
361
357
  <set-header name="Expect-Ct" exists-action="override">
362
- <value>max-age=604800,enforce</value>
358
+ <value>max-age=3600,enforce</value>
363
359
  </set-header>
364
360
  <set-header name="Cache-Control" exists-action="override">
365
361
  <value>none</value>
@@ -373,12 +369,8 @@ class ApimPolicyBuilder {
373
369
  <base />
374
370
  </on-error>
375
371
  </policies>`;
376
- return (0, xml_formatter_1.default)(xmlPolicy, {
377
- strictMode: true,
378
- throwOnFailure: true,
379
- forceSelfClosingEmptyTag: true,
380
- });
372
+ return xmlPolicy;
381
373
  }
382
374
  }
383
375
  exports.default = ApimPolicyBuilder;
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbVBvbGljeUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltUG9saWN5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNDQUF5QztBQUN6QywyQ0FBNkM7QUFDN0Msa0VBQXNDO0FBQ3RDLG1DQWtCaUI7QUFFakIsTUFBcUIsaUJBQWlCO0lBcUJUO0lBcEJuQixRQUFRLEdBQWdDLFNBQVMsQ0FBQztJQUNsRCxXQUFXLEdBQW1DLFNBQVMsQ0FBQztJQUN4RCxVQUFVLEdBQWtDLFNBQVMsQ0FBQztJQUN0RCxhQUFhLEdBQWlDLFNBQVMsQ0FBQztJQUN4RCxZQUFZLEdBQWlDLFNBQVMsQ0FBQztJQUN2RCxpQkFBaUIsR0FBbUMsU0FBUyxDQUFDO0lBQzlELEtBQUssR0FBNkIsU0FBUyxDQUFDO0lBQzVDLHVCQUF1QixHQUM3QixTQUFTLENBQUM7SUFDSixjQUFjLEdBQXdCLEVBQUUsQ0FBQztJQUN6QyxRQUFRLEdBQXdCLEVBQUUsQ0FBQztJQUNuQyxhQUFhLEdBQTBCLEVBQUUsQ0FBQztJQUMxQyxhQUFhLEdBQTBCLEVBQUUsQ0FBQztJQUMxQyxnQkFBZ0IsR0FBNkIsRUFBRSxDQUFDO0lBQ3hELDhEQUE4RDtJQUM5RCwrREFBK0Q7SUFFdkQsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUV6QyxZQUEyQixLQUE0QjtRQUE1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtJQUFHLENBQUM7SUFFcEQsVUFBVSxDQUFDLEtBQXNCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNNLFNBQVMsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENB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
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbVBvbGljeUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltUG9saWN5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNDQUF5QztBQUN6QywyQ0FBNkM7QUFDN0MsbUNBa0JpQjtBQUVqQixNQUFxQixpQkFBaUI7SUFxQlQ7SUFwQm5CLFFBQVEsR0FBZ0MsU0FBUyxDQUFDO0lBQ2xELFdBQVcsR0FBbUMsU0FBUyxDQUFDO0lBQ3hELFVBQVUsR0FBa0MsU0FBUyxDQUFDO0lBQ3RELGFBQWEsR0FBaUMsU0FBUyxDQUFDO0lBQ3hELFlBQVksR0FBaUMsU0FBUyxDQUFDO0lBQ3ZELGlCQUFpQixHQUFtQyxTQUFTLENBQUM7SUFDOUQsS0FBSyxHQUE2QixTQUFTLENBQUM7SUFDNUMsdUJBQXVCLEdBQzdCLFNBQVMsQ0FBQztJQUNKLGNBQWMsR0FBd0IsRUFBRSxDQUFDO0lBQ3pDLFFBQVEsR0FBd0IsRUFBRSxDQUFDO0lBQ25DLGFBQWEsR0FBMEIsRUFBRSxDQUFDO0lBQzFDLGFBQWEsR0FBMEIsRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixHQUE2QixFQUFFLENBQUM7SUFDeEQsOERBQThEO0lBQzlELCtEQUErRDtJQUV2RCxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFDaEMsaUJBQWlCLEdBQWEsRUFBRSxDQUFDO0lBRXpDLFlBQTJCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO0lBQUcsQ0FBQztJQUVwRCxVQUFVLENBQUMsS0FBc0I7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sU0FBUyxDQUFDLEtBQXdCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLE9B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