aps-data-api
Version:
package for data extraction from APS company for omnimetic project
134 lines (126 loc) • 3.93 kB
text/typescript
import fs from 'fs';
import path from 'path';
import { BrowserInterface } from '../../../src/typings';
import { GetServiceAccountsRequestHandler } from './get-service-accounts-request-handler';
const workFlowConfigFilePath = path.join(
'src',
'services',
'workflow',
'workflow.json',
);
const apsWorkflowJson = JSON.parse(
fs.readFileSync(workFlowConfigFilePath).toString(),
);
export class GetServiceAccountsRequestHandlerImpl
implements GetServiceAccountsRequestHandler
{
// tslint:disable-next-line: no-empty
async type() {}
async waitForResponse(
urlOrPredicate:
| string
| ((res: BrowserInterface.HTTPResponse) => boolean | Promise<boolean>),
options?: {
timeout?: number;
},
) {
try {
if (
urlOrPredicate === apsWorkflowJson.getServiceAccounts.userDetailsUrl
) {
const data = {
Details: {
profileData: {
MainPersonName: 'Naval,Ravi',
},
AccountDetails: {
getAccountDetailsResponse: {
getAccountDetailsRes: {
getPersonDetails: {
accountID: '816567445',
results: [
{
personID: '0350831000',
personName: 'Naval,Ravi',
accountRelationship: 'JAH-SP',
},
{
personID: '0967061000',
personName: 'Naval,George',
accountRelationship: 'MAIN',
},
{
personID: '0967061000',
personName: 'Naval,George',
accountRelationship: 'MAIN',
},
],
},
getSASPListByAccountID: {
premiseDetailsList: [
{
premiseID: '7123467556',
sASPDetails: [
{
sPID: '8164327863',
sPType: 'PROD',
meterBadgeNumber: '1143088',
sAID: '',
sACISDiv: '',
isEligibleDemandRate: 'true',
totalElectricChargeAmount: '',
},
{
sPID: '8161046816',
sPType: 'RES',
meterBadgeNumber: '1211831',
sAID: '7139371525',
sACISDiv: 'APS',
isEligibleDemandRate: 'true',
totalElectricChargeAmount: '128.32',
},
],
},
],
},
},
},
},
},
};
return Promise.resolve(data);
}
} catch (err) {
return Promise.reject(err);
}
}
async waitForSelector(
selector: string,
options?: {
visible?: boolean;
hidden?: boolean;
timeout?: number;
},
) {
try {
if (selector === apsWorkflowJson.getServiceAccounts.addressDataSelector) {
return Promise.resolve(null);
}
} catch (err) {
return Promise.reject(err);
}
}
async $eval<ReturnType>(
selector: string,
pageFunction: (
element: Element,
...args: unknown[]
) => ReturnType | Promise<ReturnType>,
) {
if (selector === apsWorkflowJson.getServiceAccounts.addressDataSelector) {
const data: Awaited<any> =
'Mailing address416115 N JW Marriot RD # 120-156, SCOTTSDALE, ARIZONA,85641, USA';
return Promise.resolve(data);
}
}
}