@shieldiot/ngx-pulseiot-lib 2.18.1332 → 2.18.1334

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 (43) hide show
  1. package/esm2022/lib/model/DeviceActionCode.mjs +5 -1
  2. package/esm2022/lib/model/Insight.mjs +1 -1
  3. package/esm2022/lib/model/Integration.mjs +3 -1
  4. package/esm2022/lib/model/IntegrationTemplate.mjs +7 -1
  5. package/esm2022/lib/model/IntegrationTriggerCode.mjs +2 -2
  6. package/esm2022/lib/model/IntegrationTypeCode.mjs +6 -2
  7. package/esm2022/lib/model/StixCollection.mjs +21 -0
  8. package/esm2022/lib/model/StixCollectionView.mjs +21 -0
  9. package/esm2022/lib/model/StixIndicator.mjs +32 -0
  10. package/esm2022/lib/model/index.mjs +4 -1
  11. package/esm2022/lib/services/ConfigService.mjs +36 -0
  12. package/esm2022/lib/services/SysIntegrationTemplatesService.mjs +5 -2
  13. package/esm2022/lib/services/SysIntegrationsService.mjs +132 -0
  14. package/esm2022/lib/services/TaxiiApiRootService.mjs +36 -0
  15. package/esm2022/lib/services/TaxiiCollectionsService.mjs +42 -0
  16. package/esm2022/lib/services/TaxiiDiscoveryService.mjs +35 -0
  17. package/esm2022/lib/services/TaxiiManifestService.mjs +49 -0
  18. package/esm2022/lib/services/TaxiiObjectsService.mjs +62 -0
  19. package/esm2022/lib/services/UsrDevicesService.mjs +1 -4
  20. package/esm2022/lib/services/UsrIntegrationsService.mjs +2 -2
  21. package/esm2022/lib/services/index.mjs +8 -1
  22. package/fesm2022/shieldiot-ngx-pulseiot-lib.mjs +449 -8
  23. package/fesm2022/shieldiot-ngx-pulseiot-lib.mjs.map +1 -1
  24. package/lib/model/DeviceActionCode.d.ts +2 -1
  25. package/lib/model/Insight.d.ts +2 -2
  26. package/lib/model/Integration.d.ts +4 -2
  27. package/lib/model/IntegrationTemplate.d.ts +7 -0
  28. package/lib/model/IntegrationTypeCode.d.ts +2 -1
  29. package/lib/model/StixCollection.d.ts +12 -0
  30. package/lib/model/StixCollectionView.d.ts +11 -0
  31. package/lib/model/StixIndicator.d.ts +22 -0
  32. package/lib/model/index.d.ts +3 -0
  33. package/lib/services/ConfigService.d.ts +16 -0
  34. package/lib/services/SysIntegrationTemplatesService.d.ts +1 -1
  35. package/lib/services/SysIntegrationsService.d.ts +63 -0
  36. package/lib/services/TaxiiApiRootService.d.ts +15 -0
  37. package/lib/services/TaxiiCollectionsService.d.ts +19 -0
  38. package/lib/services/TaxiiDiscoveryService.d.ts +15 -0
  39. package/lib/services/TaxiiManifestService.d.ts +17 -0
  40. package/lib/services/TaxiiObjectsService.d.ts +20 -0
  41. package/lib/services/UsrIntegrationsService.d.ts +1 -1
  42. package/lib/services/index.d.ts +7 -0
  43. package/package.json +1 -1
@@ -0,0 +1,132 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { APP_CONFIG } from '../../config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../rest-utils";
5
+ import * as i2 from "../../config";
6
+ // SysIntegrationEndPoint is the system-administrator view of integration
7
+ // management. It mirrors the user-facing /integrations endpoint (CRUD + find,
8
+ // validate, test, templates) and additionally exposes the system-level
9
+ // STIX/TAXII feed actions (rotate-token, collection) — replacing the dedicated
10
+ // /sys/stix-taxii endpoint.
11
+ export class SysIntegrationsService {
12
+ // Class constructor
13
+ constructor(config, rest) {
14
+ this.config = config;
15
+ this.rest = rest;
16
+ // URL to web api
17
+ this.baseUrl = '/sys/integration';
18
+ this.baseUrl = this.config.api + this.baseUrl;
19
+ }
20
+ /**
21
+ * Create new integration configuration
22
+ */
23
+ create(body) {
24
+ return this.rest.put(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);
25
+ }
26
+ /**
27
+ * Update existing integration configuration
28
+ */
29
+ update(body) {
30
+ return this.rest.patch(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);
31
+ }
32
+ /**
33
+ * Delete integration configuration
34
+ */
35
+ delete(id) {
36
+ return this.rest.delete(`${this.baseUrl}/${id}`);
37
+ }
38
+ /**
39
+ * Get a single Integration by id
40
+ */
41
+ get(id) {
42
+ return this.rest.get(`${this.baseUrl}/${id}`);
43
+ }
44
+ /**
45
+ * Find integrations by query
46
+ */
47
+ find(streamId, search, sort, page, size) {
48
+ const params = [];
49
+ if (streamId != null) {
50
+ params.push(`streamId=${streamId}`);
51
+ }
52
+ if (search != null) {
53
+ params.push(`search=${search}`);
54
+ }
55
+ if (sort != null) {
56
+ params.push(`sort=${sort}`);
57
+ }
58
+ if (page != null) {
59
+ params.push(`page=${page}`);
60
+ }
61
+ if (size != null) {
62
+ params.push(`size=${size}`);
63
+ }
64
+ return this.rest.get(`${this.baseUrl}`, ...params);
65
+ }
66
+ /**
67
+ * Validate format of the templates in the fields
68
+ */
69
+ validate(body) {
70
+ return this.rest.post(`${this.baseUrl}/validate`, typeof body === 'object' ? JSON.stringify(body) : body);
71
+ }
72
+ /**
73
+ * Test the integration with pseudo data
74
+ */
75
+ test(body) {
76
+ return this.rest.post(`${this.baseUrl}/test`, typeof body === 'object' ? JSON.stringify(body) : body);
77
+ }
78
+ /**
79
+ * Mint or rotate the system STIX/TAXII bearer token. The raw token is returned
80
+ * exactly once; only its bcrypt hash is persisted, so the caller MUST capture
81
+ * it immediately.
82
+ */
83
+ rotateToken() {
84
+ return this.rest.post(`${this.baseUrl}/rotate-token`, '');
85
+ }
86
+ /**
87
+ * Get the system STIX/TAXII collection view, including the firewall-polling URL.
88
+ */
89
+ getCollection() {
90
+ return this.rest.get(`${this.baseUrl}/collection`);
91
+ }
92
+ /**
93
+ * Find available integration templates.
94
+ */
95
+ findTemplates(search, trigger, sort, page, size) {
96
+ const params = [];
97
+ if (search != null) {
98
+ params.push(`search=${search}`);
99
+ }
100
+ if (trigger != null) {
101
+ params.push(`trigger=${trigger}`);
102
+ }
103
+ if (sort != null) {
104
+ params.push(`sort=${sort}`);
105
+ }
106
+ if (page != null) {
107
+ params.push(`page=${page}`);
108
+ }
109
+ if (size != null) {
110
+ params.push(`size=${size}`);
111
+ }
112
+ return this.rest.get(`${this.baseUrl}/templates`, ...params);
113
+ }
114
+ /**
115
+ * Get a single integration template by id.
116
+ */
117
+ getTemplate(id) {
118
+ return this.rest.get(`${this.baseUrl}/templates/${id}`);
119
+ }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SysIntegrationsService, deps: [{ token: APP_CONFIG }, { token: i1.RestUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
121
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SysIntegrationsService, providedIn: 'root' }); }
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SysIntegrationsService, decorators: [{
124
+ type: Injectable,
125
+ args: [{
126
+ providedIn: 'root'
127
+ }]
128
+ }], ctorParameters: () => [{ type: i2.AppConfig, decorators: [{
129
+ type: Inject,
130
+ args: [APP_CONFIG]
131
+ }] }, { type: i1.RestUtils }] });
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3lzSW50ZWdyYXRpb25zU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wdWxzZWlvdC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9TeXNJbnRlZ3JhdGlvbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxjQUFjLENBQUM7Ozs7QUFTckQsMEVBQTBFO0FBQzFFLCtFQUErRTtBQUMvRSx3RUFBd0U7QUFDeEUsZ0ZBQWdGO0FBQ2hGLDZCQUE2QjtBQUk3QixNQUFNLE9BQU8sc0JBQXNCO0lBS2pDLG9CQUFvQjtJQUNwQixZQUF3QyxNQUFpQixFQUFVLElBQWU7UUFBMUMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLFNBQUksR0FBSixJQUFJLENBQVc7UUFKbEYsaUJBQWlCO1FBQ1QsWUFBTyxHQUFHLGtCQUFrQixDQUFDO1FBSW5DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBOEIsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBOEIsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUs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bSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0VXRpbHMgfSBmcm9tICcuLi8uLi9yZXN0LXV0aWxzJztcbmltcG9ydCB7IEFQUF9DT05GSUcsIEFwcENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7IEVudGl0aWVzUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyBTdGl4Q29sbGVjdGlvblZpZXcgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblRlbXBsYXRlIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb24gfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHlSZXNwb25zZSB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWwnO1xuXG4vLyBTeXNJbnRlZ3JhdGlvbkVuZFBvaW50IGlzIHRoZSBzeXN0ZW0tYWRtaW5pc3RyYXRvciB2aWV3IG9mIGludGVncmF0aW9uIFxuLy8gbWFuYWdlbWVudC4gSXQgbWlycm9ycyB0aGUgdXNlci1mYWNpbmcgL2ludGVncmF0aW9ucyBlbmRwb2ludCAoQ1JVRCArIGZpbmQsIFxuLy8gdmFsaWRhdGUsIHRlc3QsIHRlbXBsYXRlcykgYW5kIGFkZGl0aW9uYWxseSBleHBvc2VzIHRoZSBzeXN0ZW0tbGV2ZWwgXG4vLyBTVElYL1RBWElJIGZlZWQgYWN0aW9ucyAocm90YXRlLXRva2VuLCBjb2xsZWN0aW9uKSDigJQgcmVwbGFjaW5nIHRoZSBkZWRpY2F0ZWQgXG4vLyAvc3lzL3N0aXgtdGF4aWkgZW5kcG9pbnQuIFxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3lzSW50ZWdyYXRpb25zU2VydmljZSB7XG5cbiAgLy8gVVJMIHRvIHdlYiBhcGlcbiAgcHJpdmF0ZSBiYXNlVXJsID0gJy9zeXMvaW50ZWdyYXRpb24nO1xuXG4gIC8vIENsYXNzIGNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVBQX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEFwcENvbmZpZywgcHJpdmF0ZSByZXN0OiBSZXN0VXRpbHMpIHtcbiAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmNvbmZpZy5hcGkgKyB0aGlzLmJhc2VVcmw7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBpbnRlZ3JhdGlvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICBjcmVhdGUoYm9keT86IEludGVncmF0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5wdXQ8RW50aXR5UmVzcG9uc2U8SW50ZWdyYXRpb24+PihgJHt0aGlzLmJhc2VVcmx9YCwgdHlwZW9mIGJvZHkgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiBib2R5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgZXhpc3RpbmcgaW50ZWdyYXRpb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgdXBkYXRlKGJvZHk/OiBJbnRlZ3JhdGlvbikge1xuICAgIHJldHVybiB0aGlzLnJlc3QucGF0Y2g8RW50aXR5UmVzcG9uc2U8SW50ZWdyYXRpb24+PihgJHt0aGlzLmJhc2VVcmx9YCwgdHlwZW9mIGJvZHkgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiBib2R5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgaW50ZWdyYXRpb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgZGVsZXRlKGlkPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5kZWxldGU8QWN0aW9uUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0vJHtpZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaW5nbGUgSW50ZWdyYXRpb24gYnkgaWRcbiAgICovXG4gIGdldChpZD86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlc3QuZ2V0PEVudGl0eVJlc3BvbnNlPEludGVncmF0aW9uPj4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgaW50ZWdyYXRpb25zIGJ5IHF1ZXJ5XG4gICAqL1xuICBmaW5kKHN0cmVhbUlkPzogc3RyaW5nLCBzZWFyY2g/OiBzdHJpbmcsIHNvcnQ/OiBzdHJpbmcsIHBhZ2U/OiBudW1iZXIsIHNpemU/OiBudW1iZXIpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICBpZiAoc3RyZWFtSWQgIT0gbnVsbCkgeyBwYXJhbXMucHVzaChgc3RyZWFtSWQ9JHtzdHJlYW1JZH1gKTsgfVxuICAgIGlmIChzZWFyY2ggIT0gbnVsbCkgeyBwYXJhbXMucHVzaChgc2VhcmNoPSR7c2VhcmNofWApOyB9XG4gICAgaWYgKHNvcnQgIT0gbnVsbCkgeyBwYXJhbXMucHVzaChgc29ydD0ke3NvcnR9YCk7IH1cbiAgICBpZiAocGFnZSAhPSBudWxsKSB7IHBhcmFtcy5wdXNoKGBwYWdlPSR7cGFnZX1gKTsgfVxuICAgIGlmIChzaXplICE9IG51bGwpIHsgcGFyYW1zLnB1c2goYHNpemU9JHtzaXplfWApOyB9XG5cblx0XHRyZXR1cm4gdGhpcy5yZXN0LmdldDxFbnRpdGllc1Jlc3BvbnNlPEludGVncmF0aW9uPj4oYCR7dGhpcy5iYXNlVXJsfWAsIC4uLnBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgZm9ybWF0IG9mIHRoZSB0ZW1wbGF0ZXMgaW4gdGhlIGZpZWxkc1xuICAgKi9cbiAgdmFsaWRhdGUoYm9keT86IEludGVncmF0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5wb3N0PEVudGl0eVJlc3BvbnNlPEludGVncmF0aW9uPj4oYCR7dGhpcy5iYXNlVXJsfS92YWxpZGF0ZWAsIHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KGJvZHkpIDogYm9keSk7XG4gIH1cblxuICAvKipcbiAgICogVGVzdCB0aGUgaW50ZWdyYXRpb24gd2l0aCBwc2V1ZG8gZGF0YVxuICAgKi9cbiAgdGVzdChib2R5PzogSW50ZWdyYXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5yZXN0LnBvc3Q8RW50aXR5UmVzcG9uc2U8SW50ZWdyYXRpb24+PihgJHt0aGlzLmJhc2VVcmx9L3Rlc3RgLCB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShib2R5KSA6IGJvZHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pbnQgb3Igcm90YXRlIHRoZSBzeXN0ZW0gU1RJWC9UQVhJSSBiZWFyZXIgdG9rZW4uIFRoZSByYXcgdG9rZW4gaXMgcmV0dXJuZWRcbiAgICogZXhhY3RseSBvbmNlOyBvbmx5IGl0cyBiY3J5cHQgaGFzaCBpcyBwZXJzaXN0ZWQsIHNvIHRoZSBjYWxsZXIgTVVTVCBjYXB0dXJlXG4gICAqIGl0IGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgcm90YXRlVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5wb3N0PEFjdGlvblJlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9L3JvdGF0ZS10b2tlbmAsICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN5c3RlbSBTVElYL1RBWElJIGNvbGxlY3Rpb24gdmlldywgaW5jbHVkaW5nIHRoZSBmaXJld2FsbC1wb2xsaW5nIFVSTC5cbiAgICovXG4gIGdldENvbGxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5nZXQ8RW50aXR5UmVzcG9uc2U8U3RpeENvbGxlY3Rpb25WaWV3Pj4oYCR7dGhpcy5iYXNlVXJsfS9jb2xsZWN0aW9uYCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhdmFpbGFibGUgaW50ZWdyYXRpb24gdGVtcGxhdGVzLlxuICAgKi9cbiAgZmluZFRlbXBsYXRlcyhzZWFyY2g/OiBzdHJpbmcsIHRyaWdnZXI/OiBudW1iZXIsIHNvcnQ/OiBzdHJpbmcsIHBhZ2U/OiBudW1iZXIsIHNpemU/OiBudW1iZXIpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICBpZiAoc2VhcmNoICE9IG51bGwpIHsgcGFyYW1zLnB1c2goYHNlYXJjaD0ke3NlYXJjaH1gKTsgfVxuICAgIGlmICh0cmlnZ2VyICE9IG51bGwpIHsgcGFyYW1zLnB1c2goYHRyaWdnZXI9JHt0cmlnZ2VyfWApOyB9XG4gICAgaWYgKHNvcnQgIT0gbnVsbCkgeyBwYXJhbXMucHVzaChgc29ydD0ke3NvcnR9YCk7IH1cbiAgICBpZiAocGFnZSAhPSBudWxsKSB7IHBhcmFtcy5wdXNoKGBwYWdlPSR7cGFnZX1gKTsgfVxuICAgIGlmIChzaXplICE9IG51bGwpIHsgcGFyYW1zLnB1c2goYHNpemU9JHtzaXplfWApOyB9XG5cblx0XHRyZXR1cm4gdGhpcy5yZXN0LmdldDxFbnRpdGllc1Jlc3BvbnNlPEludGVncmF0aW9uVGVtcGxhdGU+PihgJHt0aGlzLmJhc2VVcmx9L3RlbXBsYXRlc2AsIC4uLnBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2luZ2xlIGludGVncmF0aW9uIHRlbXBsYXRlIGJ5IGlkLlxuICAgKi9cbiAgZ2V0VGVtcGxhdGUoaWQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN0LmdldDxFbnRpdHlSZXNwb25zZTxJbnRlZ3JhdGlvblRlbXBsYXRlPj4oYCR7dGhpcy5iYXNlVXJsfS90ZW1wbGF0ZXMvJHtpZH1gKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { APP_CONFIG } from '../../config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../rest-utils";
5
+ import * as i2 from "../../config";
6
+ // TaxiiApiRootEndPoint serves the TAXII 2.1 API Root information resource.
7
+ // Unauthenticated — clients fetch this to discover the supported versions
8
+ // before sending an authenticated request to a collection.
9
+ export class TaxiiApiRootService {
10
+ // Class constructor
11
+ constructor(config, rest) {
12
+ this.config = config;
13
+ this.rest = rest;
14
+ // URL to web api
15
+ this.baseUrl = '/taxii2/default';
16
+ this.baseUrl = this.config.api + this.baseUrl;
17
+ }
18
+ /**
19
+ * apiRoot returns the TAXII 2.1 API Root information resource.
20
+ */
21
+ apiRoot() {
22
+ return this.rest.get(`${this.baseUrl}`);
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiApiRootService, deps: [{ token: APP_CONFIG }, { token: i1.RestUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiApiRootService, providedIn: 'root' }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiApiRootService, decorators: [{
28
+ type: Injectable,
29
+ args: [{
30
+ providedIn: 'root'
31
+ }]
32
+ }], ctorParameters: () => [{ type: i2.AppConfig, decorators: [{
33
+ type: Inject,
34
+ args: [APP_CONFIG]
35
+ }] }, { type: i1.RestUtils }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGF4aWlBcGlSb290U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wdWxzZWlvdC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9UYXhpaUFwaVJvb3RTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxjQUFjLENBQUM7Ozs7QUFHckQsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSw0REFBNEQ7QUFJNUQsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixvQkFBb0I7SUFDcEIsWUFBd0MsTUFBaUIsRUFBVSxJQUFlO1FBQTFDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFXO1FBSmxGLGlCQUFpQjtRQUNULFlBQU8sR0FBRyxpQkFBaUIsQ0FBQztRQUlsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDOzhHQWZVLG1CQUFtQixrQkFNVixVQUFVO2tIQU5uQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT2MsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RVdGlscyB9IGZyb20gJy4uLy4uL3Jlc3QtdXRpbHMnO1xuaW1wb3J0IHsgQVBQX0NPTkZJRywgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuXG4vLyBUYXhpaUFwaVJvb3RFbmRQb2ludCBzZXJ2ZXMgdGhlIFRBWElJIDIuMSBBUEkgUm9vdCBpbmZvcm1hdGlvbiByZXNvdXJjZS4gXG4vLyBVbmF1dGhlbnRpY2F0ZWQg4oCUIGNsaWVudHMgZmV0Y2ggdGhpcyB0byBkaXNjb3ZlciB0aGUgc3VwcG9ydGVkIHZlcnNpb25zIFxuLy8gYmVmb3JlIHNlbmRpbmcgYW4gYXV0aGVudGljYXRlZCByZXF1ZXN0IHRvIGEgY29sbGVjdGlvbi4gXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYXhpaUFwaVJvb3RTZXJ2aWNlIHtcblxuICAvLyBVUkwgdG8gd2ViIGFwaVxuICBwcml2YXRlIGJhc2VVcmwgPSAnL3RheGlpMi9kZWZhdWx0JztcblxuICAvLyBDbGFzcyBjb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBBcHBDb25maWcsIHByaXZhdGUgcmVzdDogUmVzdFV0aWxzKSB7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5jb25maWcuYXBpICsgdGhpcy5iYXNlVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGFwaVJvb3QgcmV0dXJucyB0aGUgVEFYSUkgMi4xIEFQSSBSb290IGluZm9ybWF0aW9uIHJlc291cmNlLlxuICAgKi9cbiAgYXBpUm9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN0LmdldDxvYmplY3Q+KGAke3RoaXMuYmFzZVVybH1gKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { APP_CONFIG } from '../../config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../rest-utils";
5
+ import * as i2 from "../../config";
6
+ // TaxiiCollectionsEndPoint serves the TAXII 2.1 Collections + Get Collection
7
+ // resources. Authenticated — each request must carry a bearer token resolving
8
+ // to a collection owned by the caller.
9
+ export class TaxiiCollectionsService {
10
+ // Class constructor
11
+ constructor(config, rest) {
12
+ this.config = config;
13
+ this.rest = rest;
14
+ // URL to web api
15
+ this.baseUrl = '/taxii2/default/collections';
16
+ this.baseUrl = this.config.api + this.baseUrl;
17
+ }
18
+ /**
19
+ * list returns all collections visible to the authenticated caller (one in v1).
20
+ */
21
+ list() {
22
+ return this.rest.get(`${this.baseUrl}`);
23
+ }
24
+ /**
25
+ * get returns the metadata for a single collection identified by id.
26
+ */
27
+ get(id) {
28
+ return this.rest.get(`${this.baseUrl}/${id}`);
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiCollectionsService, deps: [{ token: APP_CONFIG }, { token: i1.RestUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiCollectionsService, providedIn: 'root' }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiCollectionsService, decorators: [{
34
+ type: Injectable,
35
+ args: [{
36
+ providedIn: 'root'
37
+ }]
38
+ }], ctorParameters: () => [{ type: i2.AppConfig, decorators: [{
39
+ type: Inject,
40
+ args: [APP_CONFIG]
41
+ }] }, { type: i1.RestUtils }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGF4aWlDb2xsZWN0aW9uc1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHVsc2Vpb3QtbGliL3NyYy9saWIvc2VydmljZXMvVGF4aWlDb2xsZWN0aW9uc1NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGNBQWMsQ0FBQzs7OztBQUdyRCw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLHdDQUF3QztBQUl4QyxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLG9CQUFvQjtJQUNwQixZQUF3QyxNQUFpQixFQUFVLElBQWU7UUFBMUMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLFNBQUksR0FBSixJQUFJLENBQVc7UUFKbEYsaUJBQWlCO1FBQ1QsWUFBTyxHQUFHLDZCQUE2QixDQUFDO1FBSTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxFQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDOzhHQXRCVSx1QkFBdUIsa0JBTWQsVUFBVTtrSEFObkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9jLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0VXRpbHMgfSBmcm9tICcuLi8uLi9yZXN0LXV0aWxzJztcbmltcG9ydCB7IEFQUF9DT05GSUcsIEFwcENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cblxuLy8gVGF4aWlDb2xsZWN0aW9uc0VuZFBvaW50IHNlcnZlcyB0aGUgVEFYSUkgMi4xIENvbGxlY3Rpb25zICsgR2V0IENvbGxlY3Rpb24gXG4vLyByZXNvdXJjZXMuIEF1dGhlbnRpY2F0ZWQg4oCUIGVhY2ggcmVxdWVzdCBtdXN0IGNhcnJ5IGEgYmVhcmVyIHRva2VuIHJlc29sdmluZyBcbi8vIHRvIGEgY29sbGVjdGlvbiBvd25lZCBieSB0aGUgY2FsbGVyLiBcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRheGlpQ29sbGVjdGlvbnNTZXJ2aWNlIHtcblxuICAvLyBVUkwgdG8gd2ViIGFwaVxuICBwcml2YXRlIGJhc2VVcmwgPSAnL3RheGlpMi9kZWZhdWx0L2NvbGxlY3Rpb25zJztcblxuICAvLyBDbGFzcyBjb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBBcHBDb25maWcsIHByaXZhdGUgcmVzdDogUmVzdFV0aWxzKSB7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5jb25maWcuYXBpICsgdGhpcy5iYXNlVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGxpc3QgcmV0dXJucyBhbGwgY29sbGVjdGlvbnMgdmlzaWJsZSB0byB0aGUgYXV0aGVudGljYXRlZCBjYWxsZXIgKG9uZSBpbiB2MSkuXG4gICAqL1xuICBsaXN0KCkge1xuICAgIHJldHVybiB0aGlzLnJlc3QuZ2V0PG9iamVjdD4oYCR7dGhpcy5iYXNlVXJsfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCByZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYSBzaW5nbGUgY29sbGVjdGlvbiBpZGVudGlmaWVkIGJ5IGlkLlxuICAgKi9cbiAgZ2V0KGlkPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5nZXQ8b2JqZWN0PihgJHt0aGlzLmJhc2VVcmx9LyR7aWR9YCk7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { APP_CONFIG } from '../../config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../rest-utils";
5
+ import * as i2 from "../../config";
6
+ // TaxiiDiscoveryEndPoint serves the TAXII 2.1 Discovery resource.
7
+ // Unauthenticated — any caller may discover the server's api_roots.
8
+ export class TaxiiDiscoveryService {
9
+ // Class constructor
10
+ constructor(config, rest) {
11
+ this.config = config;
12
+ this.rest = rest;
13
+ // URL to web api
14
+ this.baseUrl = '/taxii2';
15
+ this.baseUrl = this.config.api + this.baseUrl;
16
+ }
17
+ /**
18
+ * discovery returns the TAXII 2.1 Discovery resource.
19
+ */
20
+ discovery() {
21
+ return this.rest.get(`${this.baseUrl}`);
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiDiscoveryService, deps: [{ token: APP_CONFIG }, { token: i1.RestUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiDiscoveryService, providedIn: 'root' }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiDiscoveryService, decorators: [{
27
+ type: Injectable,
28
+ args: [{
29
+ providedIn: 'root'
30
+ }]
31
+ }], ctorParameters: () => [{ type: i2.AppConfig, decorators: [{
32
+ type: Inject,
33
+ args: [APP_CONFIG]
34
+ }] }, { type: i1.RestUtils }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGF4aWlEaXNjb3ZlcnlTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXB1bHNlaW90LWxpYi9zcmMvbGliL3NlcnZpY2VzL1RheGlpRGlzY292ZXJ5U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sY0FBYyxDQUFDOzs7O0FBR3JELG1FQUFtRTtBQUNuRSxxRUFBcUU7QUFJckUsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxvQkFBb0I7SUFDcEIsWUFBd0MsTUFBaUIsRUFBVSxJQUFlO1FBQTFDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFXO1FBSmxGLGlCQUFpQjtRQUNULFlBQU8sR0FBRyxTQUFTLENBQUM7UUFJMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FmVSxxQkFBcUIsa0JBTVosVUFBVTtrSEFObkIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9jLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0VXRpbHMgfSBmcm9tICcuLi8uLi9yZXN0LXV0aWxzJztcbmltcG9ydCB7IEFQUF9DT05GSUcsIEFwcENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cblxuLy8gVGF4aWlEaXNjb3ZlcnlFbmRQb2ludCBzZXJ2ZXMgdGhlIFRBWElJIDIuMSBEaXNjb3ZlcnkgcmVzb3VyY2UuIFxuLy8gVW5hdXRoZW50aWNhdGVkIOKAlCBhbnkgY2FsbGVyIG1heSBkaXNjb3ZlciB0aGUgc2VydmVyJ3MgYXBpX3Jvb3RzLiBcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRheGlpRGlzY292ZXJ5U2VydmljZSB7XG5cbiAgLy8gVVJMIHRvIHdlYiBhcGlcbiAgcHJpdmF0ZSBiYXNlVXJsID0gJy90YXhpaTInO1xuXG4gIC8vIENsYXNzIGNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVBQX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEFwcENvbmZpZywgcHJpdmF0ZSByZXN0OiBSZXN0VXRpbHMpIHtcbiAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmNvbmZpZy5hcGkgKyB0aGlzLmJhc2VVcmw7XG4gIH1cblxuICAvKipcbiAgICogZGlzY292ZXJ5IHJldHVybnMgdGhlIFRBWElJIDIuMSBEaXNjb3ZlcnkgcmVzb3VyY2UuXG4gICAqL1xuICBkaXNjb3ZlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5nZXQ8b2JqZWN0PihgJHt0aGlzLmJhc2VVcmx9YCk7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,49 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { APP_CONFIG } from '../../config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../rest-utils";
5
+ import * as i2 from "../../config";
6
+ // TaxiiManifestEndPoint serves the TAXII 2.1 Get Manifest resource — a
7
+ // lightweight metadata view (id, date_added, version, media_type) of the
8
+ // indicators visible to the caller, used by clients for diffing without
9
+ // downloading object bodies.
10
+ export class TaxiiManifestService {
11
+ // Class constructor
12
+ constructor(config, rest) {
13
+ this.config = config;
14
+ this.rest = rest;
15
+ // URL to web api
16
+ this.baseUrl = '/taxii2/default/collections/:id/manifest';
17
+ this.baseUrl = this.config.api + this.baseUrl;
18
+ }
19
+ /**
20
+ * list returns the TAXII 2.1 manifest envelope for the indicators in this
21
+ * collection that match the given `added_after`, `limit`, `next`, and
22
+ * `match[*]` filters.
23
+ */
24
+ list(id, added_after, limit, next) {
25
+ const params = [];
26
+ if (added_after != null) {
27
+ params.push(`added_after=${added_after}`);
28
+ }
29
+ if (limit != null) {
30
+ params.push(`limit=${limit}`);
31
+ }
32
+ if (next != null) {
33
+ params.push(`next=${next}`);
34
+ }
35
+ return this.rest.get(`${this.baseUrl}`, ...params);
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiManifestService, deps: [{ token: APP_CONFIG }, { token: i1.RestUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiManifestService, providedIn: 'root' }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiManifestService, decorators: [{
41
+ type: Injectable,
42
+ args: [{
43
+ providedIn: 'root'
44
+ }]
45
+ }], ctorParameters: () => [{ type: i2.AppConfig, decorators: [{
46
+ type: Inject,
47
+ args: [APP_CONFIG]
48
+ }] }, { type: i1.RestUtils }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGF4aWlNYW5pZmVzdFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHVsc2Vpb3QtbGliL3NyYy9saWIvc2VydmljZXMvVGF4aWlNYW5pZmVzdFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGNBQWMsQ0FBQzs7OztBQUdyRCx3RUFBd0U7QUFDeEUsMEVBQTBFO0FBQzFFLHlFQUF5RTtBQUN6RSw4QkFBOEI7QUFJOUIsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixvQkFBb0I7SUFDcEIsWUFBd0MsTUFBaUIsRUFBVSxJQUFlO1FBQTFDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFXO1FBSmxGLGlCQUFpQjtRQUNULFlBQU8sR0FBRywwQ0FBMEMsQ0FBQztRQUkzRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsRUFBVyxFQUFFLFdBQW9CLEVBQUUsS0FBYyxFQUFFLElBQWE7UUFDbkUsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ3ZFLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ3JELElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBRXBELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQXRCVSxvQkFBb0Isa0JBTVgsVUFBVTtrSEFObkIsb0JBQW9CLGNBRm5CLE1BQU07OzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9jLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0VXRpbHMgfSBmcm9tICcuLi8uLi9yZXN0LXV0aWxzJztcbmltcG9ydCB7IEFQUF9DT05GSUcsIEFwcENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cblxuLy8gVGF4aWlNYW5pZmVzdEVuZFBvaW50IHNlcnZlcyB0aGUgVEFYSUkgMi4xIEdldCBNYW5pZmVzdCByZXNvdXJjZSDigJQgYSBcbi8vIGxpZ2h0d2VpZ2h0IG1ldGFkYXRhIHZpZXcgKGlkLCBkYXRlX2FkZGVkLCB2ZXJzaW9uLCBtZWRpYV90eXBlKSBvZiB0aGUgXG4vLyBpbmRpY2F0b3JzIHZpc2libGUgdG8gdGhlIGNhbGxlciwgdXNlZCBieSBjbGllbnRzIGZvciBkaWZmaW5nIHdpdGhvdXQgXG4vLyBkb3dubG9hZGluZyBvYmplY3QgYm9kaWVzLiBcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRheGlpTWFuaWZlc3RTZXJ2aWNlIHtcblxuICAvLyBVUkwgdG8gd2ViIGFwaVxuICBwcml2YXRlIGJhc2VVcmwgPSAnL3RheGlpMi9kZWZhdWx0L2NvbGxlY3Rpb25zLzppZC9tYW5pZmVzdCc7XG5cbiAgLy8gQ2xhc3MgY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IoQEluamVjdChBUFBfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogQXBwQ29uZmlnLCBwcml2YXRlIHJlc3Q6IFJlc3RVdGlscykge1xuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuY29uZmlnLmFwaSArIHRoaXMuYmFzZVVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBsaXN0IHJldHVybnMgdGhlIFRBWElJIDIuMSBtYW5pZmVzdCBlbnZlbG9wZSBmb3IgdGhlIGluZGljYXRvcnMgaW4gdGhpc1xuICAgKiBjb2xsZWN0aW9uIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIGBhZGRlZF9hZnRlcmAsIGBsaW1pdGAsIGBuZXh0YCwgYW5kXG4gICAqIGBtYXRjaFsqXWAgZmlsdGVycy5cbiAgICovXG4gIGxpc3QoaWQ/OiBzdHJpbmcsIGFkZGVkX2FmdGVyPzogc3RyaW5nLCBsaW1pdD86IG51bWJlciwgbmV4dD86IHN0cmluZykge1xuICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgIGlmIChhZGRlZF9hZnRlciAhPSBudWxsKSB7IHBhcmFtcy5wdXNoKGBhZGRlZF9hZnRlcj0ke2FkZGVkX2FmdGVyfWApOyB9XG4gICAgaWYgKGxpbWl0ICE9IG51bGwpIHsgcGFyYW1zLnB1c2goYGxpbWl0PSR7bGltaXR9YCk7IH1cbiAgICBpZiAobmV4dCAhPSBudWxsKSB7IHBhcmFtcy5wdXNoKGBuZXh0PSR7bmV4dH1gKTsgfVxuXG5cdFx0cmV0dXJuIHRoaXMucmVzdC5nZXQ8b2JqZWN0PihgJHt0aGlzLmJhc2VVcmx9YCwgLi4ucGFyYW1zKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,62 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { APP_CONFIG } from '../../config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../rest-utils";
5
+ import * as i2 from "../../config";
6
+ // TaxiiObjectsEndPoint serves the TAXII 2.1 Get Objects + Get Object resources.
7
+ // This is the hot path that customer firewalls poll on their configured
8
+ // interval (typically 1–15 min).
9
+ export class TaxiiObjectsService {
10
+ // Class constructor
11
+ constructor(config, rest) {
12
+ this.config = config;
13
+ this.rest = rest;
14
+ // URL to web api
15
+ this.baseUrl = '/taxii2/default/collections/:id/objects';
16
+ this.baseUrl = this.config.api + this.baseUrl;
17
+ }
18
+ /**
19
+ * list returns a TAXII 2.1 envelope of STIX indicators added or modified
20
+ * after the given `added_after` timestamp, paginated via `limit` + `next`.
21
+ */
22
+ list(id, added_after, limit, next, matchType, matchId, matchSpecVersion) {
23
+ const params = [];
24
+ if (added_after != null) {
25
+ params.push(`added_after=${added_after}`);
26
+ }
27
+ if (limit != null) {
28
+ params.push(`limit=${limit}`);
29
+ }
30
+ if (next != null) {
31
+ params.push(`next=${next}`);
32
+ }
33
+ if (matchType != null) {
34
+ params.push(`match[type]=${encodeURIComponent(matchType)}`);
35
+ }
36
+ if (matchId != null) {
37
+ params.push(`match[id]=${encodeURIComponent(matchId)}`);
38
+ }
39
+ if (matchSpecVersion != null) {
40
+ params.push(`match[spec_version]=${encodeURIComponent(matchSpecVersion)}`);
41
+ }
42
+ return this.rest.get(`${this.baseUrl}`, ...params);
43
+ }
44
+ /**
45
+ * get returns a single STIX object by id.
46
+ */
47
+ get(id, objectId) {
48
+ return this.rest.get(`${this.baseUrl}/${objectId}`);
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiObjectsService, deps: [{ token: APP_CONFIG }, { token: i1.RestUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
51
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiObjectsService, providedIn: 'root' }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaxiiObjectsService, decorators: [{
54
+ type: Injectable,
55
+ args: [{
56
+ providedIn: 'root'
57
+ }]
58
+ }], ctorParameters: () => [{ type: i2.AppConfig, decorators: [{
59
+ type: Inject,
60
+ args: [APP_CONFIG]
61
+ }] }, { type: i1.RestUtils }] });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGF4aWlPYmplY3RzU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wdWxzZWlvdC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9UYXhpaU9iamVjdHNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxjQUFjLENBQUM7Ozs7QUFHckQsaUZBQWlGO0FBQ2pGLHlFQUF5RTtBQUN6RSxrQ0FBa0M7QUFJbEMsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixvQkFBb0I7SUFDcEIsWUFBd0MsTUFBaUIsRUFBVSxJQUFlO1FBQTFDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFXO1FBSmxGLGlCQUFpQjtRQUNULFlBQU8sR0FBRyx5Q0FBeUMsQ0FBQztRQUkxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FDQSxFQUFXLEVBQ1gsV0FBb0IsRUFDcEIsS0FBYyxFQUNkLElBQWEsRUFDYixTQUFrQixFQUNsQixPQUFnQixFQUNoQixnQkFBeUI7UUFFM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksV0FBVyxJQUFJLElBQUksRUFBSyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzFFLElBQUksS0FBSyxJQUFJLElBQUksRUFBVyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzlELElBQUksSUFBSSxJQUFJLElBQUksRUFBWSxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzVELElBQUksU0FBUyxJQUFJLElBQUksRUFBUyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDOUYsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFXLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUMxRixJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBRTdHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxHQUFHLENBQUMsRUFBVyxFQUFFLFFBQWlCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs4R0F4Q1UsbUJBQW1CLGtCQU1WLFVBQVU7a0hBTm5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFPYyxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdFV0aWxzIH0gZnJvbSAnLi4vLi4vcmVzdC11dGlscyc7XG5pbXBvcnQgeyBBUFBfQ09ORklHLCBBcHBDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5cbi8vIFRheGlpT2JqZWN0c0VuZFBvaW50IHNlcnZlcyB0aGUgVEFYSUkgMi4xIEdldCBPYmplY3RzICsgR2V0IE9iamVjdCByZXNvdXJjZXMuIFxuLy8gVGhpcyBpcyB0aGUgaG90IHBhdGggdGhhdCBjdXN0b21lciBmaXJld2FsbHMgcG9sbCBvbiB0aGVpciBjb25maWd1cmVkIFxuLy8gaW50ZXJ2YWwgKHR5cGljYWxseSAx4oCTMTUgbWluKS4gXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYXhpaU9iamVjdHNTZXJ2aWNlIHtcblxuICAvLyBVUkwgdG8gd2ViIGFwaVxuICBwcml2YXRlIGJhc2VVcmwgPSAnL3RheGlpMi9kZWZhdWx0L2NvbGxlY3Rpb25zLzppZC9vYmplY3RzJztcblxuICAvLyBDbGFzcyBjb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBBcHBDb25maWcsIHByaXZhdGUgcmVzdDogUmVzdFV0aWxzKSB7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5jb25maWcuYXBpICsgdGhpcy5iYXNlVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGxpc3QgcmV0dXJucyBhIFRBWElJIDIuMSBlbnZlbG9wZSBvZiBTVElYIGluZGljYXRvcnMgYWRkZWQgb3IgbW9kaWZpZWRcbiAgICogYWZ0ZXIgdGhlIGdpdmVuIGBhZGRlZF9hZnRlcmAgdGltZXN0YW1wLCBwYWdpbmF0ZWQgdmlhIGBsaW1pdGAgKyBgbmV4dGAuXG4gICAqL1xuICBsaXN0KFxuICAgICAgaWQ/OiBzdHJpbmcsXG4gICAgICBhZGRlZF9hZnRlcj86IHN0cmluZyxcbiAgICAgIGxpbWl0PzogbnVtYmVyLFxuICAgICAgbmV4dD86IHN0cmluZyxcbiAgICAgIG1hdGNoVHlwZT86IHN0cmluZyxcbiAgICAgIG1hdGNoSWQ/OiBzdHJpbmcsXG4gICAgICBtYXRjaFNwZWNWZXJzaW9uPzogc3RyaW5nLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICBpZiAoYWRkZWRfYWZ0ZXIgIT0gbnVsbCkgICAgeyBwYXJhbXMucHVzaChgYWRkZWRfYWZ0ZXI9JHthZGRlZF9hZnRlcn1gKTsgfVxuICAgIGlmIChsaW1pdCAhPSBudWxsKSAgICAgICAgICB7IHBhcmFtcy5wdXNoKGBsaW1pdD0ke2xpbWl0fWApOyB9XG4gICAgaWYgKG5leHQgIT0gbnVsbCkgICAgICAgICAgIHsgcGFyYW1zLnB1c2goYG5leHQ9JHtuZXh0fWApOyB9XG4gICAgaWYgKG1hdGNoVHlwZSAhPSBudWxsKSAgICAgICAgeyBwYXJhbXMucHVzaChgbWF0Y2hbdHlwZV09JHtlbmNvZGVVUklDb21wb25lbnQobWF0Y2hUeXBlKX1gKTsgfVxuICAgIGlmIChtYXRjaElkICE9IG51bGwpICAgICAgICAgIHsgcGFyYW1zLnB1c2goYG1hdGNoW2lkXT0ke2VuY29kZVVSSUNvbXBvbmVudChtYXRjaElkKX1gKTsgfVxuICAgIGlmIChtYXRjaFNwZWNWZXJzaW9uICE9IG51bGwpIHsgcGFyYW1zLnB1c2goYG1hdGNoW3NwZWNfdmVyc2lvbl09JHtlbmNvZGVVUklDb21wb25lbnQobWF0Y2hTcGVjVmVyc2lvbil9YCk7IH1cblxuICAgIHJldHVybiB0aGlzLnJlc3QuZ2V0PG9iamVjdD4oYCR7dGhpcy5iYXNlVXJsfWAsIC4uLnBhcmFtcyk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBnZXQgcmV0dXJucyBhIHNpbmdsZSBTVElYIG9iamVjdCBieSBpZC5cbiAgICovXG4gIGdldChpZD86IHN0cmluZywgb2JqZWN0SWQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN0LmdldDxvYmplY3Q+KGAke3RoaXMuYmFzZVVybH0vJHtvYmplY3RJZH1gKTtcbiAgfVxuXG59XG4iXX0=