srp-data-api
Advanced tools
Comparing version 1.0.4 to 1.0.5
@@ -1,1 +0,5 @@ | ||
{} | ||
{ | ||
"puppeteer": { | ||
"defaultNavigationTimeout": 30000 | ||
} | ||
} |
{ | ||
"name": "srp-data-api", | ||
"version": "1.0.4", | ||
"version": "1.0.5", | ||
"description": "package for data extraction from SRP company for getting utility data", | ||
@@ -5,0 +5,0 @@ "engines": { |
@@ -0,1 +1,2 @@ | ||
import config from 'config'; | ||
import path from 'path'; | ||
@@ -18,25 +19,41 @@ import puppeteer from 'puppeteer'; | ||
async login(payload: GetDataPayload, vgsProxyArgument: string[]) { | ||
this.browser = await puppeteer.launch({ | ||
args: vgsProxyArgument, | ||
}); | ||
const { | ||
companyUrl, | ||
dataExtractionError, | ||
passwordSelector, | ||
usernameSelector, | ||
} = this.config.login; | ||
this.page = await this.browser.newPage(); | ||
const page = this.page; | ||
try { | ||
this.browser = await puppeteer.launch({ | ||
args: vgsProxyArgument, | ||
}); | ||
const { password, username } = payload; | ||
this.page = await this.browser.newPage(); | ||
const page = this.page; | ||
const { companyUrl, passwordSelector, usernameSelector } = | ||
this.config.login; | ||
page.setDefaultNavigationTimeout( | ||
config.get('puppeteer.defaultNavigationTimeout'), | ||
); | ||
await page.goto(companyUrl, { | ||
waitUntil: 'networkidle0', | ||
}); | ||
const { password, username } = payload; | ||
await page.waitForSelector(usernameSelector); | ||
await page.goto(companyUrl, { | ||
waitUntil: 'networkidle0', | ||
}); | ||
await this.typeValueForField(usernameSelector, username); | ||
await page.waitForSelector(usernameSelector); | ||
await this.typeValueForField(passwordSelector, password); | ||
await this.typeValueForField(usernameSelector, username); | ||
await this.click('Enter'); | ||
await this.typeValueForField(passwordSelector, password); | ||
await this.click('Enter'); | ||
} catch (err) { | ||
await this.browser.close(); | ||
return Promise.reject( | ||
new Errors.DataExtractionError(`${dataExtractionError}: ${err}`), | ||
); | ||
} | ||
} | ||
@@ -75,2 +92,4 @@ | ||
); | ||
} finally { | ||
await this.browser.close(); | ||
} | ||
@@ -125,2 +144,4 @@ } | ||
); | ||
} finally { | ||
await this.browser.close(); | ||
} | ||
@@ -127,0 +148,0 @@ } |
{ | ||
"login": { | ||
"companyUrl": "https://myaccount.srpnet.com/power/login", | ||
"dataExtractionError": "[SRP] Failed to extract data", | ||
"invalidMessage": "The user name or password is incorrect.", | ||
@@ -5,0 +6,0 @@ "loginXhrUrl": "https://myaccount.srpnet.com/myaccountapi/api/login/authorize", |
@@ -7,2 +7,6 @@ import { ElementHandle, KeyInput, WaitForOptions } from 'puppeteer'; | ||
export interface Browser { | ||
close(): Promise<void>; | ||
} | ||
export interface HTTPResponse { | ||
@@ -58,2 +62,4 @@ url(): string; | ||
): Promise<ElementHandle | null>; | ||
setDefaultNavigationTimeout(timeout: number): void; | ||
} |
@@ -9,2 +9,5 @@ import { BrowserInterface } from '../../../src/typings'; | ||
} | ||
close() { | ||
return Promise.resolve(); | ||
} | ||
} |
@@ -85,2 +85,6 @@ import fs from 'fs'; | ||
} | ||
setDefaultNavigationTimeout(timeout: number) { | ||
return Promise.resolve(); | ||
} | ||
} |
121761
2441