@vcd/sdk 0.13.0 → 15.0.0

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.
Files changed (91) hide show
  1. package/README.md +3 -118
  2. package/client/client/api.result.service.d.ts +20 -0
  3. package/client/client/constants.d.ts +10 -0
  4. package/client/client/index.d.ts +7 -0
  5. package/client/client/logging.interceptor.d.ts +14 -0
  6. package/client/client/request.headers.interceptor.d.ts +20 -0
  7. package/client/client/response.normalization.interceptor.d.ts +39 -0
  8. package/client/client/vcd.api.client.d.ts +351 -0
  9. package/client/client/vcd.http.client.d.ts +32 -0
  10. package/client/client/vcd.transfer.client.d.ts +121 -0
  11. package/client/container-hooks/index.d.ts +58 -0
  12. package/client/index.d.ts +2 -0
  13. package/client/openapi.d.ts +76 -0
  14. package/client/query/filter.builder.d.ts +162 -0
  15. package/client/query/index.d.ts +2 -0
  16. package/client/query/query.builder.d.ts +30 -0
  17. package/common/container-hooks.d.ts +2 -2
  18. package/core/plugin.module.d.ts +10 -5
  19. package/esm2020/client/client/api.result.service.mjs +43 -0
  20. package/esm2020/client/client/constants.mjs +13 -0
  21. package/esm2020/client/client/index.mjs +8 -0
  22. package/esm2020/client/client/logging.interceptor.mjs +44 -0
  23. package/esm2020/client/client/request.headers.interceptor.mjs +91 -0
  24. package/esm2020/client/client/response.normalization.interceptor.mjs +59 -0
  25. package/esm2020/client/client/vcd.api.client.mjs +602 -0
  26. package/esm2020/client/client/vcd.http.client.mjs +52 -0
  27. package/esm2020/client/client/vcd.transfer.client.mjs +166 -0
  28. package/esm2020/client/container-hooks/index.mjs +57 -0
  29. package/esm2020/client/index.mjs +3 -0
  30. package/esm2020/client/openapi.mjs +16 -0
  31. package/esm2020/client/query/filter.builder.mjs +195 -0
  32. package/esm2020/client/query/index.mjs +3 -0
  33. package/esm2020/client/query/query.builder.mjs +79 -0
  34. package/esm2020/common/container-hooks.mjs +74 -0
  35. package/esm2020/common/index.mjs +2 -0
  36. package/esm2020/core/index.mjs +2 -0
  37. package/esm2020/core/plugin.module.mjs +18 -0
  38. package/esm2020/main.mjs +45 -0
  39. package/esm2020/public-api.mjs +8 -0
  40. package/esm2020/vcd-sdk.mjs +5 -0
  41. package/fesm2015/vcd-sdk.mjs +1513 -0
  42. package/fesm2015/vcd-sdk.mjs.map +1 -0
  43. package/fesm2020/vcd-sdk.mjs +1508 -0
  44. package/fesm2020/vcd-sdk.mjs.map +1 -0
  45. package/index.d.ts +5 -0
  46. package/main.d.ts +11 -5
  47. package/package.json +30 -39
  48. package/public-api.d.ts +1 -1
  49. package/LICENSE.txt +0 -12
  50. package/bundles/vcd-sdk.umd.js +0 -810
  51. package/bundles/vcd-sdk.umd.js.map +0 -1
  52. package/bundles/vcd-sdk.umd.min.js +0 -16
  53. package/bundles/vcd-sdk.umd.min.js.map +0 -1
  54. package/esm2015/common/container-hooks.js +0 -219
  55. package/esm2015/common/index.js +0 -6
  56. package/esm2015/core/index.js +0 -6
  57. package/esm2015/core/plugin.module.js +0 -53
  58. package/esm2015/i18n/index.js +0 -8
  59. package/esm2015/i18n/translate.pipe.js +0 -92
  60. package/esm2015/i18n/translate.service.js +0 -229
  61. package/esm2015/i18n/translation.loader.js +0 -63
  62. package/esm2015/main.js +0 -37
  63. package/esm2015/public-api.js +0 -12
  64. package/esm2015/vcd-sdk.js +0 -10
  65. package/esm5/common/container-hooks.js +0 -266
  66. package/esm5/common/index.js +0 -6
  67. package/esm5/core/index.js +0 -6
  68. package/esm5/core/plugin.module.js +0 -64
  69. package/esm5/i18n/index.js +0 -8
  70. package/esm5/i18n/translate.pipe.js +0 -108
  71. package/esm5/i18n/translate.service.js +0 -280
  72. package/esm5/i18n/translation.loader.js +0 -68
  73. package/esm5/main.js +0 -41
  74. package/esm5/public-api.js +0 -12
  75. package/esm5/vcd-sdk.js +0 -10
  76. package/fesm2015/vcd-sdk.js +0 -511
  77. package/fesm2015/vcd-sdk.js.map +0 -1
  78. package/fesm5/vcd-sdk.js +0 -620
  79. package/fesm5/vcd-sdk.js.map +0 -1
  80. package/i18n/index.d.ts +0 -3
  81. package/i18n/translate.pipe.d.ts +0 -12
  82. package/i18n/translate.service.d.ts +0 -21
  83. package/i18n/translation.loader.d.ts +0 -11
  84. package/schematics/collection.json +0 -10
  85. package/schematics/ng-add/index.d.ts +0 -3
  86. package/schematics/ng-add/index.js +0 -101
  87. package/schematics/ng-add/index.ts +0 -134
  88. package/schematics/ng-add/schema.d.ts +0 -8
  89. package/schematics/ng-add/schema.json +0 -19
  90. package/vcd-sdk.d.ts +0 -5
  91. package/vcd-sdk.metadata.json +0 -1
@@ -0,0 +1,91 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpResponse } from '@angular/common/http';
3
+ import { map } from 'rxjs/operators';
4
+ import { parseHeaderHateoasLinks } from '.';
5
+ import { HTTP_HEADERS } from './constants';
6
+ import * as i0 from "@angular/core";
7
+ // tslint:disable:variable-name
8
+ export class RequestHeadersInterceptor {
9
+ constructor() {
10
+ this._enabled = true;
11
+ this._version = '';
12
+ this._authenticationHeader = HTTP_HEADERS.Authorization;
13
+ }
14
+ set enabled(_enabled) {
15
+ this._enabled = _enabled;
16
+ }
17
+ set actAs(_actAs) {
18
+ this._actAs = _actAs;
19
+ }
20
+ get version() {
21
+ return this._version;
22
+ }
23
+ set version(_version) {
24
+ this._version = _version;
25
+ }
26
+ set authentication(_authentication) {
27
+ this._authentication = _authentication;
28
+ this._authenticationHeader = (this._authentication && this._authentication.length > 32) ?
29
+ HTTP_HEADERS.Authorization : HTTP_HEADERS.x_vcloud_authorization;
30
+ }
31
+ intercept(req, next) {
32
+ let headers = req.headers;
33
+ if (!headers.has('Accept')) {
34
+ headers = this.setAcceptHeader(headers);
35
+ }
36
+ if (!headers.has('Content-Type')) {
37
+ headers = this.setContentTypeHeader(headers, req.url);
38
+ }
39
+ if (this._authentication && !headers.has(HTTP_HEADERS.Authorization)) {
40
+ headers = headers.set(this._authenticationHeader, this._authentication);
41
+ }
42
+ /**
43
+ * Covers the case where the User set the ActAs token himself
44
+ */
45
+ if (!headers.has('X-VMWARE-VCLOUD-TENANT-CONTEXT') && this._actAs) {
46
+ headers = headers.set('X-VMWARE-VCLOUD-TENANT-CONTEXT', this._actAs);
47
+ }
48
+ const customReq = req.clone({
49
+ headers
50
+ });
51
+ return next.handle(customReq).pipe(map((res) => {
52
+ if (res instanceof HttpResponse) {
53
+ if (!res.body || !res.headers) {
54
+ return res;
55
+ }
56
+ if (res.headers.has(HTTP_HEADERS.link)) {
57
+ res.body.link = parseHeaderHateoasLinks(res.headers.get(HTTP_HEADERS.link));
58
+ }
59
+ if (res.headers.has(HTTP_HEADERS.Link)) {
60
+ res.body.link = parseHeaderHateoasLinks(res.headers.get(HTTP_HEADERS.Link));
61
+ }
62
+ if (res.headers.has(HTTP_HEADERS.etag)) {
63
+ res.body.etag = res.headers.get(HTTP_HEADERS.etag);
64
+ }
65
+ }
66
+ return res;
67
+ }));
68
+ }
69
+ setAcceptHeader(headers) {
70
+ const value = headers.get('_multisite');
71
+ headers = headers.delete('_multisite');
72
+ return headers.set('Accept', [
73
+ `application/*+json;version=${this._version}${value ? `;multisite=${value}` : ''}`,
74
+ `application/json;version=${this._version}${value ? `;multisite=${value}` : ''}`
75
+ ]);
76
+ }
77
+ setContentTypeHeader(headers, url) {
78
+ if (url.indexOf('cloudapi') > -1) {
79
+ return headers.set('Content-Type', 'application/json');
80
+ }
81
+ else {
82
+ return headers.set('Content-Type', 'application/*+json');
83
+ }
84
+ }
85
+ }
86
+ RequestHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
87
+ RequestHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, decorators: [{
89
+ type: Injectable
90
+ }] });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5oZWFkZXJzLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9yZXF1ZXN0LmhlYWRlcnMuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFWSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBVWhCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFRZCwwQkFBcUIsR0FBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0tBNkV0RTtJQTlGRyxJQUFJLE9BQU8sQ0FBQyxRQUFpQjtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBR0QsSUFBSSxLQUFLLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBSUQsSUFBSSxjQUFjLENBQUMsZUFBdUI7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztJQUN6RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDOUMsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUUxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4QixPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RDtRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ2xFLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDM0U7UUFFRDs7V0FFRztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUMvRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEU7UUFFRCxNQUFNLFNBQVMsR0FBcUIsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUMxQyxPQUFPO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLENBQUMsR0FBbUIsRUFBRSxFQUFFO1lBQ3hCLElBQUksR0FBRyxZQUFZLFlBQVksRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO29CQUMzQixPQUFPLEdBQUcsQ0FBQztpQkFDZDtnQkFFRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDcEMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQy9FO2dCQUVELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNwQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDL0U7Z0JBRUQsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEQ7YUFDSjtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBb0I7UUFDeEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV2QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2QsUUFBUSxFQUFFO1lBQ04sOEJBQThCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbEYsNEJBQTRCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FDbkYsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQW9CLEVBQUUsR0FBVztRQUMxRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLG9CQUFvQixDQUFDLENBQUM7U0FDNUQ7SUFDTCxDQUFDOztzSEEvRlEseUJBQXlCOzBIQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQsIEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwYXJzZUhlYWRlckhhdGVvYXNMaW5rcyB9IGZyb20gJy4nO1xuaW1wb3J0IHsgSFRUUF9IRUFERVJTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTp2YXJpYWJsZS1uYW1lXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgcHJpdmF0ZSBfZW5hYmxlZCA9IHRydWU7XG4gICAgc2V0IGVuYWJsZWQoX2VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlZCA9IF9lbmFibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FjdEFzOiBzdHJpbmc7XG4gICAgc2V0IGFjdEFzKF9hY3RBczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FjdEFzID0gX2FjdEFzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZlcnNpb24gPSAnJztcbiAgICBnZXQgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjtcbiAgICB9XG4gICAgc2V0IHZlcnNpb24oX3ZlcnNpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLl92ZXJzaW9uID0gX3ZlcnNpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25IZWFkZXI6IHN0cmluZyA9IEhUVFBfSEVBREVSUy5BdXRob3JpemF0aW9uO1xuICAgIHByaXZhdGUgX2F1dGhlbnRpY2F0aW9uOiBzdHJpbmc7XG4gICAgc2V0IGF1dGhlbnRpY2F0aW9uKF9hdXRoZW50aWNhdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uID0gX2F1dGhlbnRpY2F0aW9uO1xuICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbkhlYWRlciA9ICh0aGlzLl9hdXRoZW50aWNhdGlvbiAmJiB0aGlzLl9hdXRoZW50aWNhdGlvbi5sZW5ndGggPiAzMikgP1xuICAgICAgICAgICAgSFRUUF9IRUFERVJTLkF1dGhvcml6YXRpb24gOiBIVFRQX0hFQURFUlMueF92Y2xvdWRfYXV0aG9yaXphdGlvbjtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSByZXEuaGVhZGVycztcblxuICAgICAgICBpZiAoIWhlYWRlcnMuaGFzKCdBY2NlcHQnKSkge1xuICAgICAgICAgICAgaGVhZGVycyA9IHRoaXMuc2V0QWNjZXB0SGVhZGVyKGhlYWRlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJykpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSB0aGlzLnNldENvbnRlbnRUeXBlSGVhZGVyKGhlYWRlcnMsIHJlcS51cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2F1dGhlbnRpY2F0aW9uICYmICFoZWFkZXJzLmhhcyhIVFRQX0hFQURFUlMuQXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlYWRlciwgdGhpcy5fYXV0aGVudGljYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdmVycyB0aGUgY2FzZSB3aGVyZSB0aGUgVXNlciBzZXQgdGhlIEFjdEFzIHRva2VuIGhpbXNlbGZcbiAgICAgICAgICovXG4gICAgICAgIGlmICghaGVhZGVycy5oYXMoJ1gtVk1XQVJFLVZDTE9VRC1URU5BTlQtQ09OVEVYVCcpICYmIHRoaXMuX2FjdEFzKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtVk1XQVJFLVZDTE9VRC1URU5BTlQtQ09OVEVYVCcsIHRoaXMuX2FjdEFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1c3RvbVJlcTogSHR0cFJlcXVlc3Q8YW55PiA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShjdXN0b21SZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlczogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmJvZHkgfHwgIXJlcy5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5oZWFkZXJzLmhhcyhIVFRQX0hFQURFUlMubGluaykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5ib2R5LmxpbmsgPSBwYXJzZUhlYWRlckhhdGVvYXNMaW5rcyhyZXMuaGVhZGVycy5nZXQoSFRUUF9IRUFERVJTLmxpbmspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaGVhZGVycy5oYXMoSFRUUF9IRUFERVJTLkxpbmspKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuYm9keS5saW5rID0gcGFyc2VIZWFkZXJIYXRlb2FzTGlua3MocmVzLmhlYWRlcnMuZ2V0KEhUVFBfSEVBREVSUy5MaW5rKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmhlYWRlcnMuaGFzKEhUVFBfSEVBREVSUy5ldGFnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmJvZHkuZXRhZyA9IHJlcy5oZWFkZXJzLmdldChIVFRQX0hFQURFUlMuZXRhZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBY2NlcHRIZWFkZXIoaGVhZGVyczogSHR0cEhlYWRlcnMpOiBIdHRwSGVhZGVycyB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaGVhZGVycy5nZXQoJ19tdWx0aXNpdGUnKTtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuZGVsZXRlKCdfbXVsdGlzaXRlJyk7XG5cbiAgICAgICAgcmV0dXJuIGhlYWRlcnMuc2V0KFxuICAgICAgICAgICAgJ0FjY2VwdCcsIFtcbiAgICAgICAgICAgICAgICBgYXBwbGljYXRpb24vKitqc29uO3ZlcnNpb249JHt0aGlzLl92ZXJzaW9ufSR7dmFsdWUgPyBgO211bHRpc2l0ZT0ke3ZhbHVlfWAgOiAnJ31gLFxuICAgICAgICAgICAgICAgIGBhcHBsaWNhdGlvbi9qc29uO3ZlcnNpb249JHt0aGlzLl92ZXJzaW9ufSR7dmFsdWUgPyBgO211bHRpc2l0ZT0ke3ZhbHVlfWAgOiAnJ31gXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb250ZW50VHlwZUhlYWRlcihoZWFkZXJzOiBIdHRwSGVhZGVycywgdXJsOiBzdHJpbmcpOiBIdHRwSGVhZGVycyB7XG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignY2xvdWRhcGknKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi8qK2pzb24nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,59 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpResponse } from '@angular/common/http';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ // tslint:disable:jsdoc-format
6
+ /**
7
+ * An interceptor on the response chain that normalizes differences in
8
+ * JSON payloads between vCloud Director version 9.1 and versions
9
+ * greater than 9.1.
10
+ *
11
+ * In 9.1 (API version 30.0) the server serializes JSON and nests the payload in a value field:
12
+ * ```
13
+ {
14
+ "name" : "{http://www.vmware.com/vcloud/versions}SupportedVersions",
15
+ "declaredType" : "com.vmware.vcloud.api.rest.schema.versioning.SupportedVersionsType",
16
+ "scope" : "javax.xml.bind.JAXBElement$GlobalScope",
17
+ "value" : {
18
+ "versionInfo" : [],
19
+ "any" : [],
20
+ "otherAttributes" : {}
21
+ }
22
+ }
23
+ ```
24
+ *
25
+ * That same request in API versions 31.0 and above is represented as:
26
+ * ```
27
+ {
28
+ "versionInfo" : [],
29
+ "any" : [],
30
+ "otherAttributes" : {}
31
+ }
32
+ ```
33
+ * This interceptor should process responses before any other interceptors that rely
34
+ * on consistent API information.
35
+ */
36
+ export class ResponseNormalizationInterceptor {
37
+ intercept(req, next) {
38
+ return next.handle(req).pipe(map(response => {
39
+ // While this condition seems awfully specific, the alternative option of examining the 'Content-Type'
40
+ // response header for 'version=30.0' proved to be an unreliable condition in at least one case;
41
+ // returning the same JSON payload as API versions >= 31.0.
42
+ if (response instanceof HttpResponse && response.body && response.body.value && response.body.declaredType && response.body.scope) {
43
+ const body = response.body.value;
44
+ if (response.body.declaredType === ResponseNormalizationInterceptor.QUERY_RESULT_TYPE) {
45
+ body.record = body.record.map(record => record.value);
46
+ }
47
+ return response.clone({ body });
48
+ }
49
+ return response;
50
+ }));
51
+ }
52
+ }
53
+ ResponseNormalizationInterceptor.QUERY_RESULT_TYPE = 'com.vmware.vcloud.api.rest.schema_v1_5.QueryResultRecordsType';
54
+ ResponseNormalizationInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ResponseNormalizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
55
+ ResponseNormalizationInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ResponseNormalizationInterceptor });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ResponseNormalizationInterceptor, decorators: [{
57
+ type: Injectable
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2Uubm9ybWFsaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjZC9zZGsvc3JjL2NsaWVudC9jbGllbnQvcmVzcG9uc2Uubm9ybWFsaXphdGlvbi5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBd0QsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHMUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVyQyw4QkFBOEI7QUFDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBRUgsTUFBTSxPQUFPLGdDQUFnQztJQUczQyxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDYixzR0FBc0c7WUFDdEcsZ0dBQWdHO1lBQ2hHLDJEQUEyRDtZQUMzRCxJQUFJLFFBQVEsWUFBWSxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDakksTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssZ0NBQWdDLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3JGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3ZEO2dCQUVELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDakM7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7QUFwQnVCLGtEQUFpQixHQUFHLCtEQUErRCxDQUFDOzZIQURqRyxnQ0FBZ0M7aUlBQWhDLGdDQUFnQzsyRkFBaEMsZ0NBQWdDO2tCQUQ1QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIHRzbGludDpkaXNhYmxlOmpzZG9jLWZvcm1hdFxuLyoqXG4gKiBBbiBpbnRlcmNlcHRvciBvbiB0aGUgcmVzcG9uc2UgY2hhaW4gdGhhdCBub3JtYWxpemVzIGRpZmZlcmVuY2VzIGluXG4gKiBKU09OIHBheWxvYWRzIGJldHdlZW4gdkNsb3VkIERpcmVjdG9yIHZlcnNpb24gOS4xIGFuZCB2ZXJzaW9uc1xuICogZ3JlYXRlciB0aGFuIDkuMS5cbiAqXG4gKiBJbiA5LjEgKEFQSSB2ZXJzaW9uIDMwLjApIHRoZSBzZXJ2ZXIgc2VyaWFsaXplcyBKU09OIGFuZCBuZXN0cyB0aGUgcGF5bG9hZCBpbiBhIHZhbHVlIGZpZWxkOlxuICogYGBgXG4gIHtcbiAgICBcIm5hbWVcIiA6IFwie2h0dHA6Ly93d3cudm13YXJlLmNvbS92Y2xvdWQvdmVyc2lvbnN9U3VwcG9ydGVkVmVyc2lvbnNcIixcbiAgICBcImRlY2xhcmVkVHlwZVwiIDogXCJjb20udm13YXJlLnZjbG91ZC5hcGkucmVzdC5zY2hlbWEudmVyc2lvbmluZy5TdXBwb3J0ZWRWZXJzaW9uc1R5cGVcIixcbiAgICBcInNjb3BlXCIgOiBcImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlXCIsXG4gICAgXCJ2YWx1ZVwiIDoge1xuICAgICAgXCJ2ZXJzaW9uSW5mb1wiIDogW10sXG4gICAgICBcImFueVwiIDogW10sXG4gICAgICBcIm90aGVyQXR0cmlidXRlc1wiIDoge31cbiAgICB9XG4gIH1cbiAgYGBgXG4gKlxuICogVGhhdCBzYW1lIHJlcXVlc3QgaW4gQVBJIHZlcnNpb25zIDMxLjAgYW5kIGFib3ZlIGlzIHJlcHJlc2VudGVkIGFzOlxuICogYGBgXG4gIHtcbiAgICBcInZlcnNpb25JbmZvXCIgOiBbXSxcbiAgICBcImFueVwiIDogW10sXG4gICAgXCJvdGhlckF0dHJpYnV0ZXNcIiA6IHt9XG4gIH1cbiAgYGBgXG4gKiBUaGlzIGludGVyY2VwdG9yIHNob3VsZCBwcm9jZXNzIHJlc3BvbnNlcyBiZWZvcmUgYW55IG90aGVyIGludGVyY2VwdG9ycyB0aGF0IHJlbHlcbiAqIG9uIGNvbnNpc3RlbnQgQVBJIGluZm9ybWF0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VOb3JtYWxpemF0aW9uSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9SRVNVTFRfVFlQRSA9ICdjb20udm13YXJlLnZjbG91ZC5hcGkucmVzdC5zY2hlbWFfdjFfNS5RdWVyeVJlc3VsdFJlY29yZHNUeXBlJztcblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxuICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgLy8gV2hpbGUgdGhpcyBjb25kaXRpb24gc2VlbXMgYXdmdWxseSBzcGVjaWZpYywgdGhlIGFsdGVybmF0aXZlIG9wdGlvbiBvZiBleGFtaW5pbmcgdGhlICdDb250ZW50LVR5cGUnXG4gICAgICAgIC8vIHJlc3BvbnNlIGhlYWRlciBmb3IgJ3ZlcnNpb249MzAuMCcgcHJvdmVkIHRvIGJlIGFuIHVucmVsaWFibGUgY29uZGl0aW9uIGluIGF0IGxlYXN0IG9uZSBjYXNlO1xuICAgICAgICAvLyByZXR1cm5pbmcgdGhlIHNhbWUgSlNPTiBwYXlsb2FkIGFzIEFQSSB2ZXJzaW9ucyA+PSAzMS4wLlxuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UgJiYgcmVzcG9uc2UuYm9keSAmJiByZXNwb25zZS5ib2R5LnZhbHVlICYmIHJlc3BvbnNlLmJvZHkuZGVjbGFyZWRUeXBlICYmIHJlc3BvbnNlLmJvZHkuc2NvcGUpIHtcbiAgICAgICAgICBjb25zdCBib2R5ID0gcmVzcG9uc2UuYm9keS52YWx1ZTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuYm9keS5kZWNsYXJlZFR5cGUgPT09IFJlc3BvbnNlTm9ybWFsaXphdGlvbkludGVyY2VwdG9yLlFVRVJZX1JFU1VMVF9UWVBFKSB7XG4gICAgICAgICAgICBib2R5LnJlY29yZCA9IGJvZHkucmVjb3JkLm1hcChyZWNvcmQgPT4gcmVjb3JkLnZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuY2xvbmUoeyBib2R5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=