summaryrefslogtreecommitdiff
path: root/src/handlers/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/handlers/index.js')
-rw-r--r--src/handlers/index.js26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/handlers/index.js b/src/handlers/index.js
index 188547c..d4eaf43 100644
--- a/src/handlers/index.js
+++ b/src/handlers/index.js
@@ -2,11 +2,33 @@ const { Types } = require('mongoose');
const Bluebird = require('bluebird');
const UserModel = require('../services/users/user.model.js');
const launchUserSession = require('./launchUserSession.js');
+const attendConference = require('./attendConference.js');
+const { clickElementBySelector } = require('./utils.js');
+
+const { EDUFPMI_URL } = process.env;
const handleJobAsUser = async (job, user) => {
console.log(`Running job as ${user.username}`);
- return launchUserSession(user);
+
+ const { conferenceId } = job.attrs.data;
+ const conferenceUrl = `${EDUFPMI_URL}/mod/bigbluebuttonbn/view.php?id=${conferenceId}`;
+
+ const browser = await launchUserSession(user, false);
+ const page = await browser.newPage();
+ await page.goto(conferenceUrl);
+
+ // Launch the conference in a new tab
+ const conferencePagePromise = new Promise(resolve => browser.on(
+ 'targetcreated',
+ target => resolve(target.page())
+ ));
+ await clickElementBySelector(page, 'input#join_button_input');
+ const conferencePage = await conferencePagePromise;
+
+ await attendConference(conferencePage, () => console.log(`Joined the conference at ${conferenceUrl}`));
+
+ await browser.close();
};
const handleJob = async job => {
@@ -19,7 +41,7 @@ const handleJob = async job => {
}
});
- console.log({ participants })
+ console.log('Participants: ', participants.map(participant => participant.username));
return Bluebird.map(participants, participant => handleJobAsUser(job, participant));
};