|
const baseUrl = getExternalUrl(process.env.SPACE_ID); |
|
const openaiKey = process.env.OPENAI_KEY; |
|
const proxyKey = process.env.PROXY_KEY; |
|
const express = require('express'); |
|
|
|
const proxy = require("express-http-proxy"); |
|
const fs = require("fs"); |
|
const FormData = require("form-data"); |
|
const port = 7860; |
|
const app = express(); |
|
|
|
|
|
const bodyParser = require('body-parser'); |
|
const axios = require('axios'); |
|
const multer = require('multer'); |
|
|
|
|
|
|
|
app.use(bodyParser.json()); |
|
app.use(bodyParser.urlencoded({ extended: true })); |
|
|
|
|
|
const storage = multer.memoryStorage(); |
|
const upload = multer({ storage: storage }); |
|
|
|
|
|
function authenticateProxyKey(req, res, next) { |
|
const providedKey = req.headers['auro']; |
|
|
|
if (providedKey && providedKey === proxyKey) { |
|
next(); |
|
} else { |
|
res.status(401).json({ error: 'Unauthorized' }); |
|
} |
|
} |
|
|
|
|
|
app.post('/upload', authenticateProxyKey, upload.single('file'), async (req, res) => { |
|
try { |
|
|
|
const fileData = req.file; |
|
const formData = req.body; |
|
|
|
|
|
const apiKey = process.env.OPENAI_KEY; |
|
|
|
|
|
const whisperFormData = new FormData(); |
|
whisperFormData.append('file', fileData.buffer, { filename: fileData.originalname }); |
|
|
|
|
|
for (const key in formData) { |
|
whisperFormData.append(key, formData[key]); |
|
} |
|
|
|
|
|
const whisperResponse = await axios.post('https://api.openai.com/v1/audio/transcriptions', whisperFormData, { |
|
headers: { |
|
'Authorization': `Bearer ${apiKey}`, |
|
|
|
...whisperFormData.getHeaders(), |
|
}, |
|
}); |
|
|
|
console.log('Whisper API Response:', whisperResponse.data); |
|
|
|
|
|
res.status(whisperResponse.status).send(whisperResponse.data); |
|
|
|
} catch (error) { |
|
console.error(error); |
|
res.status(500).json({ error: 'Internal Server Error' }); |
|
} |
|
}); |
|
|
|
|
|
|
|
|
|
function getExternalUrl(spaceId) { |
|
try { |
|
const [username, spacename] = spaceId.split('/'); |
|
return `https://${username}-${spacename.replace(/_/g, '-')}.hf.space/api/v1`; |
|
} catch (e) { |
|
return ''; |
|
} |
|
} |
|
|
|
app.get('/', (req, res) => { |
|
|
|
}); |
|
|
|
app.listen(port, () => { |
|
console.log(`Reverse proxy server running on ${baseUrl}`); |
|
}); |
|
|
|
|