function matchHttpPattern(request, patterns) {
for (const pattern of patterns) {
if (matches(request, pattern)) {
return pattern.dryRun; // Return the dryRun flag if the pattern matches
}
}
return null; // No match found
}
function matches(request, pattern) {
// Simple pattern matching logic (can be extended)
if (pattern.method && request.method !== pattern.method) return false;
if (pattern.url && request.url !== pattern.url) return false;
if (pattern.headers) {
for (const header in pattern.headers) {
if (request.headers && request.headers[header] !== pattern.headers[header]) return false;
}
}
return true;
}
//Example Usage
const patterns = [
{
method: 'GET',
url: '/api/users',
dryRun: true,
headers: {
'Authorization': 'Bearer token'
}
},
{
method: 'POST',
url: '/api/products',
dryRun: false,
headers: {
'Content-Type': 'application/json'
}
},
{
method: 'GET',
url: '/health',
dryRun: true
}
];
// Simulate an HTTP request
const request1 = { method: 'GET', url: '/api/users', headers: { 'Authorization': 'Bearer token' } };
const request2 = { method: 'POST', url: '/api/products', headers: { 'Content-Type': 'application/json' } };
const request3 = { method: 'GET', url: '/health' };
const request4 = { method: 'GET', url: '/api/users', headers: { 'Authorization': 'Bearer another_token' } };
console.log("Request 1 matches:", matchHttpPattern(request1, patterns)); // Output: true
console.log("Request 2 matches:", matchHttpPattern(request2, patterns)); // Output: false
console.log("Request 3 matches:", matchHttpPattern(request3, patterns)); // Output: true
console.log("Request 4 matches:", matchHttpPattern(request4, patterns)); // Output: false
Add your comment