fix(ancpi): parse Angular ng-click downloadFile pattern for document IDs
This commit is contained in:
@@ -546,10 +546,14 @@ export class EpayClient {
|
|||||||
const docPattern1 =
|
const docPattern1 =
|
||||||
/"idDocument"\s*:\s*(\d+)[\s\S]*?"nume"\s*:\s*"([^"]+)"[\s\S]*?"dataDocument"\s*:\s*"([^"]+)"[\s\S]*?"linkDownload"\s*:\s*"([^"]*)"/g;
|
/"idDocument"\s*:\s*(\d+)[\s\S]*?"nume"\s*:\s*"([^"]+)"[\s\S]*?"dataDocument"\s*:\s*"([^"]+)"[\s\S]*?"linkDownload"\s*:\s*"([^"]*)"/g;
|
||||||
|
|
||||||
// Pattern 2: DownloadFile links in HTML
|
// Pattern 2: DownloadFile links in HTML (regular hrefs)
|
||||||
const docPattern2 =
|
const docPattern2 =
|
||||||
/DownloadFile\.action\?typeD=4&(?:amp;)?id=(\d+)/g;
|
/DownloadFile\.action\?typeD=4&(?:amp;)?id=(\d+)/g;
|
||||||
|
|
||||||
|
// Pattern 2b: Angular ng-click="downloadFile($event, 4, ID, '')"
|
||||||
|
const docPattern2b =
|
||||||
|
/downloadFile\s*\(\s*\$event\s*,\s*4\s*,\s*(\d+)/g;
|
||||||
|
|
||||||
// Pattern 3: Look for solutii JSON array
|
// Pattern 3: Look for solutii JSON array
|
||||||
const solutiiMatch = html.match(/solutii['"]\s*:\s*(\[[\s\S]*?\])/);
|
const solutiiMatch = html.match(/solutii['"]\s*:\s*(\[[\s\S]*?\])/);
|
||||||
|
|
||||||
@@ -571,10 +575,19 @@ export class EpayClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// If pattern 1 didn't find anything, try pattern 2 (DownloadFile links)
|
// If pattern 1 didn't find anything, try pattern 2/2b (DownloadFile links / Angular ng-click)
|
||||||
if (documents.length === 0) {
|
if (documents.length === 0) {
|
||||||
|
// Combine results from both patterns
|
||||||
|
const allDocIds = new Set<number>();
|
||||||
|
|
||||||
while ((docMatch = docPattern2.exec(html)) !== null) {
|
while ((docMatch = docPattern2.exec(html)) !== null) {
|
||||||
const docId = parseInt(docMatch[1] ?? "0", 10);
|
allDocIds.add(parseInt(docMatch[1] ?? "0", 10));
|
||||||
|
}
|
||||||
|
while ((docMatch = docPattern2b.exec(html)) !== null) {
|
||||||
|
allDocIds.add(parseInt(docMatch[1] ?? "0", 10));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const docId of allDocIds) {
|
||||||
if (docId > 0 && !documents.some((d) => d.idDocument === docId)) {
|
if (docId > 0 && !documents.some((d) => d.idDocument === docId)) {
|
||||||
documents.push({
|
documents.push({
|
||||||
idDocument: docId,
|
idDocument: docId,
|
||||||
|
|||||||
Reference in New Issue
Block a user