@xmobitea/gn-server 2.6.2 → 2.6.4
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/dist/GN-app-api/service/EventCallbackService.d.ts +18 -0
- package/dist/GN-app-api/service/IEventCallbackService.d.ts +6 -0
- package/dist/GN-startup/cloudScript/eventCallbackCloudScriptData.json +5 -0
- package/dist/GN-startup/cloudScript/templateEventCallback.ts +401 -307
- package/dist/index.js +264 -5
- package/package.json +1 -1
|
@@ -136,14 +136,14 @@ import {
|
|
|
136
136
|
GroupStatus,
|
|
137
137
|
GNDebug,
|
|
138
138
|
ItemType,
|
|
139
|
-
|
|
139
|
+
StoreItemType,
|
|
140
140
|
LogType,
|
|
141
141
|
GNSupport,
|
|
142
142
|
PostType,
|
|
143
143
|
GetAuthInfoResponse,
|
|
144
144
|
PushPlatformType,
|
|
145
145
|
StoreReceiveType,
|
|
146
|
-
|
|
146
|
+
GNUtils,
|
|
147
147
|
} from "@xmobitea/gn-typescript-client";
|
|
148
148
|
|
|
149
149
|
import * as mongodb from "mongodb";
|
|
@@ -176,35 +176,35 @@ class CloudScriptAdmin {
|
|
|
176
176
|
public readonly multiplayer = GNNetwork.multiplayer.admin;
|
|
177
177
|
public readonly cloudScript = GNNetwork.cloudScript.admin;
|
|
178
178
|
public readonly dashboard = {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
179
|
+
getAdminAccountList: GNNetwork.dashboard.getAdminAccountList,
|
|
180
|
+
getAdminAccountListAsync: GNNetwork.dashboard.getAdminAccountListAsync,
|
|
181
|
+
getGameInformation: GNNetwork.dashboard.getGameInformation,
|
|
182
|
+
getGameInformationAsync: GNNetwork.dashboard.getGameInformationAsync,
|
|
183
|
+
getGameList: GNNetwork.dashboard.getGameList,
|
|
184
|
+
getGameListAsync: GNNetwork.dashboard.getGameListAsync,
|
|
185
|
+
getMasterGameSettings: GNNetwork.dashboard.getMasterGameSettings,
|
|
186
|
+
getMasterGameSettingsAsync: GNNetwork.dashboard.getMasterGameSettingsAsync,
|
|
187
|
+
getSecretInfoInformation: GNNetwork.dashboard.getSecretInfoInformation,
|
|
188
|
+
getSecretInfoInformationAsync: GNNetwork.dashboard.getSecretInfoInformationAsync,
|
|
189
|
+
getSecretInfoList: GNNetwork.dashboard.getSecretInfoList,
|
|
190
|
+
getSecretInfoListAsync: GNNetwork.dashboard.getSecretInfoListAsync,
|
|
191
|
+
getServerLog: GNNetwork.dashboard.getServerLog,
|
|
192
|
+
getServerLogAsync: GNNetwork.dashboard.getServerLogAsync,
|
|
193
|
+
setGameInformation: GNNetwork.dashboard.setGameInformation,
|
|
194
|
+
setGameInformationAsync: GNNetwork.dashboard.setGameInformationAsync,
|
|
195
|
+
getUsernameAdminAccount: GNNetwork.dashboard.getUsernameAdminAccount,
|
|
196
|
+
getUsernameAdminAccountAsync: GNNetwork.dashboard.getUsernameAdminAccountAsync,
|
|
197
|
+
getAnalytics: GNNetwork.dashboard.getAnalytics,
|
|
198
|
+
getAnalyticsAsync: GNNetwork.dashboard.getAnalyticsAsync,
|
|
199
|
+
resetStatisticsLeaderboard: GNNetwork.dashboard.resetStatisticsLeaderboard,
|
|
200
|
+
resetStatisticsLeaderboardAsync: GNNetwork.dashboard.resetStatisticsLeaderboardAsync,
|
|
201
|
+
getBackupStatisticsLeaderboardVersion: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersion,
|
|
202
|
+
getBackupStatisticsLeaderboardVersionAsync: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersionAsync,
|
|
203
|
+
getServerGameData: GNNetwork.dashboard.getServerGameData,
|
|
204
|
+
getServerGameDataAsync: GNNetwork.dashboard.getServerGameDataAsync,
|
|
205
|
+
deleteInDatabase: GNNetwork.dashboard.deleteInDatabase,
|
|
206
|
+
deleteInDatabaseAsync: GNNetwork.dashboard.deleteInDatabaseAsync,
|
|
207
|
+
};
|
|
208
208
|
public send(
|
|
209
209
|
requestType: RequestType,
|
|
210
210
|
requestRole: RequestRole,
|
|
@@ -347,160 +347,160 @@ class CloudScriptSocket {
|
|
|
347
347
|
}
|
|
348
348
|
|
|
349
349
|
private async sendEvent(event: CloudScriptEvent) {
|
|
350
|
-
|
|
351
|
-
|
|
350
|
+
if (process?.send)
|
|
351
|
+
process.send(event);
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
|
|
355
355
|
class CloudScriptMatchmaking {
|
|
356
356
|
public async confirmServerDetail(gameId: string, matchmakingTicketCanMatch: MatchmakingTicketCanMatch, serverDetail: ServerDetail) {
|
|
357
357
|
if (process?.send)
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
358
|
+
process.send({
|
|
359
|
+
eventType: 10,
|
|
360
|
+
receiver: null,
|
|
361
|
+
operationEvent: {
|
|
362
|
+
eventCode: 0,
|
|
363
|
+
encrypted: false,
|
|
364
|
+
parameters: {
|
|
365
|
+
gameId: gameId,
|
|
366
|
+
matchmakingTicketCanMatch: matchmakingTicketCanMatch,
|
|
367
|
+
serverDetail: serverDetail,
|
|
368
|
+
},
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
|
|
374
374
|
class CloudScriptMail {
|
|
375
375
|
public async send(email: string, subject: string, contentHtml: string) {
|
|
376
376
|
if (process?.send)
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
377
|
+
process.send({
|
|
378
|
+
eventType: 20,
|
|
379
|
+
receiver: null,
|
|
380
|
+
operationEvent: {
|
|
381
|
+
eventCode: 0,
|
|
382
|
+
encrypted: false,
|
|
383
|
+
parameters: {
|
|
384
|
+
email: email,
|
|
385
|
+
subject: subject,
|
|
386
|
+
contentHtml: contentHtml,
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
});
|
|
390
390
|
}
|
|
391
391
|
|
|
392
392
|
public async sendToMore(emails: string[], subject: string, contentHtml: string) {
|
|
393
393
|
if (process?.send)
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
394
|
+
process.send({
|
|
395
|
+
eventType: 21,
|
|
396
|
+
receiver: null,
|
|
397
|
+
operationEvent: {
|
|
398
|
+
eventCode: 0,
|
|
399
|
+
encrypted: false,
|
|
400
|
+
parameters: {
|
|
401
|
+
emails: emails,
|
|
402
|
+
subject: subject,
|
|
403
|
+
contentHtml: contentHtml,
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
});
|
|
407
407
|
}
|
|
408
408
|
}
|
|
409
409
|
|
|
410
410
|
class CloudScriptPushNotification {
|
|
411
411
|
public async send(token: string, title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
|
|
412
412
|
if (process?.send)
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
413
|
+
process.send({
|
|
414
|
+
eventType: 30,
|
|
415
|
+
receiver: null,
|
|
416
|
+
operationEvent: {
|
|
417
|
+
eventCode: 0,
|
|
418
|
+
encrypted: false,
|
|
419
|
+
parameters: {
|
|
420
|
+
token: token,
|
|
421
|
+
title: title,
|
|
422
|
+
body: body,
|
|
423
|
+
badge: badge,
|
|
424
|
+
sound: sound,
|
|
425
|
+
icon: icon,
|
|
426
|
+
data: data,
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
});
|
|
430
430
|
}
|
|
431
431
|
|
|
432
432
|
public async sendToMore(tokens: string[], title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
|
|
433
433
|
if (process?.send)
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
434
|
+
process.send({
|
|
435
|
+
eventType: 31,
|
|
436
|
+
receiver: null,
|
|
437
|
+
operationEvent: {
|
|
438
|
+
eventCode: 0,
|
|
439
|
+
encrypted: false,
|
|
440
|
+
parameters: {
|
|
441
|
+
tokens: tokens,
|
|
442
|
+
title: title,
|
|
443
|
+
body: body,
|
|
444
|
+
badge: badge,
|
|
445
|
+
sound: sound,
|
|
446
|
+
icon: icon,
|
|
447
|
+
data: data,
|
|
448
|
+
},
|
|
449
|
+
},
|
|
450
|
+
});
|
|
451
451
|
}
|
|
452
452
|
|
|
453
453
|
public async sendToTopic(topic: string, title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
|
|
454
454
|
if (process?.send)
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
|
|
455
|
+
process.send({
|
|
456
|
+
eventType: 32,
|
|
457
|
+
receiver: null,
|
|
458
|
+
operationEvent: {
|
|
459
|
+
eventCode: 0,
|
|
460
|
+
encrypted: false,
|
|
461
|
+
parameters: {
|
|
462
|
+
topic: topic,
|
|
463
|
+
title: title,
|
|
464
|
+
body: body,
|
|
465
|
+
badge: badge,
|
|
466
|
+
sound: sound,
|
|
467
|
+
icon: icon,
|
|
468
|
+
data: data,
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
public async subscribeToTopic(tokens: string[], topic: string) {
|
|
475
475
|
if (process?.send)
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
|
|
476
|
+
process.send({
|
|
477
|
+
eventType: 33,
|
|
478
|
+
receiver: null,
|
|
479
|
+
operationEvent: {
|
|
480
|
+
eventCode: 0,
|
|
481
|
+
encrypted: false,
|
|
482
|
+
parameters: {
|
|
483
|
+
tokens: tokens,
|
|
484
|
+
topic: topic,
|
|
485
|
+
},
|
|
486
|
+
},
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
public async unsubscribeFromTopic(tokens: string[], topic: string) {
|
|
491
491
|
if (process?.send)
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
492
|
+
process.send({
|
|
493
|
+
eventType: 34,
|
|
494
|
+
receiver: null,
|
|
495
|
+
operationEvent: {
|
|
496
|
+
eventCode: 0,
|
|
497
|
+
encrypted: false,
|
|
498
|
+
parameters: {
|
|
499
|
+
tokens: tokens,
|
|
500
|
+
topic: topic,
|
|
501
|
+
},
|
|
502
|
+
},
|
|
503
|
+
});
|
|
504
504
|
}
|
|
505
505
|
}
|
|
506
506
|
|
|
@@ -508,7 +508,7 @@ enum EventCallbackType {
|
|
|
508
508
|
Pre = 0,
|
|
509
509
|
Post = 1,
|
|
510
510
|
System = 2,
|
|
511
|
-
|
|
511
|
+
Event = 3,
|
|
512
512
|
}
|
|
513
513
|
|
|
514
514
|
interface CloudScriptRequest {
|
|
@@ -524,6 +524,7 @@ interface CloudScriptRequest {
|
|
|
524
524
|
permission: SecretPermissionItem;
|
|
525
525
|
gameId: string;
|
|
526
526
|
isDefault: boolean;
|
|
527
|
+
displayName: string;
|
|
527
528
|
onlyMasterAdmin: boolean;
|
|
528
529
|
};
|
|
529
530
|
operationRequest: {
|
|
@@ -581,143 +582,193 @@ interface FunctionResponse {
|
|
|
581
582
|
}
|
|
582
583
|
|
|
583
584
|
process?.on("message", async (request: CloudScriptRequest) => {
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
585
|
+
let startTime = performance.now();
|
|
586
|
+
let startMemoryUsage = process.memoryUsage();
|
|
587
|
+
|
|
588
|
+
let logs: string[] = [];
|
|
589
|
+
|
|
590
|
+
let handleResponse: FunctionResponse = null as any;
|
|
591
|
+
|
|
592
|
+
if (request.eventType == EventCallbackType.System) {
|
|
593
|
+
if (request.eventName == "system_RequestServerDetail") {
|
|
594
|
+
let functionRequest: FunctionRequest = {
|
|
595
|
+
eventName: request.eventName,
|
|
596
|
+
operationRequest: null as any,
|
|
597
|
+
secretInfo: null as any,
|
|
598
|
+
request: request.request,
|
|
599
|
+
log(log: any) {
|
|
600
|
+
logs.push(JSON.stringify(log));
|
|
601
|
+
},
|
|
602
|
+
};
|
|
603
|
+
|
|
604
|
+
handleResponse = await ___handleMatchmakingFunction(functionRequest);
|
|
605
|
+
}
|
|
606
|
+
else if (request.eventName == "system_OnAuthenticateSuccess") {
|
|
607
|
+
let originOperationRequest = request.operationRequest;
|
|
608
|
+
let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
|
|
609
|
+
if (originOperationRequest.parameters) {
|
|
610
|
+
operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
let originSecretInfo = request.secretInfo;
|
|
614
|
+
let secretInfo: SecretInfo = null as any;
|
|
615
|
+
if (originSecretInfo) {
|
|
616
|
+
secretInfo = SecretInfo.Builder()
|
|
617
|
+
.setSecretKey(originSecretInfo.secretKey)
|
|
618
|
+
.setDisplayName(originSecretInfo.displayName)
|
|
619
|
+
.setRole(originSecretInfo.role)
|
|
620
|
+
.setIsRemove(originSecretInfo.remove)
|
|
621
|
+
.setTsExpire(originSecretInfo.tsExpire)
|
|
622
|
+
.setPermission(originSecretInfo.permission)
|
|
623
|
+
.setGameId(originSecretInfo.gameId)
|
|
624
|
+
.setIsDefault(originSecretInfo.isDefault)
|
|
625
|
+
.setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
|
|
626
|
+
.build();
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
let originOperationResponse = request.operationResponse;
|
|
630
|
+
let operationResponse: OperationResponse = null as any;
|
|
631
|
+
|
|
632
|
+
if (originOperationResponse) {
|
|
633
|
+
operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
|
|
634
|
+
operationResponse.setReturnCode(originOperationResponse.returnCode);
|
|
635
|
+
operationResponse.setDebugMessage(originOperationResponse.debugMessage);
|
|
636
|
+
|
|
637
|
+
if (originOperationResponse.parameters) {
|
|
638
|
+
operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
let functionRequest: FunctionRequest = {
|
|
643
|
+
eventName: request.eventName,
|
|
644
|
+
operationRequest: operationRequest,
|
|
645
|
+
operationResponse: operationResponse,
|
|
646
|
+
secretInfo: secretInfo,
|
|
647
|
+
request: request.request,
|
|
648
|
+
log(log: any) {
|
|
649
|
+
logs.push(JSON.stringify(log));
|
|
650
|
+
},
|
|
651
|
+
};
|
|
652
|
+
|
|
653
|
+
handleResponse = await ___handleSystemAuthenticateFunction(functionRequest);
|
|
654
|
+
}
|
|
655
|
+
else {
|
|
656
|
+
let functionRequest: FunctionRequest = {
|
|
657
|
+
eventName: request.eventName,
|
|
658
|
+
operationRequest: null as any,
|
|
659
|
+
secretInfo: null as any,
|
|
660
|
+
request: null as any,
|
|
661
|
+
log(log: any) {
|
|
662
|
+
logs.push(JSON.stringify(log));
|
|
663
|
+
},
|
|
664
|
+
};
|
|
665
|
+
|
|
666
|
+
handleResponse = await ___handleSystemFunction(functionRequest);
|
|
667
|
+
}
|
|
668
|
+
} else if (request.eventType == EventCallbackType.Event) {
|
|
669
|
+
let originOperationEvent = request.operationRequest;
|
|
670
|
+
|
|
671
|
+
let operationEvent = new OperationEvent(originOperationEvent.operationCode, (originOperationEvent.parameters ? GNHashtable.builder().addAll(originOperationEvent.parameters).build() : null as any), originOperationEvent.encrypted);
|
|
672
|
+
|
|
673
|
+
let functionRequest: FunctionRequest = {
|
|
674
|
+
eventName: request.eventName,
|
|
675
|
+
operationRequest: null as any,
|
|
676
|
+
secretInfo: null as any,
|
|
677
|
+
request: {
|
|
678
|
+
operationEvent: operationEvent,
|
|
679
|
+
request: request.request,
|
|
680
|
+
},
|
|
681
|
+
log(log: any) {
|
|
682
|
+
logs.push(JSON.stringify(log));
|
|
683
|
+
},
|
|
684
|
+
};
|
|
685
|
+
|
|
686
|
+
handleResponse = await ___handleEventFunction(functionRequest);
|
|
687
|
+
} else {
|
|
688
|
+
let originOperationRequest = request.operationRequest;
|
|
689
|
+
let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
|
|
690
|
+
if (originOperationRequest.parameters) {
|
|
691
|
+
operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
let originSecretInfo = request.secretInfo;
|
|
695
|
+
let secretInfo: SecretInfo = null as any;
|
|
696
|
+
if (originSecretInfo) {
|
|
697
|
+
secretInfo = SecretInfo.Builder()
|
|
698
|
+
.setSecretKey(originSecretInfo.secretKey)
|
|
699
|
+
.setDisplayName(originSecretInfo.displayName)
|
|
700
|
+
.setRole(originSecretInfo.role)
|
|
701
|
+
.setIsRemove(originSecretInfo.remove)
|
|
702
|
+
.setTsExpire(originSecretInfo.tsExpire)
|
|
703
|
+
.setPermission(originSecretInfo.permission)
|
|
704
|
+
.setGameId(originSecretInfo.gameId)
|
|
705
|
+
.setIsDefault(originSecretInfo.isDefault)
|
|
706
|
+
.setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
|
|
707
|
+
.build();
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
if (request.eventType == EventCallbackType.Pre) {
|
|
711
|
+
let functionRequest: FunctionRequest = {
|
|
712
|
+
eventName: request.eventName,
|
|
713
|
+
operationRequest: operationRequest,
|
|
714
|
+
secretInfo: secretInfo,
|
|
715
|
+
request: request.request,
|
|
716
|
+
log(log: any) {
|
|
717
|
+
logs.push(JSON.stringify(log));
|
|
718
|
+
},
|
|
719
|
+
};
|
|
720
|
+
|
|
721
|
+
handleResponse = await ___handlePreFunction(functionRequest);
|
|
722
|
+
} else if (request.eventType == EventCallbackType.Post) {
|
|
723
|
+
let originOperationResponse = request.operationResponse;
|
|
724
|
+
let operationResponse: OperationResponse = null as any;
|
|
725
|
+
|
|
726
|
+
if (originOperationResponse) {
|
|
727
|
+
operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
|
|
728
|
+
operationResponse.setReturnCode(originOperationResponse.returnCode);
|
|
729
|
+
operationResponse.setDebugMessage(originOperationResponse.debugMessage);
|
|
730
|
+
|
|
731
|
+
if (originOperationResponse.parameters) {
|
|
732
|
+
operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
let functionRequest: FunctionRequest = {
|
|
737
|
+
eventName: request.eventName,
|
|
738
|
+
operationRequest: operationRequest,
|
|
739
|
+
operationResponse: operationResponse,
|
|
740
|
+
secretInfo: secretInfo,
|
|
741
|
+
request: request.request,
|
|
742
|
+
log(log: any) {
|
|
743
|
+
logs.push(JSON.stringify(log));
|
|
744
|
+
},
|
|
745
|
+
};
|
|
746
|
+
|
|
747
|
+
handleResponse = await ___handlePostFunction(functionRequest);
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
let endTime = performance.now();
|
|
752
|
+
let endMemoryUsage = process.memoryUsage();
|
|
753
|
+
|
|
754
|
+
let memoryUsedInBytes = endMemoryUsage.heapUsed - startMemoryUsage.heapUsed;
|
|
755
|
+
if (memoryUsedInBytes <= 0) memoryUsedInBytes = 8192;
|
|
756
|
+
let executeTimeInMs = endTime - startTime;
|
|
757
|
+
|
|
758
|
+
//let cost = (memoryUsedInGb * executeTime) / 1000 * 0.022;
|
|
759
|
+
|
|
760
|
+
let response: CloudScriptResponse = {
|
|
761
|
+
responseId: request.requestId,
|
|
762
|
+
response: handleResponse as any,
|
|
763
|
+
stats: {
|
|
764
|
+
executeTimeInMs: executeTimeInMs,
|
|
765
|
+
memoryUsedInBytes: memoryUsedInBytes,
|
|
766
|
+
},
|
|
767
|
+
logs: logs,
|
|
768
|
+
};
|
|
769
|
+
|
|
770
|
+
if (process?.send)
|
|
771
|
+
process.send(response);
|
|
721
772
|
});
|
|
722
773
|
|
|
723
774
|
async function ___handleMatchmakingFunction(request: FunctionRequest): Promise<FunctionResponse> {
|
|
@@ -752,6 +803,45 @@ async function ___handleMatchmakingFunction(request: FunctionRequest): Promise<F
|
|
|
752
803
|
return answer;
|
|
753
804
|
}
|
|
754
805
|
|
|
806
|
+
async function ___handleSystemAuthenticateFunction(request: FunctionRequest): Promise<FunctionResponse> {
|
|
807
|
+
let handler = systemAuthenticateHandlers[request.eventName];
|
|
808
|
+
|
|
809
|
+
if (handler == null) {
|
|
810
|
+
return {
|
|
811
|
+
status: ExecuteResponseStatus.FunctionNameNotFound,
|
|
812
|
+
result: null,
|
|
813
|
+
errorMessage: null,
|
|
814
|
+
request: null,
|
|
815
|
+
};
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
let answer: FunctionResponse = {
|
|
819
|
+
status: ExecuteResponseStatus.Ok,
|
|
820
|
+
errorMessage: null,
|
|
821
|
+
result: null,
|
|
822
|
+
request: null,
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
try {
|
|
826
|
+
let result = await handler(request.request as any, request.secretInfo, request.operationRequest, request.operationResponse as any, request.log);
|
|
827
|
+
|
|
828
|
+
if (result) {
|
|
829
|
+
answer.result = {
|
|
830
|
+
returnCode: result.getReturnCode(),
|
|
831
|
+
debugMessage: result.getDebugMessage(),
|
|
832
|
+
encrypted: result.isEncrypted(),
|
|
833
|
+
parameters: result.getParameters()?.toData(),
|
|
834
|
+
};
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
} catch (err: any) {
|
|
838
|
+
answer.status = ExecuteResponseStatus.Exception;
|
|
839
|
+
answer.errorMessage = err.message;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
return answer;
|
|
843
|
+
}
|
|
844
|
+
|
|
755
845
|
async function ___handleSystemFunction(request: FunctionRequest): Promise<FunctionResponse> {
|
|
756
846
|
let handler = systemHandlers[request.eventName];
|
|
757
847
|
|
|
@@ -782,7 +872,7 @@ async function ___handleSystemFunction(request: FunctionRequest): Promise<Functi
|
|
|
782
872
|
}
|
|
783
873
|
|
|
784
874
|
async function ___handleEventFunction(request: FunctionRequest): Promise<FunctionResponse> {
|
|
785
|
-
|
|
875
|
+
let handler = eventHandlers[request.eventName];
|
|
786
876
|
|
|
787
877
|
if (handler == null) {
|
|
788
878
|
return {
|
|
@@ -803,16 +893,16 @@ async function ___handleEventFunction(request: FunctionRequest): Promise<Functio
|
|
|
803
893
|
try {
|
|
804
894
|
await handler(request.request.request, request.request.operationEvent, request.log);
|
|
805
895
|
|
|
806
|
-
|
|
896
|
+
let operationEvent = request.request.operationEvent;
|
|
807
897
|
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
898
|
+
answer.result = {
|
|
899
|
+
returnCode: operationEvent.getEventCode(),
|
|
900
|
+
debugMessage: null as any,
|
|
901
|
+
encrypted: operationEvent.isEncrypted(),
|
|
902
|
+
parameters: operationEvent.getParameters()?.toData(),
|
|
903
|
+
};
|
|
814
904
|
|
|
815
|
-
|
|
905
|
+
answer.request = request.request.request;
|
|
816
906
|
} catch (err: any) {
|
|
817
907
|
answer.status = ExecuteResponseStatus.Exception;
|
|
818
908
|
answer.errorMessage = err.message;
|
|
@@ -882,12 +972,14 @@ async function ___handlePostFunction(request: FunctionRequest): Promise<Function
|
|
|
882
972
|
try {
|
|
883
973
|
let result = await handler(request.request, request.secretInfo, request.operationRequest, request.operationResponse as any, request.log);
|
|
884
974
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
975
|
+
if (result) {
|
|
976
|
+
answer.result = {
|
|
977
|
+
returnCode: result.getReturnCode(),
|
|
978
|
+
debugMessage: result.getDebugMessage(),
|
|
979
|
+
encrypted: result.isEncrypted(),
|
|
980
|
+
parameters: result.getParameters()?.toData(),
|
|
981
|
+
};
|
|
982
|
+
}
|
|
891
983
|
} catch (err: any) {
|
|
892
984
|
answer.status = ExecuteResponseStatus.Exception;
|
|
893
985
|
answer.errorMessage = err.message;
|
|
@@ -931,4 +1023,6 @@ const eventHandlers: Record<string, (request: any, operationEvent: OperationEven
|
|
|
931
1023
|
|
|
932
1024
|
const systemMatchmakingHandlers: Record<string, (gameId: string, matchmakingTicketCanMatch: MatchmakingTicketCanMatch, log: (log: any) => void) => Promise<{ success: boolean }>> = {};
|
|
933
1025
|
|
|
934
|
-
|
|
1026
|
+
const systemAuthenticateHandlers: Record<string, (request: { userId: string, ipAddress: string, isNewUser: boolean, authenticationType: string }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse, log: (log: any) => void) => Promise<OperationResponse>> = {};
|
|
1027
|
+
|
|
1028
|
+
//$replaceScript
|