feat(extraction): enhance thumbnail URL validation with strict HTTP 200 check

- Implement strict HTTP 200 validation (reject all other status codes)
- Add content-type validation (must be image/*)
- Add 10-second timeout protection with AbortController
- Thread progressCallback through all fetchImageAsBase64 calls
- Add detailed logging for each validation failure scenario
- Report validation failures via SSE progress callbacks

Unit tests:
- Add comprehensive test coverage for all validation scenarios
- Test HTTP status codes (200, 404, 403, 500, etc.)
- Test content-type validation (image/* vs text/html, etc.)
- Test timeout behavior with AbortController
- Test error handling (network errors, DNS, SSL, etc.)
- Test progress callback reporting

Integration tests:
- Add tests for complete extraction flow with URL failures
- Test fallback chain behavior (meta tags → poster → Instagram data → screenshot)
- Test real-world scenarios (redirects, query params, different post types)

Documentation:
- Enhanced JSDoc with validation criteria
- Added examples showing fallback behavior
- Documented all failure scenarios and their handling

All tests passing 
This commit is contained in:
Giancarmine Salucci
2025-12-21 05:33:48 +01:00
parent a04763c1da
commit 767b8a1b37
6 changed files with 1608 additions and 18 deletions

View File

@@ -8,7 +8,7 @@ import fs from 'fs';
export default defineConfig({
server: {
watch: {
ignored: ['**/debug_page.txt']
ignored: ['**/debug_page.txt', '**/.ssl/**', '**/docs/**', '**/secrets/**']
},
https: {
key: fs.readFileSync('./.ssl/localhost.key'),