new(all): #327 OPEN AS web automation.
This commit is contained in:
parent
de84283b5d
commit
4d30d5988c
2 changed files with 22 additions and 16 deletions
|
@ -237,6 +237,8 @@ export class GBVMService extends GBService {
|
||||||
|
|
||||||
${code}
|
${code}
|
||||||
|
|
||||||
|
await wa.closeHandles({pid: pid});
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
`;
|
`;
|
||||||
|
@ -406,15 +408,7 @@ export class GBVMService extends GBService {
|
||||||
throw new Error(`BASIC RUNTIME ERR: ${error.message ? error.message : error}\n Stack:${error.stack}`);
|
throw new Error(`BASIC RUNTIME ERR: ${error.message ? error.message : error}\n Stack:${error.stack}`);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
||||||
// Releases previous allocated OPEN semaphores.
|
|
||||||
|
|
||||||
let keys = Object.keys(GBServer.globals.webSessions);
|
|
||||||
for (let i = 0; i < keys.length; i++) {
|
|
||||||
const session = GBServer.globals.webSessions[keys[i]];
|
|
||||||
if (session.pid === pid) {
|
|
||||||
session.semaphore.release();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -114,6 +114,18 @@ export class WebAutomationServices {
|
||||||
this.debugWeb = this.min.core.getParam<boolean>(this.min.instance, 'Debug Web Automation', false);
|
this.debugWeb = this.min.core.getParam<boolean>(this.min.instance, 'Debug Web Automation', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async closeHandles({pid}){
|
||||||
|
// Releases previous allocated OPEN semaphores.
|
||||||
|
|
||||||
|
let keys = Object.keys(GBServer.globals.webSessions);
|
||||||
|
for (let i = 0; i < keys.length; i++) {
|
||||||
|
const session = GBServer.globals.webSessions[keys[i]];
|
||||||
|
if (session.pid === pid) {
|
||||||
|
session.semaphore.release();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the page object.
|
* Returns the page object.
|
||||||
*
|
*
|
||||||
|
@ -128,11 +140,11 @@ export class WebAutomationServices {
|
||||||
|
|
||||||
// Try to find an existing handle.
|
// Try to find an existing handle.
|
||||||
|
|
||||||
let session = GBServer.globals.webSessions[sessionName];
|
let session;
|
||||||
let keys = Object.keys(GBServer.globals.webSessions);
|
let keys = Object.keys(GBServer.globals.webSessions);
|
||||||
for (let i = 0; i < keys.length; i++) {
|
for (let i = 0; i < keys.length; i++) {
|
||||||
const session = GBServer.globals.webSessions[keys[i]];
|
if (GBServer.globals.webSessions[keys[i]].sessionName === sessionName) {
|
||||||
if (session.sessionName === sessionName) {
|
session = GBServer.globals.webSessions[keys[i]];
|
||||||
handle = keys[i];
|
handle = keys[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -144,8 +156,8 @@ export class WebAutomationServices {
|
||||||
if (session) {
|
if (session) {
|
||||||
const [value, release] = await session.semaphore.acquire();
|
const [value, release] = await session.semaphore.acquire();
|
||||||
try {
|
try {
|
||||||
GBServer.globals.webSessions[sessionName].release = release;
|
GBServer.globals.webSessions[handle].release = release;
|
||||||
page = GBServer.globals.webSessions[url.substr(1)];
|
page = session.page;
|
||||||
} catch {
|
} catch {
|
||||||
release();
|
release();
|
||||||
}
|
}
|
||||||
|
@ -156,7 +168,7 @@ export class WebAutomationServices {
|
||||||
let browser;
|
let browser;
|
||||||
if (!page) {
|
if (!page) {
|
||||||
browser = await createBrowser(null);
|
browser = await createBrowser(null);
|
||||||
page = (await this.browser.pages())[0];
|
page = (await browser.pages())[0];
|
||||||
if (username || password) {
|
if (username || password) {
|
||||||
await page.authenticate({ pid, username: username, password: password });
|
await page.authenticate({ pid, username: username, password: password });
|
||||||
}
|
}
|
||||||
|
@ -169,7 +181,7 @@ export class WebAutomationServices {
|
||||||
// A new web session is being created.
|
// A new web session is being created.
|
||||||
|
|
||||||
handle = WebAutomationServices.cyrb53(this.min.botId + url);
|
handle = WebAutomationServices.cyrb53(this.min.botId + url);
|
||||||
GBServer.globals.webSessions[handle] = {};
|
GBServer.globals.webSessions[handle] = session= {};
|
||||||
GBServer.globals.webSessions[handle].sessionName = sessionName;
|
GBServer.globals.webSessions[handle].sessionName = sessionName;
|
||||||
GBServer.globals.webSessions[handle].pid = pid;
|
GBServer.globals.webSessions[handle].pid = pid;
|
||||||
GBServer.globals.webSessions[handle].page = page;
|
GBServer.globals.webSessions[handle].page = page;
|
||||||
|
|
Loading…
Add table
Reference in a new issue