easyproctor 0.0.82 → 0.0.83
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/README.md +3 -2
- package/esm/index.js +236 -145
- package/index.js +235 -144
- package/package.json +1 -1
- package/plugins/insights.d.ts +1 -0
- package/unpkg/easyproctor.min.js +31 -23
package/README.md
CHANGED
|
@@ -219,9 +219,10 @@ const {
|
|
|
219
219
|
});
|
|
220
220
|
```
|
|
221
221
|
|
|
222
|
-
## Release Note V 0.0.
|
|
222
|
+
## Release Note V 0.0.83
|
|
223
223
|
|
|
224
|
-
-
|
|
224
|
+
- Download do exame sem internet
|
|
225
|
+
- Adicionado trackers para verificar o fluxo e os arquivos
|
|
225
226
|
|
|
226
227
|
## License
|
|
227
228
|
|
package/esm/index.js
CHANGED
|
@@ -22459,7 +22459,9 @@ var eventNames = {
|
|
|
22459
22459
|
START: "start",
|
|
22460
22460
|
FINISH: "finish",
|
|
22461
22461
|
ERROR: "error",
|
|
22462
|
-
UPLOAD_VIDEO: "upload_video"
|
|
22462
|
+
UPLOAD_VIDEO: "upload_video",
|
|
22463
|
+
START_RECORD: "start_record",
|
|
22464
|
+
FILE: "file"
|
|
22463
22465
|
};
|
|
22464
22466
|
var trackError = (exception) => insights.trackException({ exception });
|
|
22465
22467
|
var registerCustomEvent = (eventName, properties) => insights.trackEvent({ name: eventName, properties });
|
|
@@ -22470,7 +22472,8 @@ var trackers = {
|
|
|
22470
22472
|
registerStart: (proctoringId, success, description) => registerCustomEvent(eventNames.START, { proctoringId, success, description }),
|
|
22471
22473
|
registerFinish: (proctoringId, success, description) => registerCustomEvent(eventNames.FINISH, { proctoringId, success, description }),
|
|
22472
22474
|
registerError: (proctoringId, description) => registerCustomEvent(eventNames.ERROR, { proctoringId, description }),
|
|
22473
|
-
registerUploadVideo: (proctoringId, success, description, uploadTime) => registerCustomEvent(eventNames.UPLOAD_VIDEO, { proctoringId, success, description, uploadTime })
|
|
22475
|
+
registerUploadVideo: (proctoringId, success, description, uploadTime) => registerCustomEvent(eventNames.UPLOAD_VIDEO, { proctoringId, success, description, uploadTime }),
|
|
22476
|
+
registerRecord: (proctoringId, success, description) => registerCustomEvent(eventNames.START_RECORD, { proctoringId, success, description })
|
|
22474
22477
|
};
|
|
22475
22478
|
|
|
22476
22479
|
// node_modules/axios/lib/helpers/bind.js
|
|
@@ -24256,7 +24259,6 @@ var axios_default2 = axios_default;
|
|
|
24256
24259
|
// src/modules/http.ts
|
|
24257
24260
|
var baseUrl = "https://proctoring-api.easyproctor.tech/api";
|
|
24258
24261
|
async function setBaseUrl(homol) {
|
|
24259
|
-
console.log("homol -> ", homol);
|
|
24260
24262
|
if (homol)
|
|
24261
24263
|
baseUrl = "https://proctoring-api-hml.easyproctor.tech/api";
|
|
24262
24264
|
}
|
|
@@ -24309,9 +24311,6 @@ async function setConfiguration(_account, _cointainerName, _sas) {
|
|
|
24309
24311
|
containerName = _cointainerName;
|
|
24310
24312
|
sas = _sas;
|
|
24311
24313
|
blobServiceClient = new BlobServiceClient(`https://${account}.blob.core.windows.net${sas}`);
|
|
24312
|
-
console.log(account);
|
|
24313
|
-
console.log(containerName);
|
|
24314
|
-
console.log(sas);
|
|
24315
24314
|
}
|
|
24316
24315
|
function sendError(proctoringId) {
|
|
24317
24316
|
trackers.registerError(proctoringId, message);
|
|
@@ -24589,16 +24588,33 @@ function useProctoring(proctoringOptions, homolConfig = false) {
|
|
|
24589
24588
|
try {
|
|
24590
24589
|
let _screenStream = void 0;
|
|
24591
24590
|
if (captureScreen) {
|
|
24592
|
-
|
|
24593
|
-
|
|
24594
|
-
|
|
24595
|
-
|
|
24596
|
-
|
|
24597
|
-
|
|
24591
|
+
try {
|
|
24592
|
+
const { screenStream, stopScreenRecorder } = await startScreenCapture(screenBuffer, {
|
|
24593
|
+
allowOnlyFirstMonitor,
|
|
24594
|
+
onStopSharingScreenCallback: () => onStopSharingScreenCallback && onStopSharingScreenCallback()
|
|
24595
|
+
});
|
|
24596
|
+
cancelScreenCapture = stopScreenRecorder;
|
|
24597
|
+
trackers.registerRecord(proctoringId, true, `Start Screen Recorder`);
|
|
24598
|
+
_screenStream = screenStream;
|
|
24599
|
+
} catch (e) {
|
|
24600
|
+
trackers.registerRecord(proctoringId, false, `Start Screen Recorder Error: ${e}`);
|
|
24601
|
+
}
|
|
24602
|
+
}
|
|
24603
|
+
let cameraStream = new MediaStream();
|
|
24604
|
+
try {
|
|
24605
|
+
const cameraCaptureResponse = await startCameraCapture(cameraBuffer, { cameraId, microphoneId }, videoOptions);
|
|
24606
|
+
cameraStream = cameraCaptureResponse.cameraStream;
|
|
24607
|
+
cancelCameraCapture = await cameraCaptureResponse.stopCameraRecording;
|
|
24608
|
+
trackers.registerRecord(proctoringId, true, `Start Camera Recorder`);
|
|
24609
|
+
} catch (e) {
|
|
24610
|
+
trackers.registerRecord(proctoringId, false, `Start Camera Recorder Error: ${e}`);
|
|
24611
|
+
}
|
|
24612
|
+
try {
|
|
24613
|
+
startAudio();
|
|
24614
|
+
trackers.registerRecord(proctoringId, true, `Start Audio Recorder`);
|
|
24615
|
+
} catch (e) {
|
|
24616
|
+
trackers.registerRecord(proctoringId, false, `Start Audio Recorder Error: ${e}`);
|
|
24598
24617
|
}
|
|
24599
|
-
const { cameraStream, stopCameraRecording } = await startCameraCapture(cameraBuffer, { cameraId, microphoneId }, videoOptions);
|
|
24600
|
-
startAudio();
|
|
24601
|
-
cancelCameraCapture = await stopCameraRecording;
|
|
24602
24618
|
if (captureScreen) {
|
|
24603
24619
|
cancelCallback = async function() {
|
|
24604
24620
|
await Promise.all([cancelCameraCapture(), cancelScreenCapture()]);
|
|
@@ -24665,11 +24681,34 @@ function useProctoring(proctoringOptions, homolConfig = false) {
|
|
|
24665
24681
|
const cameraFileName = `EP_${proctoringId}_camera_${index}.webm`;
|
|
24666
24682
|
const audioFileName = `EP_${proctoringId}_audio_${index}.mp3`;
|
|
24667
24683
|
const screenFIleName = `EP_${proctoringId}_screen_${index}.webm`;
|
|
24668
|
-
|
|
24669
|
-
|
|
24684
|
+
let cameraFile = new File([], "null");
|
|
24685
|
+
let audioFile = new File([], "null");
|
|
24670
24686
|
let screenFile;
|
|
24687
|
+
try {
|
|
24688
|
+
cameraFile = new File(finalCameraBuffer, cameraFileName, { type: "video/webm" });
|
|
24689
|
+
trackers.registerRecord(proctoringId, true, `Camera Recorder File
|
|
24690
|
+
name: ${cameraFile.name}
|
|
24691
|
+
size: ${cameraFile.size}`);
|
|
24692
|
+
} catch (e) {
|
|
24693
|
+
trackers.registerRecord(proctoringId, false, `Camera Recorder File Error: ${e}`);
|
|
24694
|
+
}
|
|
24695
|
+
try {
|
|
24696
|
+
audioFile = new File(finalAudioBuffer, audioFileName, { type: blob.type });
|
|
24697
|
+
trackers.registerRecord(proctoringId, true, `Audio Recorder File
|
|
24698
|
+
name: ${audioFile.name}
|
|
24699
|
+
size: ${audioFile.size}`);
|
|
24700
|
+
} catch (e) {
|
|
24701
|
+
trackers.registerRecord(proctoringId, false, `Audio Recorder File Error: ${e}`);
|
|
24702
|
+
}
|
|
24671
24703
|
if (finalScreenBuffer.length != 0) {
|
|
24672
|
-
|
|
24704
|
+
try {
|
|
24705
|
+
screenFile = new File(finalScreenBuffer, screenFIleName, { type: "video/webm" });
|
|
24706
|
+
trackers.registerRecord(proctoringId, true, `Screen Recorder File
|
|
24707
|
+
name: ${screenFile.name}
|
|
24708
|
+
size: ${screenFile.size}`);
|
|
24709
|
+
} catch (e) {
|
|
24710
|
+
trackers.registerRecord(proctoringId, false, `Screen Recorder File Error: ${e}`);
|
|
24711
|
+
}
|
|
24673
24712
|
}
|
|
24674
24713
|
return { cameraFile, audioFile, screenFile };
|
|
24675
24714
|
};
|
|
@@ -24685,7 +24724,6 @@ function useProctoring(proctoringOptions, homolConfig = false) {
|
|
|
24685
24724
|
init(config.insights);
|
|
24686
24725
|
}
|
|
24687
24726
|
async function start(options = defaultProctoringOptions, videoOptions = { width: 640, height: 480 }) {
|
|
24688
|
-
console.log(lastClick);
|
|
24689
24727
|
if (lastClick >= Date.now() - delay)
|
|
24690
24728
|
throw PROCTORING_ALREADY_STARTED;
|
|
24691
24729
|
lastClick = Date.now();
|
|
@@ -24737,7 +24775,6 @@ function useProctoring(proctoringOptions, homolConfig = false) {
|
|
|
24737
24775
|
sessions: []
|
|
24738
24776
|
});
|
|
24739
24777
|
proctoringId = resp.id;
|
|
24740
|
-
console.log("proctoringId", proctoringId);
|
|
24741
24778
|
trackers.registerStart(proctoringId, true, "");
|
|
24742
24779
|
_addListeners(captureScreen);
|
|
24743
24780
|
return resp;
|
|
@@ -24760,11 +24797,9 @@ function useProctoring(proctoringOptions, homolConfig = false) {
|
|
|
24760
24797
|
checkPermissions();
|
|
24761
24798
|
startAudio();
|
|
24762
24799
|
const { cameraStream, _screenStream } = await _startCapture({ cameraId, microphoneId, allowOnlyFirstMonitor, captureScreen, proctoringType }, videoOptions);
|
|
24763
|
-
console.log("Recording...");
|
|
24764
24800
|
return { cameraStream, _screenStream };
|
|
24765
24801
|
}
|
|
24766
24802
|
async function closeCheckDevices() {
|
|
24767
|
-
console.log("Stoping record...");
|
|
24768
24803
|
onStopSharingScreenCallback = void 0;
|
|
24769
24804
|
if (cancelCallback) {
|
|
24770
24805
|
await cancelCallback();
|
|
@@ -24777,7 +24812,6 @@ function useProctoring(proctoringOptions, homolConfig = false) {
|
|
|
24777
24812
|
screenBuffer = [];
|
|
24778
24813
|
alerts = [];
|
|
24779
24814
|
cancelCallback = null;
|
|
24780
|
-
console.log("Finish record");
|
|
24781
24815
|
return { cameraBlob, screenBlob };
|
|
24782
24816
|
}
|
|
24783
24817
|
async function pause() {
|
|
@@ -24853,157 +24887,214 @@ function useProctoring(proctoringOptions, homolConfig = false) {
|
|
|
24853
24887
|
trackers.registerError(proctoringId, "N\xE3o foi poss\xEDvel requisitar a data do servidor!" + e);
|
|
24854
24888
|
}
|
|
24855
24889
|
proctoringId = record.id;
|
|
24856
|
-
console.log("procotoringId resume", proctoringId);
|
|
24857
24890
|
startDate = serverTime ? new Date(serverTime.toString()) : new Date();
|
|
24858
24891
|
startTime = startDate.getTime();
|
|
24859
24892
|
return { cameraStream, _screenStream };
|
|
24860
24893
|
}
|
|
24861
24894
|
async function finish(options = {}) {
|
|
24895
|
+
let step = 0;
|
|
24862
24896
|
const { onProgress } = options;
|
|
24863
24897
|
const record = await getRecord("exams");
|
|
24864
24898
|
if (!record) {
|
|
24865
24899
|
trackers.registerError(proctoringId, "Proctoring n\xE3o iniciado!");
|
|
24866
24900
|
throw PROCTORING_NOT_STARTED;
|
|
24867
24901
|
}
|
|
24868
|
-
try {
|
|
24869
|
-
if (azureBlobUrl == "") {
|
|
24870
|
-
setBaseUrl(homolConfig);
|
|
24871
|
-
config = await makeRequest({
|
|
24872
|
-
url: `/AzureKey`,
|
|
24873
|
-
method: "GET",
|
|
24874
|
-
jwt: proctoringOptions.token
|
|
24875
|
-
});
|
|
24876
|
-
setConfiguration(config.account, config.containerName, config.sas);
|
|
24877
|
-
azureBlobUrl = config.azureBlobUrl;
|
|
24878
|
-
}
|
|
24879
|
-
} catch (error) {
|
|
24880
|
-
trackers.registerError(proctoringId, "Erro ao buscar credenciais!");
|
|
24881
|
-
throw "Erro ao buscar credenciais!";
|
|
24882
|
-
}
|
|
24883
|
-
onStopSharingScreenCallback = void 0;
|
|
24884
24902
|
let serverTime;
|
|
24885
|
-
|
|
24886
|
-
|
|
24887
|
-
|
|
24888
|
-
try {
|
|
24889
|
-
serverTime = await makeRequest({
|
|
24890
|
-
url: `/Proctoring/server-hour`,
|
|
24891
|
-
method: "GET",
|
|
24892
|
-
jwt: proctoringOptions.token
|
|
24893
|
-
});
|
|
24894
|
-
} catch (e) {
|
|
24895
|
-
trackers.registerError(proctoringId, "N\xE3o foi poss\xEDvel requisitar a data do servidor!" + e);
|
|
24896
|
-
}
|
|
24897
|
-
const { cameraFile, audioFile, screenFile } = await _closeSession(record.sessions.length);
|
|
24898
|
-
record.sessions.push({
|
|
24899
|
-
alerts,
|
|
24900
|
-
cameraFile,
|
|
24901
|
-
audioFile,
|
|
24902
|
-
screenFile,
|
|
24903
|
-
id: "" + record.sessions.length + 1,
|
|
24904
|
-
start: startDate ? startDate.toISOString() : (serverTime ? new Date(serverTime.toString()) : new Date()).toISOString(),
|
|
24905
|
-
end: serverTime ? new Date(serverTime.toString()).toISOString() : new Date().toISOString()
|
|
24906
|
-
});
|
|
24907
|
-
}
|
|
24908
|
-
if (record.sessions.length == 0) {
|
|
24909
|
-
trackers.registerError(proctoringId, "Nenhum v\xEDdeo gravado!");
|
|
24910
|
-
throw NO_VIDEOS_RECORDED;
|
|
24911
|
-
}
|
|
24912
|
-
const time = serverTime ? new Date(serverTime.toString()).toISOString() : new Date().toISOString();
|
|
24903
|
+
let cameraFile = new File([], "null");
|
|
24904
|
+
let audioFile = new File([], "null");
|
|
24905
|
+
let screenFile;
|
|
24913
24906
|
const allFiles = [];
|
|
24914
|
-
record.sessions.forEach((session) => {
|
|
24915
|
-
if (session.cameraFile)
|
|
24916
|
-
allFiles.push(session.cameraFile);
|
|
24917
|
-
if (session.audioFile)
|
|
24918
|
-
allFiles.push(session.audioFile);
|
|
24919
|
-
if (session.screenFile != void 0)
|
|
24920
|
-
allFiles.push(session.screenFile);
|
|
24921
|
-
});
|
|
24922
|
-
const totalFiles = allFiles.length;
|
|
24923
|
-
const uploadProgress = Array(totalFiles).fill(0);
|
|
24924
|
-
const handleOnProgress = () => {
|
|
24925
|
-
onProgress && onProgress(uploadProgress.reduce((acc, el) => acc += el, 0) / totalFiles);
|
|
24926
|
-
};
|
|
24927
|
-
_removeListeners();
|
|
24928
|
-
const sessionsDto = [];
|
|
24929
|
-
record.sessions.forEach((session) => {
|
|
24930
|
-
sessionsDto.push({
|
|
24931
|
-
alerts: session.alerts,
|
|
24932
|
-
id: session.id,
|
|
24933
|
-
end: session.end,
|
|
24934
|
-
start: session.start,
|
|
24935
|
-
videoCameraUrl: session.cameraFile.name,
|
|
24936
|
-
audioCameraUrl: session.audioFile.name,
|
|
24937
|
-
videoScreenUrl: session.screenFile ? session.screenFile.name : ""
|
|
24938
|
-
});
|
|
24939
|
-
});
|
|
24940
24907
|
try {
|
|
24941
|
-
|
|
24942
|
-
|
|
24943
|
-
|
|
24944
|
-
|
|
24945
|
-
|
|
24946
|
-
|
|
24947
|
-
|
|
24908
|
+
try {
|
|
24909
|
+
if (azureBlobUrl == "") {
|
|
24910
|
+
setBaseUrl(homolConfig);
|
|
24911
|
+
config = await makeRequest({
|
|
24912
|
+
url: `/AzureKey`,
|
|
24913
|
+
method: "GET",
|
|
24914
|
+
jwt: proctoringOptions.token
|
|
24915
|
+
});
|
|
24916
|
+
setConfiguration(config.account, config.containerName, config.sas);
|
|
24917
|
+
azureBlobUrl = config.azureBlobUrl;
|
|
24948
24918
|
}
|
|
24919
|
+
} catch (error) {
|
|
24920
|
+
trackers.registerError(proctoringId, "Erro ao buscar credenciais!");
|
|
24921
|
+
throw "Erro ao buscar credenciais!";
|
|
24922
|
+
}
|
|
24923
|
+
onStopSharingScreenCallback = void 0;
|
|
24924
|
+
if (cancelCallback) {
|
|
24925
|
+
await cancelCallback();
|
|
24926
|
+
step++;
|
|
24927
|
+
try {
|
|
24928
|
+
serverTime = await makeRequest({
|
|
24929
|
+
url: `/Proctoring/server-hour`,
|
|
24930
|
+
method: "GET",
|
|
24931
|
+
jwt: proctoringOptions.token
|
|
24932
|
+
});
|
|
24933
|
+
} catch (e) {
|
|
24934
|
+
trackers.registerError(proctoringId, "N\xE3o foi poss\xEDvel requisitar a data do servidor!" + e);
|
|
24935
|
+
throw "N\xE3o foi poss\xEDvel requisitar a data do servidor! -> " + e;
|
|
24936
|
+
}
|
|
24937
|
+
await closeSession();
|
|
24938
|
+
step++;
|
|
24939
|
+
record.sessions.push({
|
|
24940
|
+
alerts,
|
|
24941
|
+
cameraFile,
|
|
24942
|
+
audioFile,
|
|
24943
|
+
screenFile,
|
|
24944
|
+
id: "" + record.sessions.length + 1,
|
|
24945
|
+
start: startDate ? startDate.toISOString() : (serverTime ? new Date(serverTime.toString()) : new Date()).toISOString(),
|
|
24946
|
+
end: serverTime ? new Date(serverTime.toString()).toISOString() : new Date().toISOString()
|
|
24947
|
+
});
|
|
24948
|
+
step++;
|
|
24949
|
+
}
|
|
24950
|
+
if (record.sessions.length == 0) {
|
|
24951
|
+
trackers.registerError(proctoringId, "Nenhum v\xEDdeo gravado!");
|
|
24952
|
+
throw NO_VIDEOS_RECORDED;
|
|
24953
|
+
}
|
|
24954
|
+
const time = serverTime ? new Date(serverTime.toString()).toISOString() : new Date().toISOString();
|
|
24955
|
+
pushAllFiles();
|
|
24956
|
+
step++;
|
|
24957
|
+
const totalFiles = allFiles.length;
|
|
24958
|
+
const uploadProgress = Array(totalFiles).fill(0);
|
|
24959
|
+
const handleOnProgress = () => {
|
|
24960
|
+
onProgress && onProgress(uploadProgress.reduce((acc, el) => acc += el, 0) / totalFiles);
|
|
24961
|
+
};
|
|
24962
|
+
const sessionsDto = [];
|
|
24963
|
+
record.sessions.forEach((session) => {
|
|
24964
|
+
sessionsDto.push({
|
|
24965
|
+
alerts: session.alerts,
|
|
24966
|
+
id: session.id,
|
|
24967
|
+
end: session.end,
|
|
24968
|
+
start: session.start,
|
|
24969
|
+
videoCameraUrl: session.cameraFile.name,
|
|
24970
|
+
audioCameraUrl: session.audioFile.name,
|
|
24971
|
+
videoScreenUrl: session.screenFile ? session.screenFile.name : ""
|
|
24972
|
+
});
|
|
24949
24973
|
});
|
|
24950
|
-
} catch (error) {
|
|
24951
|
-
trackers.registerFinish(proctoringId, false, "save-screen error: " + error);
|
|
24952
|
-
}
|
|
24953
|
-
try {
|
|
24954
|
-
await makeRequest({
|
|
24955
|
-
url: `/proctoring/finish/${proctoringOptions.examId}`,
|
|
24956
|
-
method: "POST",
|
|
24957
|
-
body: {
|
|
24958
|
-
endDate: time,
|
|
24959
|
-
videoCameraUrl: `${azureBlobUrl}/` + sessionsDto[sessionsDto.length - 1].videoCameraUrl,
|
|
24960
|
-
audioCameraUrl: `${azureBlobUrl}/` + sessionsDto[sessionsDto.length - 1].audioCameraUrl,
|
|
24961
|
-
videoScreenUrl: _captureScreen ? `${azureBlobUrl}/` + sessionsDto[sessionsDto.length - 1].videoScreenUrl : ""
|
|
24962
|
-
},
|
|
24963
|
-
jwt: proctoringOptions.token
|
|
24964
|
-
});
|
|
24965
|
-
trackers.registerFinish(proctoringId, true, "");
|
|
24966
|
-
} catch (error) {
|
|
24967
|
-
trackers.registerFinish(proctoringId, false, "finish error: " + error);
|
|
24968
|
-
}
|
|
24969
|
-
if (versionVerify() !== "1.0.0.0") {
|
|
24970
24974
|
try {
|
|
24971
|
-
|
|
24972
|
-
|
|
24973
|
-
|
|
24975
|
+
await makeRequest({
|
|
24976
|
+
url: "/proctoring/save-screen",
|
|
24977
|
+
method: "POST",
|
|
24978
|
+
jwt: proctoringOptions.token,
|
|
24979
|
+
body: {
|
|
24980
|
+
proctoringId,
|
|
24981
|
+
alerts: [...sessionsDto[sessionsDto.length - 1].alerts]
|
|
24982
|
+
}
|
|
24974
24983
|
});
|
|
24975
|
-
onProgress && onProgress(Math.round(100));
|
|
24976
|
-
trackers.registerUploadVideo(proctoringId, true, "Finish download");
|
|
24977
24984
|
} catch (error) {
|
|
24978
|
-
|
|
24979
|
-
|
|
24985
|
+
trackers.registerFinish(proctoringId, false, "save-screen error: " + error);
|
|
24986
|
+
throw "save-screen error: " + error;
|
|
24980
24987
|
}
|
|
24981
|
-
} else {
|
|
24982
24988
|
try {
|
|
24983
|
-
|
|
24984
|
-
|
|
24985
|
-
|
|
24986
|
-
|
|
24987
|
-
|
|
24988
|
-
|
|
24989
|
-
|
|
24990
|
-
|
|
24991
|
-
|
|
24992
|
-
|
|
24989
|
+
await makeRequest({
|
|
24990
|
+
url: `/proctoring/finish/${proctoringOptions.examId}`,
|
|
24991
|
+
method: "POST",
|
|
24992
|
+
body: {
|
|
24993
|
+
endDate: time,
|
|
24994
|
+
videoCameraUrl: `${azureBlobUrl}/` + sessionsDto[sessionsDto.length - 1].videoCameraUrl,
|
|
24995
|
+
audioCameraUrl: `${azureBlobUrl}/` + sessionsDto[sessionsDto.length - 1].audioCameraUrl,
|
|
24996
|
+
videoScreenUrl: _captureScreen ? `${azureBlobUrl}/` + sessionsDto[sessionsDto.length - 1].videoScreenUrl : ""
|
|
24997
|
+
},
|
|
24998
|
+
jwt: proctoringOptions.token
|
|
24993
24999
|
});
|
|
24994
|
-
|
|
24995
|
-
await Promise.all(uploadPromises);
|
|
24996
|
-
const executionTime = timeAfter - timeBefore;
|
|
24997
|
-
trackers.registerUploadVideo(proctoringId, true, "Finish upload", executionTime);
|
|
25000
|
+
trackers.registerFinish(proctoringId, true, "");
|
|
24998
25001
|
} catch (error) {
|
|
24999
|
-
|
|
25000
|
-
trackers.registerUploadVideo(proctoringId, false, "" + error);
|
|
25002
|
+
trackers.registerFinish(proctoringId, false, "finish error: " + error);
|
|
25001
25003
|
}
|
|
25004
|
+
checkVersionAndDownload();
|
|
25005
|
+
if (versionVerify() === "1.0.0.0") {
|
|
25006
|
+
try {
|
|
25007
|
+
trackers.registerUploadVideo(proctoringId, true, "Starting upload");
|
|
25008
|
+
const timeBefore = performance.now();
|
|
25009
|
+
const uploadPromises = allFiles.map((c, i) => {
|
|
25010
|
+
trackers.registerUploadVideo(proctoringId, true, `file: ${c.name}, size ${c.size}`);
|
|
25011
|
+
return upload({
|
|
25012
|
+
file: c,
|
|
25013
|
+
onProgress: (progress) => {
|
|
25014
|
+
uploadProgress[i] = progress;
|
|
25015
|
+
handleOnProgress();
|
|
25016
|
+
}
|
|
25017
|
+
}, proctoringId, config, proctoringOptions.token);
|
|
25018
|
+
});
|
|
25019
|
+
const timeAfter = performance.now();
|
|
25020
|
+
await Promise.all(uploadPromises);
|
|
25021
|
+
const executionTime = timeAfter - timeBefore;
|
|
25022
|
+
trackers.registerUploadVideo(proctoringId, true, "Finish upload", executionTime);
|
|
25023
|
+
} catch (error) {
|
|
25024
|
+
trackers.registerUploadVideo(proctoringId, false, "" + error);
|
|
25025
|
+
}
|
|
25026
|
+
}
|
|
25027
|
+
} catch (e) {
|
|
25028
|
+
console.log("Erro no fluxo de finish, iniciando download de backup\nError: " + e);
|
|
25029
|
+
trackers.registerError(proctoringId, "Erro no fluxo de finish, iniciando download de backup\n" + e);
|
|
25030
|
+
switch (step) {
|
|
25031
|
+
case 0:
|
|
25032
|
+
if (cancelCallback) {
|
|
25033
|
+
await cancelCallback();
|
|
25034
|
+
}
|
|
25035
|
+
case 1: {
|
|
25036
|
+
await closeSession();
|
|
25037
|
+
}
|
|
25038
|
+
case 2:
|
|
25039
|
+
pushRecord();
|
|
25040
|
+
case 3: {
|
|
25041
|
+
pushAllFiles();
|
|
25042
|
+
}
|
|
25043
|
+
case 4: {
|
|
25044
|
+
checkVersionAndDownload();
|
|
25045
|
+
}
|
|
25046
|
+
}
|
|
25047
|
+
console.log("Enviando tracker de error");
|
|
25048
|
+
trackers.registerUploadVideo(proctoringId, false, "Download feito como backup no Catch");
|
|
25002
25049
|
}
|
|
25003
25050
|
cameraBuffer = [];
|
|
25004
25051
|
screenBuffer = [];
|
|
25005
25052
|
alerts = [];
|
|
25006
25053
|
cancelCallback = null;
|
|
25054
|
+
async function closeSession() {
|
|
25055
|
+
const closeSessionReturn = await _closeSession(record.sessions.length);
|
|
25056
|
+
cameraFile = closeSessionReturn.cameraFile;
|
|
25057
|
+
audioFile = closeSessionReturn.audioFile;
|
|
25058
|
+
screenFile = closeSessionReturn.screenFile;
|
|
25059
|
+
}
|
|
25060
|
+
function pushRecord() {
|
|
25061
|
+
record.sessions.push({
|
|
25062
|
+
alerts,
|
|
25063
|
+
cameraFile,
|
|
25064
|
+
audioFile,
|
|
25065
|
+
screenFile,
|
|
25066
|
+
id: "" + record.sessions.length + 1,
|
|
25067
|
+
start: startDate ? startDate.toISOString() : new Date().toISOString(),
|
|
25068
|
+
end: new Date().toISOString()
|
|
25069
|
+
});
|
|
25070
|
+
_removeListeners();
|
|
25071
|
+
}
|
|
25072
|
+
function pushAllFiles() {
|
|
25073
|
+
record.sessions.forEach((session) => {
|
|
25074
|
+
if (session.cameraFile)
|
|
25075
|
+
allFiles.push(session.cameraFile);
|
|
25076
|
+
if (session.audioFile)
|
|
25077
|
+
allFiles.push(session.audioFile);
|
|
25078
|
+
if (session.screenFile != void 0)
|
|
25079
|
+
allFiles.push(session.screenFile);
|
|
25080
|
+
});
|
|
25081
|
+
}
|
|
25082
|
+
function checkVersionAndDownload() {
|
|
25083
|
+
if (versionVerify() !== "1.0.0.0") {
|
|
25084
|
+
try {
|
|
25085
|
+
trackers.registerUploadVideo(proctoringId, true, "Starting download");
|
|
25086
|
+
allFiles.map((c) => {
|
|
25087
|
+
trackers.registerUploadVideo(proctoringId, true, `file: ${c.name}, size ${c.size}`);
|
|
25088
|
+
download2(c);
|
|
25089
|
+
});
|
|
25090
|
+
onProgress && onProgress(Math.round(100));
|
|
25091
|
+
trackers.registerUploadVideo(proctoringId, true, "Finish download");
|
|
25092
|
+
} catch (error) {
|
|
25093
|
+
console.log("Enviando tracker de error");
|
|
25094
|
+
trackers.registerUploadVideo(proctoringId, false, "erro no download " + error);
|
|
25095
|
+
}
|
|
25096
|
+
}
|
|
25097
|
+
}
|
|
25007
25098
|
}
|
|
25008
25099
|
function onFocus(cb) {
|
|
25009
25100
|
onFocusCallback = cb;
|