45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import * as types from './types.js';
|
|
|
|
/**
|
|
* Abstract Core Request class that defines the interface for all HTTP/HTTPS requests
|
|
*/
|
|
export abstract class CoreRequest<TOptions extends types.IAbstractRequestOptions = types.IAbstractRequestOptions, TResponse = any> {
|
|
/**
|
|
* Tests if a URL is a unix socket
|
|
*/
|
|
static isUnixSocket(url: string): boolean {
|
|
const unixRegex = /^(http:\/\/|https:\/\/|)unix:/;
|
|
return unixRegex.test(url);
|
|
}
|
|
|
|
/**
|
|
* Parses socket path and route from unix socket URL
|
|
*/
|
|
static parseUnixSocketUrl(url: string): { socketPath: string; path: string } {
|
|
const parseRegex = /(.*):(.*)/;
|
|
const result = parseRegex.exec(url);
|
|
return {
|
|
socketPath: result[1],
|
|
path: result[2],
|
|
};
|
|
}
|
|
|
|
protected url: string;
|
|
protected options: TOptions;
|
|
|
|
constructor(url: string, options: TOptions) {
|
|
this.url = url;
|
|
this.options = options;
|
|
}
|
|
|
|
/**
|
|
* Fire the request and return a response
|
|
*/
|
|
abstract fire(): Promise<TResponse>;
|
|
|
|
/**
|
|
* Fire the request and return the raw response (platform-specific)
|
|
*/
|
|
abstract fireCore(): Promise<any>;
|
|
|
|
} |