48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			48 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.ICoreRequestOptions = types.ICoreRequestOptions,
 | 
						|
  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 || ({} as TOptions);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * 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>;
 | 
						|
}
 |