UNPKG

@push.rocks/smartrequest

Version:

A module for modern HTTP/HTTPS requests with support for form data, file uploads, JSON, binary data, streams, and more.

46 lines 3.2 kB
import * as types from './types.js'; /** * Abstract Core Request class that defines the interface for all HTTP/HTTPS requests */ export class CoreRequest { /** * Tests if a URL is a unix socket */ static isUnixSocket(url) { const unixRegex = /^(http:\/\/|https:\/\/|)unix:/; return unixRegex.test(url); } /** * Parses socket path and route from unix socket URL * Handles both full URLs (http://unix:/path/to/socket:/route) and pre-stripped paths (unix:/path/to/socket:/route) * Returns clean file system path for socketPath (e.g., /var/run/docker.sock) */ static parseUnixSocketUrl(url) { // Strip http:// or https:// prefix if present // This makes the method work with both full URLs and pre-stripped paths let cleanUrl = url; if (cleanUrl.startsWith('http://')) { cleanUrl = cleanUrl.substring('http://'.length); } else if (cleanUrl.startsWith('https://')) { cleanUrl = cleanUrl.substring('https://'.length); } // Strip unix: prefix if present to get clean file system path if (cleanUrl.startsWith('unix:')) { cleanUrl = cleanUrl.substring('unix:'.length); } // Parse the socket path and HTTP path // Format: /path/to/socket:/route/path const parseRegex = /(.*):(.*)/; const result = parseRegex.exec(cleanUrl); return { socketPath: result[1], path: result[2], }; } constructor(url, options) { this.url = url; this.options = options || {}; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2NvcmVfYmFzZS9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixXQUFXO0lBSS9COztPQUVHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFXO1FBQzdCLE1BQU0sU0FBUyxHQUFHLCtCQUErQixDQUFDO1FBQ2xELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFXO1FBQ25DLDhDQUE4QztRQUM5Qyx3RUFBd0U7UUFDeEUsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ25DLFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0MsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCw4REFBOEQ7UUFDOUQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDakMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsc0NBQXNDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLE9BQU87WUFDTCxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUtELFlBQVksR0FBVyxFQUFFLE9BQWtCO1FBQ3pDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUssRUFBZSxDQUFDO0lBQzdDLENBQUM7Q0FXRiJ9