@accounter/israeli-vat-scraper
Version:
Scraper app for fetching Israeli VAT data
45 lines (35 loc) • 1.43 kB
text/typescript
import type { Page } from 'puppeteer';
import { waitForSelectorPlus } from '../utils/page-util.js';
import type { Logger, UserCredentials } from '../utils/types.js';
const _creds: UserCredentials = {
vatNumber: '',
userCode: '',
userPass: '',
};
export const getEnvCredentials = (): UserCredentials => {
return {
vatNumber: process.env['VAT_NUM'] as string,
userCode: process.env['USER_CODE'] as string,
userPass: process.env['USER_PASS'] as string,
};
};
export const updateCredentials = (credentials: UserCredentials): void => {
_creds.vatNumber = credentials.vatNumber;
_creds.userCode = credentials.userCode;
_creds.userPass = credentials.userPass;
};
export const login = async (page: Page, logger: Logger): Promise<void> => {
try {
await page.goto('https://www.misim.gov.il/emdvhmfrt/wLogOnMaam.aspx', {
waitUntil: ['networkidle2', 'domcontentloaded'],
});
await waitForSelectorPlus(page, '#LogonMaam1_EmTwbCtlLogonMaam_BtnSubmit', logger);
await page.type('#LogonMaam1_EmTwbCtlLogonMaam_TxtMisOsek', _creds.vatNumber);
await page.type('#LogonMaam1_EmTwbCtlLogonMaam_TxtKodUser', _creds.userCode);
await page.type('#LogonMaam1_EmTwbCtlLogonMaam_TxtPassword', _creds.userPass);
await page.click('#LogonMaam1_EmTwbCtlLogonMaam_BtnSubmit');
return;
} catch (e) {
throw new Error(`login - ${(e as Error)?.message || e}`, { cause: e });
}
};