mirror of
https://github.com/Lissy93/web-check.git
synced 2025-06-01 16:06:50 +02:00
Updates middleware, with both AWS and Express support
This commit is contained in:
parent
1630f2a050
commit
3695c82472
@ -2,37 +2,82 @@ const normalizeUrl = (url) => {
|
|||||||
return url.startsWith('http') ? url : `https://${url}`;
|
return url.startsWith('http') ? url : `https://${url}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const headers = {
|
||||||
|
'Access-Control-Allow-Origin': process.env.API_CORS_ORIGIN || '*',
|
||||||
|
'Access-Control-Allow-Credentials': true,
|
||||||
|
'Content-Type': 'application/json;charset=UTF-8',
|
||||||
|
};
|
||||||
|
|
||||||
const commonMiddleware = (handler) => {
|
const commonMiddleware = (handler) => {
|
||||||
return async (event, context, callback) => {
|
// Vercel
|
||||||
const queryParams = event.queryStringParameters || event.query || {};
|
const vercelHandler = async (request, response) => {
|
||||||
|
const queryParams = request.query || {};
|
||||||
const rawUrl = queryParams.url;
|
const rawUrl = queryParams.url;
|
||||||
|
|
||||||
if (!rawUrl) {
|
if (!rawUrl) {
|
||||||
callback(null, {
|
return response.status(500).json({ error: 'No URL specified' });
|
||||||
statusCode: 500,
|
|
||||||
body: JSON.stringify({ error: 'No URL specified' }),
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const url = normalizeUrl(rawUrl);
|
const url = normalizeUrl(rawUrl);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await handler(url, event, context);
|
const handlerResponse = await handler(url, request);
|
||||||
if (response.body && response.statusCode) {
|
if (handlerResponse.body && handlerResponse.statusCode) {
|
||||||
callback(null, response);
|
response.status(handlerResponse.statusCode).json(handlerResponse.body);
|
||||||
|
} else {
|
||||||
|
response.status(200).json(
|
||||||
|
typeof handlerResponse === 'object' ? handlerResponse : JSON.parse(handlerResponse)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
response.status(500).json({ error: error.message });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Netlify
|
||||||
|
const netlifyHandler = async (event, context, callback) => {
|
||||||
|
const queryParams = event.queryStringParameters || event.query || {};
|
||||||
|
const rawUrl = queryParams.url;
|
||||||
|
|
||||||
|
if (!rawUrl) {
|
||||||
|
callback(null, {
|
||||||
|
statusCode: 500,
|
||||||
|
body: JSON.stringify({ error: 'No URL specified' }),
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const url = normalizeUrl(rawUrl);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const handlerResponse = await handler(url, event, context);
|
||||||
|
if (handlerResponse.body && handlerResponse.statusCode) {
|
||||||
|
callback(null, handlerResponse);
|
||||||
} else {
|
} else {
|
||||||
callback(null, {
|
callback(null, {
|
||||||
statusCode: 200,
|
statusCode: 200,
|
||||||
body: typeof response === 'object' ? JSON.stringify(response) : response,
|
body: typeof handlerResponse === 'object' ? JSON.stringify(handlerResponse) : handlerResponse,
|
||||||
|
headers,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
callback(null, {
|
callback(null, {
|
||||||
statusCode: 500,
|
statusCode: 500,
|
||||||
body: JSON.stringify({ error: error.message }),
|
body: JSON.stringify({ error: error.message }),
|
||||||
|
headers,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let platform;
|
||||||
|
if (process.env.PLATFORM === 'vercel' || process.env.VERCEL) {
|
||||||
|
platform = 'vercel';
|
||||||
|
} else {
|
||||||
|
platform = 'netlify';
|
||||||
|
}
|
||||||
|
return platform === 'vercel' ? vercelHandler : netlifyHandler;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = commonMiddleware;
|
module.exports = commonMiddleware;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user