-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
priority: criticalP0 - Do first, blocking or major tech debtP0 - Do first, blocking or major tech debtrefactorCode refactoringCode refactoring
Description
Problem
getRequestPaths() function is duplicated identically in two files:
handlers/resource.js:41-48
function getRequestPaths(request) {
const urlPath = request.url.split('?')[0];
const storagePath = getEffectiveUrlPath(request);
const resourceUrl = `${request.protocol}://${request.hostname}${urlPath}`;
return { urlPath, storagePath, resourceUrl };
}
handlers/container.js:15-22
function getRequestPaths(request) {
const urlPath = request.url.split('?')[0];
const storagePath = getEffectiveUrlPath(request);
const resourceUrl = `${request.protocol}://${request.hostname}${urlPath}`;
return { urlPath, storagePath, resourceUrl };
}
Similar path extraction logic also exists in auth/middleware.js:23, 50-51.
Proposed Solution
Create shared utility:
// src/utils/request-path.js
import { getEffectiveUrlPath } from './url.js';
export function getRequestPaths(request) {
const urlPath = request.url.split('?')[0];
const storagePath = getEffectiveUrlPath(request);
const resourceUrl = `${request.protocol}://${request.hostname}${urlPath}`;
return { urlPath, storagePath, resourceUrl };
}
Then import in both handlers:
import { getRequestPaths } from '../utils/request-path.js';
Benefits
- DRY - single source of truth
- Easier to modify path logic in one place
- Reduces risk of divergent implementations
Files Affected
- Create:
src/utils/request-path.js - Modify:
src/handlers/resource.js - Modify:
src/handlers/container.js - Consider:
src/auth/middleware.js
Priority
P0 - Critical code duplication
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
priority: criticalP0 - Do first, blocking or major tech debtP0 - Do first, blocking or major tech debtrefactorCode refactoringCode refactoring