Spaces:
Build error
Build error
| import { NextRequest, NextResponse } from 'next/server'; | |
| declare global { | |
| var activeSandbox: any; | |
| } | |
| export async function POST(request: NextRequest) { | |
| try { | |
| if (!global.activeSandbox) { | |
| return NextResponse.json({ | |
| success: false, | |
| error: 'No active sandbox' | |
| }, { status: 400 }); | |
| } | |
| console.log('[create-zip] Creating project zip...'); | |
| // Create zip file in sandbox | |
| const result = await global.activeSandbox.runCode(` | |
| import zipfile | |
| import os | |
| import json | |
| os.chdir('/home/user/app') | |
| # Create zip file | |
| with zipfile.ZipFile('/tmp/project.zip', 'w', zipfile.ZIP_DEFLATED) as zipf: | |
| for root, dirs, files in os.walk('.'): | |
| # Skip node_modules and .git | |
| dirs[:] = [d for d in dirs if d not in ['node_modules', '.git', '.next', 'dist']] | |
| for file in files: | |
| file_path = os.path.join(root, file) | |
| arcname = os.path.relpath(file_path, '.') | |
| zipf.write(file_path, arcname) | |
| # Get file size | |
| file_size = os.path.getsize('/tmp/project.zip') | |
| print(f" Created project.zip ({file_size} bytes)") | |
| `); | |
| // Read the zip file and convert to base64 | |
| const readResult = await global.activeSandbox.runCode(` | |
| import base64 | |
| with open('/tmp/project.zip', 'rb') as f: | |
| content = f.read() | |
| encoded = base64.b64encode(content).decode('utf-8') | |
| print(encoded) | |
| `); | |
| const base64Content = readResult.logs.stdout.join('').trim(); | |
| // Create a data URL for download | |
| const dataUrl = `data:application/zip;base64,${base64Content}`; | |
| return NextResponse.json({ | |
| success: true, | |
| dataUrl, | |
| fileName: 'e2b-project.zip', | |
| message: 'Zip file created successfully' | |
| }); | |
| } catch (error) { | |
| console.error('[create-zip] Error:', error); | |
| return NextResponse.json({ | |
| success: false, | |
| error: (error as Error).message | |
| }, { status: 500 }); | |
| } | |
| } |