Spaces:
Running
Running
Update app.js
Browse files
app.js
CHANGED
@@ -84,6 +84,9 @@ function formatModelName(model) {
|
|
84 |
return model;
|
85 |
}
|
86 |
|
|
|
|
|
|
|
87 |
async function handleRequest(req, res) {
|
88 |
if (req.method === 'OPTIONS') {
|
89 |
handleOptions(res);
|
@@ -135,7 +138,7 @@ async function handleRequest(req, res) {
|
|
135 |
body: JSON.stringify(requestBody)
|
136 |
});
|
137 |
|
138 |
-
console.log('Response headers:', response.headers.raw());
|
139 |
|
140 |
res.status(response.status);
|
141 |
|
@@ -150,29 +153,29 @@ async function handleRequest(req, res) {
|
|
150 |
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, x-api-key, anthropic-version, model');
|
151 |
|
152 |
const contentEncoding = response.headers.get('content-encoding');
|
153 |
-
console.log('Content-Encoding:', contentEncoding);
|
154 |
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
console.error('Gunzip error:', err);
|
159 |
-
res.status(500).json({
|
160 |
-
type: "error",
|
161 |
-
error: {
|
162 |
-
type: "decompression_error",
|
163 |
-
message: "Failed to decompress the response"
|
164 |
-
}
|
165 |
-
});
|
166 |
-
});
|
167 |
|
168 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
} else {
|
170 |
-
|
171 |
}
|
172 |
|
|
|
173 |
logRequest(req, response.status, `Request forwarded successfully for model: ${model}`);
|
174 |
} catch (error) {
|
175 |
-
console.error('
|
176 |
res.status(500).json({
|
177 |
type: "error",
|
178 |
error: {
|
@@ -185,6 +188,7 @@ async function handleRequest(req, res) {
|
|
185 |
}
|
186 |
|
187 |
|
|
|
188 |
function handleOptions(res) {
|
189 |
res.status(204);
|
190 |
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
|
84 |
return model;
|
85 |
}
|
86 |
|
87 |
+
const { promisify } = require('util');
|
88 |
+
const gunzip = promisify(zlib.gunzip);
|
89 |
+
|
90 |
async function handleRequest(req, res) {
|
91 |
if (req.method === 'OPTIONS') {
|
92 |
handleOptions(res);
|
|
|
138 |
body: JSON.stringify(requestBody)
|
139 |
});
|
140 |
|
141 |
+
console.log('Response headers:', response.headers.raw());
|
142 |
|
143 |
res.status(response.status);
|
144 |
|
|
|
153 |
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, x-api-key, anthropic-version, model');
|
154 |
|
155 |
const contentEncoding = response.headers.get('content-encoding');
|
156 |
+
console.log('Content-Encoding:', contentEncoding);
|
157 |
|
158 |
+
// 读取整个响应体
|
159 |
+
const buffer = await response.buffer();
|
160 |
+
console.log('Response body length:', buffer.length);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
|
162 |
+
let data;
|
163 |
+
if (contentEncoding === 'gzip') {
|
164 |
+
try {
|
165 |
+
data = await gunzip(buffer);
|
166 |
+
} catch (error) {
|
167 |
+
console.error('Gunzip error:', error);
|
168 |
+
console.log('First 100 bytes of response:', buffer.slice(0, 100).toString('hex'));
|
169 |
+
throw new Error('Failed to decompress the response');
|
170 |
+
}
|
171 |
} else {
|
172 |
+
data = buffer;
|
173 |
}
|
174 |
|
175 |
+
res.send(data);
|
176 |
logRequest(req, response.status, `Request forwarded successfully for model: ${model}`);
|
177 |
} catch (error) {
|
178 |
+
console.error('Request error:', error);
|
179 |
res.status(500).json({
|
180 |
type: "error",
|
181 |
error: {
|
|
|
188 |
}
|
189 |
|
190 |
|
191 |
+
|
192 |
function handleOptions(res) {
|
193 |
res.status(204);
|
194 |
res.setHeader('Access-Control-Allow-Origin', '*');
|