| 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}`); |
| }); |
|
|
|
|