11// @ts -nocheck
22import { renderToStream } from '@react-pdf/renderer'
3- import AdmZip from 'adm-zip'
43import crypto from 'crypto'
54import ExcelJS from 'exceljs'
65import { getSession } from 'next-auth/client'
6+ import yazl from 'yazl'
77import { client } from '~api/client-api'
88import ApplicationDocument from '~components/pdfs/ApplicationDocument'
99import { Application , Espace , UsersPermissionsUser } from '~typings/api'
@@ -375,7 +375,7 @@ const SelectedCampaignApplications = async (req, res) => {
375375 return
376376 }
377377
378- const zip = new AdmZip ( )
378+ const zip = new yazl . ZipFile ( )
379379 const { data : campaign } = await client . campaigns . campaignsDetail ( campaignId )
380380
381381 try {
@@ -451,19 +451,20 @@ const SelectedCampaignApplications = async (req, res) => {
451451 const subFolder = `${ application ?. espace ?. name } - ${ disponibilityLabel } - ${ refLabel } - ${ structureName } `
452452
453453 const streamBuffer = await getBufferFromStream ( stream )
454- await zip . addFile (
454+ await zip . addBuffer (
455+ Buffer . from ( streamBuffer ) ,
455456 `${ name } /${ subFolder } /${ refLabel } - Candidature.pdf` ,
456- streamBuffer ,
457457 )
458458
459459 if ( application ?. creation_file ?. [ 0 ] ?. url ) {
460+ console . log ( application ?. creation_file ?. [ 0 ] ?. url )
460461 const creationFile = await fetch ( application ?. creation_file ?. [ 0 ] ?. url )
461462 // @ts -ignore
462463 const creationFileArrayBuffer = await creationFile . buffer ( )
463464
464- await zip . addFile (
465+ await zip . addBuffer (
466+ Buffer . from ( creationFileArrayBuffer ) ,
465467 `${ name } /${ subFolder } /${ refLabel } - Dossier artistique.pdf` ,
466- creationFileArrayBuffer ,
467468 )
468469 }
469470 }
@@ -478,13 +479,16 @@ const SelectedCampaignApplications = async (req, res) => {
478479 withAllApplications ,
479480 )
480481
481- await zip . addFile (
482- ` ${ campaign ?. title } candidatures.xlsx` ,
482+ console . log ( 'Adding candidatures.xlsx' )
483+ await zip . addBuffer (
483484 applicationsSpreadsheetBuffer ,
485+ `${ campaign ?. title } candidatures.xlsx` ,
484486 )
485- await zip . addFile (
486- `${ campaign ?. title } récap ${ all ? 'complet' : 'présélection' } .xlsx` ,
487+
488+ console . log ( 'Adding récap.xlsx' )
489+ await zip . addBuffer (
487490 summarySpreadsheetBuffer ,
491+ `${ campaign ?. title } récap ${ all ? 'complet' : 'présélection' } .xlsx` ,
488492 )
489493 } catch ( error ) {
490494 console . error ( error )
@@ -494,14 +498,22 @@ const SelectedCampaignApplications = async (req, res) => {
494498 return
495499 }
496500
497- const zipBuffer = zip . toBuffer ( )
501+ console . log ( 'Adding zip' )
498502
499503 res . setHeader ( 'Content-Type' , 'application/zip' )
500504 res . setHeader (
501505 'Content-Disposition' ,
502506 'attachment; filename=' + formatCampaignZipName ( campaign ) ,
503507 )
504- res . send ( zipBuffer )
508+
509+ zip . end ( )
510+
511+ const zipStream = zip . outputStream
512+ zipStream . pipe ( res )
513+
514+ return new Promise ( ( resolve ) => {
515+ zipStream . on ( 'end' , resolve )
516+ } )
505517}
506518
507519export default SelectedCampaignApplications
0 commit comments