@beam3_dev/api_module 0.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.
@@ -0,0 +1,443 @@
1
+ import { _httpCallAuthenticated } from "../../main/3dexperience_api";
2
+ import { _3DSwym_get_version } from "../3dswym_api";
3
+
4
+ /**
5
+ * @description La fonction `_3dSwim_getAllCommunities` récupère une liste de communautés à partir d'une plateforme
6
+ * 3D Swim en utilisant les informations d'identification fournies.
7
+ * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier
8
+ * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».
9
+ * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, 3DCompass...)
10
+ * @param {Number} credentials.limit - Le paramètre `limit` est un nombre entier qui indique le nombre maximum de communautés à recevoir. Par défaut, il est de 10, mais vous pouvez le changer jusqu'à 128, au delà on change de page.
11
+ * @param {Number} credentials.page - Le paramètre `page` est un nombre entier qui indique la page courante. Par défaut, il est à 1.
12
+ * @param {Function} [onDone] - Une fonction de rappel qui sera appelée une fois l'opération terminée. Il prend la
13
+ * liste des communautés comme paramètre.
14
+ * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une
15
+ * erreur lors de l'exécution de la fonction `_3dSwim_getAllCommunities`. Il vous permet de gérer et de
16
+ * répondre à toute erreur qui se produit.
17
+ */
18
+ export function _3DSwim_getAllCommunities(
19
+ credentials,
20
+ onDone = undefined,
21
+ onError = undefined,
22
+ ) {
23
+ const URL = {
24
+ base: credentials.space,
25
+ uri: "/api/community/listmycommunities",
26
+ limit: `/limit/${credentials.limit ? credentials.limit : 128}`,
27
+ page: `/page/${credentials.page ? credentials.page : "1"}`,
28
+ };
29
+
30
+ const url = `${URL.base}${URL.uri}${URL.limit}${URL.page}`;
31
+ const communautes = [];
32
+ _3DSwym_get_version(credentials, (token) => {
33
+ _httpCallAuthenticated(url, {
34
+ method: "GET",
35
+ headers: {
36
+ "X-DS-SWYM-CSRFTOKEN": token.result.ServerToken,
37
+ },
38
+ onComplete(response, headers, xhr) {
39
+ const info = JSON.parse(response);
40
+ const _communitiesInfo = info.result;
41
+ let count = 0;
42
+
43
+ _communitiesInfo.forEach((commu) => {
44
+ const _communaute = {
45
+ description: commu.description,
46
+ id: commu.id,
47
+ title: commu.title,
48
+ owner: commu.owner,
49
+ role: commu.role,
50
+ access: commu.access,
51
+ };
52
+ _3DSwim_getMembersCommunity(
53
+ credentials,
54
+ commu.id,
55
+ (data) => {
56
+ count++;
57
+ _communaute["members"] = data;
58
+ communautes.push(_communaute);
59
+ if (count === _communitiesInfo.length && onDone) {
60
+ onDone(communautes);
61
+ }
62
+ },
63
+ (err) => onError(err),
64
+ );
65
+ });
66
+ },
67
+ onFailure(response, headers) {
68
+ const info = response;
69
+ info["status"] = headers.status;
70
+ info["response"] = headers.errormsg;
71
+ if (onError) onError(info);
72
+ },
73
+ });
74
+ });
75
+ }
76
+
77
+ /**
78
+ * @description La fonction `_3DSwim_getMembersCommunity` récupère une liste des membres d'une communauté en utilisant les informations d'identification et l'ID de communauté fournis.
79
+ *
80
+ * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier
81
+ * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».
82
+ * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, 3DCompass...)
83
+ * @param {Number} credentials.limit - Le paramètre `limit` est un nombre entier qui indique le nombre maximum de communautés à recevoir. Par défaut, il est de 50, mais vous pouvez le changer jusqu'à 128, au delà on change de page.
84
+ * @param {Number} credentials.page - Le paramètre `page` est un nombre entier qui indique la page courante. Par défaut, il est à 1.
85
+ * @param {String} idCommu - L'identifiant de la communauté dont vous souhaitez récupérer les membres. (ex: "YXdA5x4DSUKtlAi2wmnyTA")
86
+ * @param {Function} onDone - Une fonction de rappel qui sera appelée lorsque l'appel d'API réussit et renvoie les
87
+ * données de réponse. Les données de réponse seront transmises en argument à cette fonction.
88
+ * @param {Function} onError - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une
89
+ * erreur lors de l'exécution de la fonction `_3DSwim_getMembersCommunity`. Il est utilisé pour gérer
90
+ * toutes les erreurs qui se produisent et fournir une gestion des erreurs ou des messages d'erreur
91
+ * appropriés à l'appelant de la fonction.
92
+ */
93
+ export function _3DSwim_getMembersCommunity(
94
+ credentials,
95
+ idCommu,
96
+ onDone,
97
+ onError,
98
+ ) {
99
+ const URL = `${credentials.space}/api/community/listmembers`;
100
+
101
+ const datas = {
102
+ params: {
103
+ page: credentials.page ? credentials.page : 1,
104
+ limit: credentials.limit ? credentials.limit : 50,
105
+ community_id: idCommu,
106
+ },
107
+ };
108
+ _3DSwym_get_version(credentials, (token) => {
109
+ _httpCallAuthenticated(URL, {
110
+ method: "POST",
111
+ headers: {
112
+ "Content-type": "application/json;charset=UTF-8",
113
+ Accept: "application/json",
114
+ "X-DS-SWYM-CSRFTOKEN": token.result.ServerToken,
115
+ },
116
+ data: JSON.stringify(datas),
117
+ type: "json",
118
+ onComplete(response, headers, xhr) {
119
+ const info = response;
120
+ if (onDone) onDone(info);
121
+ },
122
+ onFailure(response, headers) {
123
+ const info = response;
124
+ info["status"] = headers.status;
125
+ info["response"] = headers.errormsg;
126
+ if (onError) onError(info);
127
+ },
128
+ });
129
+ });
130
+ }
131
+
132
+ /**
133
+ * @description La fonction `_3DSwym_getIdeaStatusMaturity` récupère le statut et la maturité d'une idée d'une
134
+ * communauté 3DExperience à l'aide des informations d'identification fournies.
135
+ * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier
136
+ * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».
137
+ * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, 3DCompass...)
138
+ * @param {String} credentials.commu_id - L'ID de communauté 3DExperience (ex:"YXdA5x4DSUKtlAi2wmnyTA")
139
+ * @param {Function} [onDone] - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque la
140
+ * requête API sera terminée avec succès. Il prend un argument, « info », qui correspond aux données de
141
+ * réponse de l'API.
142
+ * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une
143
+ * erreur lors de l'exécution de la fonction `_3DSwym_getIdeaStatusMaturity`. Il vous permet de gérer
144
+ * et de traiter l'erreur de manière personnalisée.
145
+ */
146
+ export function _3DSwym_getIdeaStatusMaturity(
147
+ credentials,
148
+ onDone = undefined,
149
+ onError = undefined,
150
+ ) {
151
+ const commuID = "YXdA5x4DSUKtlAi2wmnyTA";
152
+ if (!credentials.commu_id) credentials.commu_id = commuID;
153
+ const URL = `${credentials.space}/api/v2/communities/${credentials.commu_id}/ideas/statuses`;
154
+ _3DSwym_get_version(credentials, (token) => {
155
+ _httpCallAuthenticated(URL, {
156
+ method: "GET",
157
+ headers: {
158
+ "Content-type": "application/json;charset=UTF-8",
159
+ Accept: "application/json",
160
+ "X-DS-SWYM-CSRFTOKEN": token.result.ServerToken,
161
+ },
162
+
163
+ onComplete(response) {
164
+ const info = JSON.parse(response);
165
+
166
+ if (onDone) onDone(info);
167
+ },
168
+ onFailure(response, headers) {
169
+ const info = response;
170
+ info["status"] = headers.status;
171
+ info["response"] = headers.errormsg;
172
+ if (onError) onError(info);
173
+ },
174
+ });
175
+ });
176
+ }
177
+
178
+ // TEST
179
+ const contentMSG = {
180
+ receipt: ["c00005701637"], // Liste des personnes à qui envoyer le message
181
+ msg: "TESTS Beam ³ DEV, Happy new year ! ヾ(⌐■_■)ノ♪", // Message à envoyer
182
+ };
183
+
184
+ // CREATION DE MESSAGES DIRECT OU INSTANTANÉ
185
+
186
+ /**
187
+ * @description La fonction `_3DSwym_buildDirectMessage` permet d'envoyer un message direct à un ou plusieurs utilisateurs dans un espace plateforme 3DExperience.
188
+ *
189
+ * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier
190
+ * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».
191
+ * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, 3DCompass...)
192
+ * @param {Object} [credentials.currentUser] - Le paramètre `currentUser` est un qui contient les informations de l'utilisateur qui envoie le message(appeler depuis la fonction `_3DSwym_get_currentuser`).
193
+ * @param {string} [credentials.currentUser.login] - Le paramètre `login` est l'identifiant d'envois du message
194
+ * @param {string} [credentials.currentUser.first_name] - Le paramètre `first_name` est l'identifiant d'envois du message
195
+ * @param {string} [credentials.currentUser.last_name] - Le paramètre `last_name` est l'identifiant d'envois du message.
196
+ *
197
+ * @param {Object} [datas] - Le paramètre `datas` est un objet qui contient les données du messages.
198
+ * @param {String} [datas.msg] - Le paramètre `msg` est une chaîne de caractères qui contient le message à envoyer.
199
+ *
200
+ * @param {Array} [datas.receipt] - La liste des utilisateurs à qui envoyer le message (login). La liste des personnes accessible est générer par la fonction _3DSwym_getFamiliarPeople. (ex: ["bem3_yan.coquoz","bem_bob_Dylan"])
201
+ *
202
+ * @param {Function} [onDone] - Une fonction de rappel qui sera appelée lorsque le message direct sera envoyé avec
203
+ * succès. Il prend un argument, qui est un objet contenant des informations sur la réponse du serveur.
204
+ * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une
205
+ * erreur lors de l'exécution de la fonction `_3DSwym_buildDirectMessage`. Il est facultatif et peut
206
+ * être indéfini.
207
+ */
208
+ export function _3DSwym_buildDirectMessage(
209
+ credentials,
210
+ datas,
211
+ onDone = undefined,
212
+ onError = undefined,
213
+ ) {
214
+ const { listAllContacts, currentUser } = credentials;
215
+ console.log("__listAllContacts", listAllContacts.hits);
216
+ const _URL = `${credentials.space}/api/directmessages`;
217
+
218
+ const _data = {
219
+ users: [currentUser.login].concat(datas.receipt),
220
+ };
221
+
222
+ const MSGData = {
223
+ id_msg: "",
224
+ senderId: credentials.currentUser.login,
225
+ senderName: `${credentials.currentUser.first_name} ${credentials.currentUser.last_name}`,
226
+ msg: formatedMessage(datas.msg),
227
+ };
228
+ let otherCommunity = false;
229
+ _3DSwym_findCommunityToInstantMSG(
230
+ _data.users,
231
+ (rep) => {
232
+ if (rep !== undefined) {
233
+ MSGData["id_msg"] = rep.id;
234
+ otherCommunity = true;
235
+ _3DSwym_sendMessageData(credentials, MSGData);
236
+ }
237
+ },
238
+ (err) => {
239
+ otherCommunity = false;
240
+ console.log("_3dSwym_findCommunityToInstantMSG callback", err);
241
+ if (onError) onError(err);
242
+ MSGData["id_msg"] = "";
243
+ },
244
+ );
245
+
246
+ if (otherCommunity === false) {
247
+ setTimeout(() => {
248
+ if (otherCommunity === false) {
249
+ _3DSwym_get_version(credentials, (token) => {
250
+ _httpCallAuthenticated(_URL, {
251
+ method: "POST",
252
+ headers: {
253
+ "Content-Type": "application/json",
254
+ Accept: "application/json",
255
+ "X-DS-SWYM-CSRFTOKEN": token.result.ServerToken,
256
+ },
257
+ data: JSON.stringify(_data),
258
+ type: "json",
259
+ onComplete(response, headers, xhr) {
260
+ const info = response;
261
+ info["reponse"] = JSON.parse(xhr.response);
262
+ info["status"] = xhr.status;
263
+ if (onDone) onDone(info);
264
+ MSGData["id_msg"] = info.result.id;
265
+ _3DSwym_sendMessageData(credentials, MSGData);
266
+ },
267
+ onFailure(response, headers, xhr) {
268
+ const info = response;
269
+ info["msg"] = headers.errormsg;
270
+ info["status"] = headers.status;
271
+
272
+ if (onError) onError(info);
273
+ },
274
+ });
275
+ });
276
+ }
277
+ }, 500);
278
+ }
279
+ }
280
+
281
+ /**
282
+ * @description La fonction `_3DSwym_findCommunityToInstantMSG` est utilisée pour rechercher une communauté dans une
283
+ * plateforme 3DExperience pour la messagerie instantanée en fonction des informations d'identification
284
+ * et des données fournies.
285
+ * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier
286
+ * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».
287
+ * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, 3DCompass...)
288
+ * @param {Array} datas - Le paramètre `datas` est un tableau qui contient les données à utiliser pour trouver une communauté pour envoyer un message instantané.
289
+ * @param {Function} onDone - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque
290
+ * l'opération sera terminée avec succès. Il faut un argument, qui est le résultat de l'opération.
291
+ * @param {Function} onError - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une
292
+ * erreur lors de l'exécution de la fonction `_3DSwym_findCommunityToInstantMSG`. Il est facultatif et
293
+ * peut être omis s’il n’est pas nécessaire.
294
+ */
295
+ export function _3DSwym_findCommunityToInstantMSG(
296
+ credentials,
297
+ datas,
298
+ onDone,
299
+ onError,
300
+ ) {
301
+ const URL = `${credentials.space}/api/directmessages/lite?with_favorites=false`;
302
+ _3DSwym_get_version(credentials, (token) => {
303
+ _httpCallAuthenticated(URL, {
304
+ method: "GET",
305
+ headers: {
306
+ Accept: "application/json,text/javascript,*/*",
307
+ "X-DS-SWYM-CSRFTOKEN": token.result.ServerToken,
308
+ },
309
+ onComplete(response) {
310
+ const info = JSON.parse(response);
311
+ const infoSortedByLengths = [];
312
+ info.result.forEach((com) => {
313
+ com.users = com.users.sort((a, b) => {
314
+ return a.login.localeCompare(b.login);
315
+ });
316
+ if (com.users.length === datas.length) {
317
+ infoSortedByLengths.push(com);
318
+ }
319
+ });
320
+ const sortedDatas = datas.sort();
321
+
322
+ const _datas = infoSortedByLengths.find((com) => {
323
+ const logins = [];
324
+ com.users.forEach((user) => {
325
+ logins.push(user.login);
326
+ });
327
+ return JSON.stringify(logins) === JSON.stringify(sortedDatas);
328
+ });
329
+
330
+ if (onDone && _datas !== undefined) {
331
+ onDone(_datas);
332
+ } else if (onError || _datas === undefined) {
333
+ onError(_datas);
334
+ }
335
+ },
336
+ onFailure(response) {
337
+ const info = response;
338
+ info["msg"] = headers.errormsg;
339
+ info["errCode"] = headers.errorcode;
340
+ console.log("❌ sendDirectMessageLite => ", info);
341
+ if (onError) onError(info);
342
+ },
343
+ });
344
+ });
345
+ }
346
+
347
+ /**
348
+ * @description La fonction `_3DSwym_sendMessageData` envoie un message direct avec les informations
349
+ * d'identification et le contenu donnés, et appelle les rappels `onDone` ou `onError` en fonction du
350
+ * succès ou de l'échec de la requête.
351
+ * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier
352
+ * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».
353
+ * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, 3DCompass...)
354
+ * @param content - Le paramètre `content` est un objet qui contient les propriétés suivantes :
355
+ * @param {String} content.id_msg - L'identifiant du message à envoyer.
356
+ * @param {String} content.senderId - L'identifiant de l'utilisateur qui envoie le message.
357
+ * @param {String} content.senderName - Le nom de l'utilisateur qui envoie le message.
358
+ * @param {Function} [onDone] - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque l'envoi
359
+ * du message sera terminé avec succès. Il prend un argument, qui est un objet contenant des
360
+ * informations sur la réponse du serveur.
361
+ * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une
362
+ * erreur lors de l'exécution de la fonction `_3DSwym_sendMessageData`. Il vous permet de gérer et de
363
+ * traiter les informations d'erreur.
364
+ */
365
+ export function _3DSwym_sendMessageData(
366
+ credentials,
367
+ content,
368
+ onDone = undefined,
369
+ onError = undefined,
370
+ ) {
371
+ const URL = {
372
+ base: credentials.space,
373
+ uri: "/api/community",
374
+ id_msg: `${content.id_msg}`,
375
+ endUri: "/instantmessages",
376
+ };
377
+
378
+ const url = `${URL.base}${URL.uri}/${URL.id_msg}${URL.endUri}`;
379
+
380
+ const datas = {
381
+ author: { login: content.senderId, displayName: content.senderName },
382
+ accessState: null,
383
+ commentUri: null,
384
+ comments: null,
385
+ endorsements: null,
386
+ moderationState: null,
387
+ parentCommentUri: null,
388
+ richMessage: content.msg,
389
+ };
390
+ console.log("_3dSwym_sendDirectMessageData url ", url);
391
+ _3DSwym_get_version(credentials, (token) => {
392
+ _httpCallAuthenticated(url, {
393
+ method: "POST",
394
+ headers: {
395
+ "Content-Type": "application/json",
396
+ Accept: "application/json",
397
+ "X-DS-SWYM-CSRFTOKEN": token.result.ServerToken,
398
+ },
399
+ data: JSON.stringify(datas),
400
+ type: "json",
401
+ onComplete(response, headers, xhr) {
402
+ const info = response;
403
+ info["status"] = xhr.status;
404
+ info["response"] = JSON.parse(xhr.response);
405
+ console.log("✅ _3dSwym_sendDirectMessageData => ", info);
406
+ if (onDone) onDone(info);
407
+ },
408
+ onFailure(response, headers) {
409
+ const info = response;
410
+ info["msg"] = headers.errormsg;
411
+ info["errCode"] = headers.errorcode;
412
+ console.log("❌ sendDirectMessage => ", info);
413
+ if (onError) onError(info);
414
+ },
415
+ });
416
+ });
417
+ }
418
+
419
+ /**
420
+ * @description La fonction `formatedMessage` renvoie un message formaté avec la date et l'heure actuelles.
421
+ * @param {String} message - Le paramètre `message` est une chaîne qui représente le contenu du message que vous souhaitez envoyer.
422
+ *
423
+ * @returns un message formaté avec la date et l'heure actuelles. Le message est enveloppé dans une balise de paragraphe, suivie d'un saut de ligne et d'une règle horizontale.
424
+ * En dessous, il comprend une phrase indiquant quand le message a été envoyé, y compris la date et l'heure.
425
+ *
426
+ */
427
+ function formatedMessage(message) {
428
+ const _dates = new Date().toLocaleDateString();
429
+ const time = new Date().toLocaleTimeString();
430
+ return `<p>${message} </p>
431
+ <br/>
432
+ <hr/>
433
+ <p><u>envoyer :</u>Le <b>${_dates} à ${time}</b></p>`;
434
+ }
435
+
436
+ export default {
437
+ _3DSwim_getAllCommunities,
438
+ _3DSwim_getMembersCommunity,
439
+ _3DSwym_getIdeaStatusMaturity,
440
+ _3DSwym_buildDirectMessage,
441
+ _3DSwym_findCommunityToInstantMSG,
442
+ _3DSwym_sendMessageData,
443
+ };