@studyportals/campaign-management-api-interface 16.1.0 → 16.1.3
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.
- package/package.json +19 -16
- package/src/domain/id.dto.d.ts +4 -0
- package/src/domain/id.dto.js +10 -0
- package/src/domain/id.dto.js.map +1 -0
- package/src/private-user-campaign-management-api.client.d.ts +5 -10
- package/src/private-user-campaign-management-api.client.js +70 -32
- package/src/private-user-campaign-management-api.client.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studyportals/campaign-management-api-interface",
|
|
3
|
-
"version": "16.1.
|
|
3
|
+
"version": "16.1.3",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"compile": "rm -fR bin && npx tsc",
|
|
6
6
|
"test-u": "jest -c jest.config.unit.json --maxWorkers=1",
|
|
@@ -19,31 +19,34 @@
|
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@studyportals/code-style": "^2.2.1",
|
|
21
21
|
"@testdeck/jest": "^0.3.3",
|
|
22
|
-
"@types/chai": "^4.3.
|
|
23
|
-
"@types/jest": "^29.
|
|
24
|
-
"@types/node": "^22.
|
|
22
|
+
"@types/chai": "^4.3.20",
|
|
23
|
+
"@types/jest": "^29.5.14",
|
|
24
|
+
"@types/node": "^22.19.7",
|
|
25
25
|
"@types/superagent": "^8.1.9",
|
|
26
|
-
"chai": "^4.
|
|
27
|
-
"eslint": "^8.
|
|
28
|
-
"jest": "^29.
|
|
29
|
-
"jest-mock-extended": "^3.0.
|
|
30
|
-
"superagent": "^8.1.2",
|
|
26
|
+
"chai": "^4.5.0",
|
|
27
|
+
"eslint": "^8.57.1",
|
|
28
|
+
"jest": "^29.7.0",
|
|
29
|
+
"jest-mock-extended": "^3.0.7",
|
|
31
30
|
"superagent-mocker": "^0.5.2",
|
|
32
|
-
"ts-jest": "^29.
|
|
31
|
+
"ts-jest": "^29.4.6",
|
|
33
32
|
"ts-node": "^10.9.2",
|
|
34
|
-
"typescript": "^5.
|
|
33
|
+
"typescript": "^5.9.3"
|
|
35
34
|
},
|
|
36
35
|
"dependencies": {
|
|
36
|
+
"@aws-crypto/sha256-js": "^5.2.0",
|
|
37
|
+
"@aws-sdk/credential-provider-node": "^3.972.2",
|
|
38
|
+
"@smithy/signature-v4": "^5.3.8",
|
|
37
39
|
"@studyportals/mb-platform-date-time": "^1.3.1",
|
|
38
40
|
"@studyportals/mb-platform-http-requests": "^2.8.0",
|
|
39
41
|
"@studyportals/university-scheduler-interface": "^0.7.0",
|
|
40
42
|
"class-transformer": "^0.5.1",
|
|
41
|
-
"class-validator": "^0.14.
|
|
42
|
-
"inversify": "^6.
|
|
43
|
-
"reflect-metadata": "^0.
|
|
43
|
+
"class-validator": "^0.14.3",
|
|
44
|
+
"inversify": "^6.2.2",
|
|
45
|
+
"reflect-metadata": "^0.2.2",
|
|
46
|
+
"superagent": "^8.1.2"
|
|
44
47
|
},
|
|
45
48
|
"engines": {
|
|
46
|
-
"node": ">=18 <=22",
|
|
47
|
-
"npm ": "10.x"
|
|
49
|
+
"node": ">=18.x <=22.x",
|
|
50
|
+
"npm ": ">=10.x <=11.x"
|
|
48
51
|
}
|
|
49
52
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.dto.js","sourceRoot":"","sources":["../../../src/domain/id.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,KAAK;IACjB,YACiB,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IACvB,CAAC;CACL;AAJD,sBAIC"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import { ISuperAgentRequestFactory, SignedRequestSender } from "@studyportals/mb-platform-http-requests";
|
|
3
2
|
import { CreateClientDto, UserDto } from "./domain/users";
|
|
3
|
+
import { IdDto } from "./domain/id.dto";
|
|
4
4
|
export declare class PrivateUserCampaignManagementAPIClient {
|
|
5
|
-
private readonly superAgentRequestFactory;
|
|
6
|
-
private readonly requestSender;
|
|
7
5
|
private readonly baseUrl;
|
|
8
|
-
constructor(
|
|
6
|
+
constructor(baseUrl: string);
|
|
9
7
|
getUserById(id: number): Promise<UserDto>;
|
|
10
8
|
getUserByEmail(email: string): Promise<UserDto>;
|
|
11
|
-
createClient(user: CreateClientDto): Promise<
|
|
12
|
-
private getRequest;
|
|
13
|
-
private createGetRequest;
|
|
14
|
-
private postRequest;
|
|
15
|
-
private createPostRequest;
|
|
16
|
-
private sendRequest;
|
|
9
|
+
createClient(user: CreateClientDto): Promise<IdDto>;
|
|
17
10
|
private buildBaseUrl;
|
|
11
|
+
private signedGetRequest;
|
|
12
|
+
private signedPostRequest;
|
|
18
13
|
}
|
|
@@ -12,53 +12,91 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.PrivateUserCampaignManagementAPIClient = void 0;
|
|
13
13
|
require("reflect-metadata");
|
|
14
14
|
const inversify_1 = require("inversify");
|
|
15
|
-
const
|
|
15
|
+
const signature_v4_1 = require("@smithy/signature-v4");
|
|
16
|
+
const credential_provider_node_1 = require("@aws-sdk/credential-provider-node");
|
|
17
|
+
const sha256_js_1 = require("@aws-crypto/sha256-js");
|
|
16
18
|
let PrivateUserCampaignManagementAPIClient = class PrivateUserCampaignManagementAPIClient {
|
|
17
|
-
constructor(
|
|
18
|
-
this.superAgentRequestFactory = superAgentRequestFactory;
|
|
19
|
-
this.requestSender = requestSender;
|
|
19
|
+
constructor(baseUrl) {
|
|
20
20
|
this.baseUrl = baseUrl;
|
|
21
21
|
}
|
|
22
22
|
async getUserById(id) {
|
|
23
|
-
const
|
|
24
|
-
return await this.
|
|
23
|
+
const url = this.buildBaseUrl(`private/users/get-user-by-id?id=${id}`);
|
|
24
|
+
return await this.signedGetRequest(url);
|
|
25
25
|
}
|
|
26
26
|
async getUserByEmail(email) {
|
|
27
|
-
const
|
|
28
|
-
return await this.
|
|
27
|
+
const url = this.buildBaseUrl(`private/users/get-user-by-email?email=${encodeURIComponent(email)}`);
|
|
28
|
+
return await this.signedGetRequest(url);
|
|
29
29
|
}
|
|
30
30
|
async createClient(user) {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
return Number(result.text);
|
|
31
|
+
const url = this.buildBaseUrl('private/users/create-client');
|
|
32
|
+
return await this.signedPostRequest(url, user);
|
|
34
33
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return await this.requestSender.sendAndExtractBody(request);
|
|
38
|
-
}
|
|
39
|
-
createGetRequest(relative = "") {
|
|
40
|
-
const url = this.buildBaseUrl(relative);
|
|
41
|
-
return this.superAgentRequestFactory.get(url);
|
|
42
|
-
}
|
|
43
|
-
async postRequest(relative = "", data) {
|
|
44
|
-
const request = this.createPostRequest(relative);
|
|
45
|
-
return await this.sendRequest(request, data);
|
|
46
|
-
}
|
|
47
|
-
createPostRequest(relative = "") {
|
|
48
|
-
const url = this.buildBaseUrl(relative);
|
|
49
|
-
return this.superAgentRequestFactory.post(url);
|
|
34
|
+
buildBaseUrl(relative) {
|
|
35
|
+
return new URL(`${this.baseUrl}/${relative}`);
|
|
50
36
|
}
|
|
51
|
-
async
|
|
52
|
-
|
|
53
|
-
|
|
37
|
+
async signedGetRequest(endpointUrl, headers = {}) {
|
|
38
|
+
const requestMethod = 'GET';
|
|
39
|
+
const requestHeaders = Object.assign({ 'Content-Type': 'application/json', 'Host': endpointUrl.hostname }, headers);
|
|
40
|
+
const request = {
|
|
41
|
+
method: requestMethod,
|
|
42
|
+
headers: requestHeaders,
|
|
43
|
+
protocol: endpointUrl.protocol,
|
|
44
|
+
hostname: endpointUrl.hostname,
|
|
45
|
+
path: endpointUrl.pathname,
|
|
46
|
+
query: Object.fromEntries(endpointUrl.searchParams.entries()),
|
|
47
|
+
};
|
|
48
|
+
const signer = new signature_v4_1.SignatureV4({
|
|
49
|
+
service: "execute-api",
|
|
50
|
+
region: process.env.region || process.env.REGION || "eu-central-1",
|
|
51
|
+
credentials: (0, credential_provider_node_1.defaultProvider)(),
|
|
52
|
+
sha256: sha256_js_1.Sha256
|
|
53
|
+
});
|
|
54
|
+
const signedRequest = await signer.sign(request);
|
|
55
|
+
const response = await fetch(endpointUrl, {
|
|
56
|
+
method: signedRequest.method,
|
|
57
|
+
headers: signedRequest.headers
|
|
58
|
+
});
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
const errorResponse = await response.text().catch(() => 'Unable to read response body');
|
|
61
|
+
throw new Error(`Request to ${endpointUrl.toString()} failed with status ${response.status} ${response.statusText}: ${errorResponse}`);
|
|
62
|
+
}
|
|
63
|
+
return await response.json();
|
|
54
64
|
}
|
|
55
|
-
|
|
56
|
-
|
|
65
|
+
async signedPostRequest(endpointUrl, payload, headers = {}) {
|
|
66
|
+
const requestMethod = 'POST';
|
|
67
|
+
const requestHeaders = Object.assign({ 'Content-Type': 'application/json', 'Host': endpointUrl.hostname }, headers);
|
|
68
|
+
const requestBody = payload ? JSON.stringify(payload) : {};
|
|
69
|
+
const request = {
|
|
70
|
+
method: requestMethod,
|
|
71
|
+
headers: requestHeaders,
|
|
72
|
+
body: requestBody,
|
|
73
|
+
protocol: endpointUrl.protocol,
|
|
74
|
+
hostname: endpointUrl.hostname,
|
|
75
|
+
path: endpointUrl.pathname,
|
|
76
|
+
query: Object.fromEntries(endpointUrl.searchParams.entries()),
|
|
77
|
+
};
|
|
78
|
+
const signer = new signature_v4_1.SignatureV4({
|
|
79
|
+
service: "execute-api",
|
|
80
|
+
region: process.env.region || process.env.REGION || "eu-central-1",
|
|
81
|
+
credentials: (0, credential_provider_node_1.defaultProvider)(),
|
|
82
|
+
sha256: sha256_js_1.Sha256
|
|
83
|
+
});
|
|
84
|
+
const signedRequest = await signer.sign(request);
|
|
85
|
+
const response = await fetch(endpointUrl, {
|
|
86
|
+
method: signedRequest.method,
|
|
87
|
+
headers: signedRequest.headers,
|
|
88
|
+
body: signedRequest.body
|
|
89
|
+
});
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
const errorResponse = await response.text().catch(() => 'Unable to read response body');
|
|
92
|
+
throw new Error(`Request to ${endpointUrl.toString()} failed with status ${response.status} ${response.statusText}: ${errorResponse}`);
|
|
93
|
+
}
|
|
94
|
+
return await response.json();
|
|
57
95
|
}
|
|
58
96
|
};
|
|
59
97
|
exports.PrivateUserCampaignManagementAPIClient = PrivateUserCampaignManagementAPIClient;
|
|
60
98
|
exports.PrivateUserCampaignManagementAPIClient = PrivateUserCampaignManagementAPIClient = __decorate([
|
|
61
99
|
(0, inversify_1.injectable)(),
|
|
62
|
-
__metadata("design:paramtypes", [
|
|
100
|
+
__metadata("design:paramtypes", [String])
|
|
63
101
|
], PrivateUserCampaignManagementAPIClient);
|
|
64
102
|
//# sourceMappingURL=private-user-campaign-management-api.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private-user-campaign-management-api.client.js","sourceRoot":"","sources":["../../src/private-user-campaign-management-api.client.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4BAA0B;
|
|
1
|
+
{"version":3,"file":"private-user-campaign-management-api.client.js","sourceRoot":"","sources":["../../src/private-user-campaign-management-api.client.ts"],"names":[],"mappings":"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"}
|