@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
JavaScript
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