@cubicweb/client 3.0.0 → 3.1.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.
- package/lib/api/Api.d.ts +3 -2
- package/lib/api/Api.d.ts.map +1 -1
- package/lib/api/Api.js +26 -12
- package/lib/api/Api.js.map +1 -1
- package/lib/api/Client.d.ts +2 -1
- package/lib/api/Client.d.ts.map +1 -1
- package/lib/api/Client.js +3 -2
- package/lib/api/Client.js.map +1 -1
- package/package.json +1 -1
- package/src/api/Api.ts +33 -15
- package/src/api/Client.ts +7 -2
package/lib/api/Api.d.ts
CHANGED
|
@@ -96,9 +96,10 @@ export default class Api {
|
|
|
96
96
|
*
|
|
97
97
|
* @param login The user login
|
|
98
98
|
* @param password The user password
|
|
99
|
+
* @param getError A function to get the potential error
|
|
99
100
|
* @returns A promise returning true if the login was successful, false otherwise
|
|
100
101
|
*/
|
|
101
|
-
login(login: string, password: string): Promise<boolean>;
|
|
102
|
+
login(login: string, password: string, getError?: (error: unknown) => void): Promise<boolean>;
|
|
102
103
|
/**
|
|
103
104
|
* Logs out the current user. Will invalidate any authentication cookie active.
|
|
104
105
|
*
|
|
@@ -150,7 +151,7 @@ export default class Api {
|
|
|
150
151
|
*
|
|
151
152
|
* @param input The API route to use
|
|
152
153
|
* @param init Additional request parameters
|
|
153
|
-
* @returns A promise with the
|
|
154
|
+
* @returns A promise with the response
|
|
154
155
|
*/
|
|
155
156
|
private fetchApi;
|
|
156
157
|
}
|
package/lib/api/Api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAEL,iBAAiB,EAClB,MAAM,oCAAoC,CAAC;AAE5C,UAAU,UAAU;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CACjC,MAAM,EACN,kBAAkB,GAAG,eAAe,GAAG,SAAS,CACjD,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,CAAC;AAEb;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAgB;IAEvC;;;;;;;;;OASG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAW/C,IAAI,MAAM,WAET;IAED,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAMlC
|
|
1
|
+
{"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAEL,iBAAiB,EAClB,MAAM,oCAAoC,CAAC;AAE5C,UAAU,UAAU;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CACjC,MAAM,EACN,kBAAkB,GAAG,eAAe,GAAG,SAAS,CACjD,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,CAAC;AAEb;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAgB;IAEvC;;;;;;;;;OASG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAW/C,IAAI,MAAM,WAET;IAED,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAMlC;;;;;;;OAOG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAClC,OAAO,CAAC,OAAO,CAAC;IAsBnB;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAMzC;;;;;;OAMG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3D;;;;;;;;OAQG;IACG,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAa/D,OAAO,CAAC,oBAAoB;YAOd,oBAAoB;YAqBpB,eAAe;IAW7B,OAAO,CAAC,gBAAgB;IAiBxB;;;;;;;;OAQG;YACW,eAAe;IAc7B;;;;;;;;OAQG;YACW,QAAQ;CAuDvB"}
|
package/lib/api/Api.js
CHANGED
|
@@ -60,9 +60,10 @@ export default class Api {
|
|
|
60
60
|
*
|
|
61
61
|
* @param login The user login
|
|
62
62
|
* @param password The user password
|
|
63
|
+
* @param getError A function to get the potential error
|
|
63
64
|
* @returns A promise returning true if the login was successful, false otherwise
|
|
64
65
|
*/
|
|
65
|
-
async login(login, password) {
|
|
66
|
+
async login(login, password, getError) {
|
|
66
67
|
try {
|
|
67
68
|
await this.fetchApi(this._loginApiUrl, {
|
|
68
69
|
method: "POST",
|
|
@@ -73,7 +74,15 @@ export default class Api {
|
|
|
73
74
|
});
|
|
74
75
|
return true;
|
|
75
76
|
}
|
|
76
|
-
catch (
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (typeof getError === "function") {
|
|
79
|
+
try {
|
|
80
|
+
getError(error);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// a throwing error handler must not turn a failed login into a rejection
|
|
84
|
+
}
|
|
85
|
+
}
|
|
77
86
|
return false;
|
|
78
87
|
}
|
|
79
88
|
}
|
|
@@ -109,9 +118,19 @@ export default class Api {
|
|
|
109
118
|
eid: eid.toString(),
|
|
110
119
|
attribute,
|
|
111
120
|
});
|
|
112
|
-
|
|
121
|
+
const response = await this.fetchApi(`${this._binaryApiUrl}?${params}`, {
|
|
113
122
|
method: "GET",
|
|
114
123
|
});
|
|
124
|
+
const blob = await response?.blob();
|
|
125
|
+
if (blob == null) {
|
|
126
|
+
const error = {
|
|
127
|
+
status: 500,
|
|
128
|
+
title: "Unexpected null response",
|
|
129
|
+
message: `No blob found for ${params}`,
|
|
130
|
+
};
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
return blob;
|
|
115
134
|
}
|
|
116
135
|
/**
|
|
117
136
|
* Executes the given transaction.
|
|
@@ -186,7 +205,8 @@ export default class Api {
|
|
|
186
205
|
* @returns A promise with the non-null fetched result
|
|
187
206
|
*/
|
|
188
207
|
async nonNullFetchApi(url, init) {
|
|
189
|
-
const
|
|
208
|
+
const response = await this.fetchApi(url, init);
|
|
209
|
+
const result = await response?.json();
|
|
190
210
|
if (result == null) {
|
|
191
211
|
const error = {
|
|
192
212
|
status: 500,
|
|
@@ -204,7 +224,7 @@ export default class Api {
|
|
|
204
224
|
*
|
|
205
225
|
* @param input The API route to use
|
|
206
226
|
* @param init Additional request parameters
|
|
207
|
-
* @returns A promise with the
|
|
227
|
+
* @returns A promise with the response
|
|
208
228
|
*/
|
|
209
229
|
async fetchApi(url, init) {
|
|
210
230
|
const headers = new Headers(init.headers);
|
|
@@ -237,13 +257,7 @@ export default class Api {
|
|
|
237
257
|
if (status === 204) {
|
|
238
258
|
return null;
|
|
239
259
|
}
|
|
240
|
-
|
|
241
|
-
return await response.json();
|
|
242
|
-
}
|
|
243
|
-
catch (e) {
|
|
244
|
-
console.error(e);
|
|
245
|
-
return null;
|
|
246
|
-
}
|
|
260
|
+
return response;
|
|
247
261
|
}
|
|
248
262
|
else {
|
|
249
263
|
let json;
|
package/lib/api/Api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAI/E,OAAO,EAEL,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AA6D5C;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,GAAG;IACd,OAAO,CAAS;IAChB,QAAQ,GAAG,IAAI,CAAC;IAChB,UAAU,CAAS;IACnB,aAAa,CAAS;IACtB,YAAY,CAAS;IACrB,aAAa,CAAS;IACtB,kBAAkB,CAAS;IAC3B,aAAa,CAAS;IACtB,cAAc,CAAiB;IAEvC;;;;;;;;;OASG;IACH,YAAY,MAAc,EAAE,OAAmB;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,WAAW,CAAC,KAAa;QAC/B,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,eAAe,CAAY,IAAI,CAAC,aAAa,EAAE;YACzD,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"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"}
|
package/lib/api/Client.d.ts
CHANGED
|
@@ -45,9 +45,10 @@ export default class Client {
|
|
|
45
45
|
*
|
|
46
46
|
* @param login The user login
|
|
47
47
|
* @param password The user password
|
|
48
|
+
* @param getError A function to get the potential error
|
|
48
49
|
* @returns A promise returning true if the login was successful, false otherwise
|
|
49
50
|
*/
|
|
50
|
-
login(login: string, password: string): Promise<boolean>;
|
|
51
|
+
login(login: string, password: string, getError?: (error: unknown) => void): Promise<boolean>;
|
|
51
52
|
/**
|
|
52
53
|
* Logs out the current user. Will invalidate any authentication cookie active.
|
|
53
54
|
*
|
package/lib/api/Client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,GAAG,CAAM;IACjB;;;;;;OAMG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa;IAInD,IAAI,MAAM,WAET;IAED;;;;;;;;;OASG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ3E;;;;OAIG;IACG,MAAM;IAKZ
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,GAAG,CAAM;IACjB;;;;;;OAMG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa;IAInD,IAAI,MAAM,WAET;IAED;;;;;;;;;OASG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ3E;;;;OAIG;IACG,MAAM;IAKZ;;;;;;;OAOG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAClC,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACG,MAAM;IAIZ;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAIzC;;;;;;;;OAQG;IACG,kBAAkB,CACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAI7B;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAG/C"}
|
package/lib/api/Client.js
CHANGED
|
@@ -53,10 +53,11 @@ export default class Client {
|
|
|
53
53
|
*
|
|
54
54
|
* @param login The user login
|
|
55
55
|
* @param password The user password
|
|
56
|
+
* @param getError A function to get the potential error
|
|
56
57
|
* @returns A promise returning true if the login was successful, false otherwise
|
|
57
58
|
*/
|
|
58
|
-
async login(login, password) {
|
|
59
|
-
return await this.api.login(login, password);
|
|
59
|
+
async login(login, password, getError) {
|
|
60
|
+
return await this.api.login(login, password, getError);
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
63
|
* Logs out the current user. Will invalidate any authentication cookie active.
|
package/lib/api/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,GAAoC,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAO3D;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACjB,GAAG,CAAM;IACjB;;;;;;OAMG;IACH,YAAY,MAAc,EAAE,OAAuB;QACjD,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,SAAyB,EAAE;QACpD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,GAAoC,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAO3D;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACjB,GAAG,CAAM;IACjB;;;;;;OAMG;IACH,YAAY,MAAc,EAAE,OAAuB;QACjD,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,SAAyB,EAAE;QACpD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,KAAa,EACb,QAAgB,EAChB,QAAmC;QAEnC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAwB;QAExB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,SAAiB;QAC5C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
package/package.json
CHANGED
package/src/api/Api.ts
CHANGED
|
@@ -133,11 +133,16 @@ export default class Api {
|
|
|
133
133
|
*
|
|
134
134
|
* @param login The user login
|
|
135
135
|
* @param password The user password
|
|
136
|
+
* @param getError A function to get the potential error
|
|
136
137
|
* @returns A promise returning true if the login was successful, false otherwise
|
|
137
138
|
*/
|
|
138
|
-
async login(
|
|
139
|
+
async login(
|
|
140
|
+
login: string,
|
|
141
|
+
password: string,
|
|
142
|
+
getError?: (error: unknown) => void
|
|
143
|
+
): Promise<boolean> {
|
|
139
144
|
try {
|
|
140
|
-
await this.fetchApi
|
|
145
|
+
await this.fetchApi(this._loginApiUrl, {
|
|
141
146
|
method: "POST",
|
|
142
147
|
body: JSON.stringify({
|
|
143
148
|
login,
|
|
@@ -145,7 +150,14 @@ export default class Api {
|
|
|
145
150
|
}),
|
|
146
151
|
});
|
|
147
152
|
return true;
|
|
148
|
-
} catch (
|
|
153
|
+
} catch (error) {
|
|
154
|
+
if (typeof getError === "function") {
|
|
155
|
+
try {
|
|
156
|
+
getError(error);
|
|
157
|
+
} catch {
|
|
158
|
+
// a throwing error handler must not turn a failed login into a rejection
|
|
159
|
+
}
|
|
160
|
+
}
|
|
149
161
|
return false;
|
|
150
162
|
}
|
|
151
163
|
}
|
|
@@ -156,7 +168,7 @@ export default class Api {
|
|
|
156
168
|
* @returns A promise which will resolve when the user is properly logged out
|
|
157
169
|
*/
|
|
158
170
|
async logout(): Promise<void> {
|
|
159
|
-
await this.fetchApi
|
|
171
|
+
await this.fetchApi(this._logoutApiUrl, {
|
|
160
172
|
method: "POST",
|
|
161
173
|
});
|
|
162
174
|
}
|
|
@@ -184,9 +196,19 @@ export default class Api {
|
|
|
184
196
|
eid: eid.toString(),
|
|
185
197
|
attribute,
|
|
186
198
|
});
|
|
187
|
-
|
|
199
|
+
const response = await this.fetchApi(`${this._binaryApiUrl}?${params}`, {
|
|
188
200
|
method: "GET",
|
|
189
201
|
});
|
|
202
|
+
const blob = await response?.blob();
|
|
203
|
+
if (blob == null) {
|
|
204
|
+
const error: ApiErrorResponse = {
|
|
205
|
+
status: 500,
|
|
206
|
+
title: "Unexpected null response",
|
|
207
|
+
message: `No blob found for ${params}`,
|
|
208
|
+
};
|
|
209
|
+
throw error;
|
|
210
|
+
}
|
|
211
|
+
return blob;
|
|
190
212
|
}
|
|
191
213
|
|
|
192
214
|
/**
|
|
@@ -277,7 +299,8 @@ export default class Api {
|
|
|
277
299
|
* @returns A promise with the non-null fetched result
|
|
278
300
|
*/
|
|
279
301
|
private async nonNullFetchApi<R = unknown>(url: string, init: RequestInit) {
|
|
280
|
-
const
|
|
302
|
+
const response = await this.fetchApi(url, init);
|
|
303
|
+
const result: R = await response?.json();
|
|
281
304
|
if (result == null) {
|
|
282
305
|
const error: ApiErrorResponse = {
|
|
283
306
|
status: 500,
|
|
@@ -296,12 +319,12 @@ export default class Api {
|
|
|
296
319
|
*
|
|
297
320
|
* @param input The API route to use
|
|
298
321
|
* @param init Additional request parameters
|
|
299
|
-
* @returns A promise with the
|
|
322
|
+
* @returns A promise with the response
|
|
300
323
|
*/
|
|
301
|
-
private async fetchApi
|
|
324
|
+
private async fetchApi(
|
|
302
325
|
url: string,
|
|
303
326
|
init: RequestInit
|
|
304
|
-
): Promise<
|
|
327
|
+
): Promise<Response | null> {
|
|
305
328
|
const headers = new Headers(init.headers);
|
|
306
329
|
|
|
307
330
|
// Add custom header used as CSRF protection
|
|
@@ -341,12 +364,7 @@ export default class Api {
|
|
|
341
364
|
if (status === 204) {
|
|
342
365
|
return null;
|
|
343
366
|
}
|
|
344
|
-
|
|
345
|
-
return await response.json();
|
|
346
|
-
} catch (e) {
|
|
347
|
-
console.error(e);
|
|
348
|
-
return null;
|
|
349
|
-
}
|
|
367
|
+
return response;
|
|
350
368
|
} else {
|
|
351
369
|
let json;
|
|
352
370
|
try {
|
package/src/api/Client.ts
CHANGED
|
@@ -65,10 +65,15 @@ export default class Client {
|
|
|
65
65
|
*
|
|
66
66
|
* @param login The user login
|
|
67
67
|
* @param password The user password
|
|
68
|
+
* @param getError A function to get the potential error
|
|
68
69
|
* @returns A promise returning true if the login was successful, false otherwise
|
|
69
70
|
*/
|
|
70
|
-
async login(
|
|
71
|
-
|
|
71
|
+
async login(
|
|
72
|
+
login: string,
|
|
73
|
+
password: string,
|
|
74
|
+
getError?: (error: unknown) => void
|
|
75
|
+
): Promise<boolean> {
|
|
76
|
+
return await this.api.login(login, password, getError);
|
|
72
77
|
}
|
|
73
78
|
|
|
74
79
|
/**
|