Skip to content

Refactor: Extract duplicate getRequestPaths() to shared utility #116

@melvincarvalho

Description

@melvincarvalho

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: criticalP0 - Do first, blocking or major tech debtrefactorCode refactoring

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions