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>;
 | |
| }
 |