| |
| |
| |
| |
| |
|
|
| const express = require('express'); |
| const axios = require('axios'); |
| const app = express(); |
|
|
| app.use(express.json({ limit: '10mb' })); |
|
|
| const HF_SPACE_URL = 'https://huggingface.co/spaces/Raiff1982/codette-ai'; |
|
|
| |
| app.all('*', async (req, res) => { |
| try { |
| const targetUrl = HF_SPACE_URL + req.originalUrl; |
|
|
| const response = await axios({ |
| method: req.method, |
| url: targetUrl, |
| headers: { |
| ...req.headers, |
| host: 'huggingface.co', |
| }, |
| data: req.body, |
| validateStatus: () => true, |
| responseType: 'stream', |
| maxRedirects: 5, |
| }); |
|
|
| |
| Object.entries(response.headers).forEach(([key, value]) => { |
| if (key.toLowerCase() !== 'x-frame-options') { |
| res.setHeader(key, value); |
| } |
| }); |
|
|
| |
| res.setHeader('Access-Control-Allow-Origin', '*'); |
| res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); |
| res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); |
|
|
| res.status(response.status); |
| response.data.pipe(res); |
| } catch (err) { |
| console.error('Proxy error:', err.message); |
| res.status(500).json({ error: err.message }); |
| } |
| }); |
|
|
| const PORT = process.env.PORT || 3000; |
| app.listen(PORT, () => console.log(`Proxy running on port ${PORT}`)); |
|
|