Add detailed logging for nostrimg.com requests to diagnose 500 errors
**Motivations:**
- Diagnose why nostrimg.com returns 500 errors
- Verify if the code is causing the errors or if it's a server-side issue
- Log request and response details for troubleshooting
**Root causes:**
- Unknown: Could be code issue (wrong field name, headers, format) or server issue
- Need detailed logs to determine the cause
**Correctifs:**
- Added detailed request logging for nostrimg.com:
- URL, method, field name, filename, content type, file size
- All headers (Content-Type, Accept, User-Agent, Authorization)
- Added detailed response logging for nostrimg.com:
- Status code, status message, response headers
- Body preview (500 chars), body length, HTML detection
- Added comment about field name ('file') - some endpoints might need different names
**Evolutions:**
- None
**Pages affectées:**
- pages/api/nip95-upload.ts
This commit is contained in:
parent
2b5df250f6
commit
3740b93513
@ -73,7 +73,11 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
// Recreate FormData for each request (needed for redirects)
|
||||
const requestFormData = new FormData()
|
||||
const fileStream = fs.createReadStream(fileField.filepath)
|
||||
requestFormData.append('file', fileStream, {
|
||||
|
||||
// Use 'file' as field name (standard for NIP-95, but some endpoints may use different names)
|
||||
// Note: nostrimg.com might expect a different field name - if issues persist, try 'image' or 'upload'
|
||||
const fieldName = 'file'
|
||||
requestFormData.append(fieldName, fileStream, {
|
||||
filename: fileField.originalFilename || fileField.newFilename || 'upload',
|
||||
contentType: fileField.mimetype || 'application/octet-stream',
|
||||
})
|
||||
@ -91,6 +95,24 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
headers['Authorization'] = `Nostr ${authToken}`
|
||||
}
|
||||
|
||||
// Log request details for debugging (only for problematic endpoints)
|
||||
if (url.hostname.includes('nostrimg.com')) {
|
||||
console.log('NIP-95 proxy request to nostrimg.com:', {
|
||||
url: url.toString(),
|
||||
method: 'POST',
|
||||
fieldName,
|
||||
filename: fileField.originalFilename || fileField.newFilename || 'upload',
|
||||
contentType: fileField.mimetype || 'application/octet-stream',
|
||||
fileSize: fileField.size,
|
||||
headers: {
|
||||
'Content-Type': headers['content-type'],
|
||||
'Accept': headers['Accept'],
|
||||
'User-Agent': headers['User-Agent'],
|
||||
'Authorization': authToken ? '[present]' : '[absent]',
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
const requestOptions = {
|
||||
hostname: url.hostname,
|
||||
port: url.port || (isHttps ? 443 : 80),
|
||||
@ -136,6 +158,22 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
body += chunk
|
||||
})
|
||||
proxyResponse.on('end', () => {
|
||||
// Log response details for debugging problematic endpoints
|
||||
if (url.hostname.includes('nostrimg.com')) {
|
||||
console.log('NIP-95 proxy response from nostrimg.com:', {
|
||||
url: url.toString(),
|
||||
statusCode,
|
||||
statusMessage: proxyResponse.statusMessage,
|
||||
responseHeaders: {
|
||||
'content-type': proxyResponse.headers['content-type'],
|
||||
'content-length': proxyResponse.headers['content-length'],
|
||||
},
|
||||
bodyPreview: body.substring(0, 500),
|
||||
bodyLength: body.length,
|
||||
isHtml: body.trim().startsWith('<!DOCTYPE') || body.trim().startsWith('<html') || body.trim().startsWith('<!'),
|
||||
})
|
||||
}
|
||||
|
||||
resolve({
|
||||
statusCode: statusCode,
|
||||
statusMessage: proxyResponse.statusMessage || 'Internal Server Error',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user