endpoint-sentinel
Version:
User-friendly security scanner with interactive setup that scales from beginner to expert
112 lines • 3.25 kB
TypeScript
/**
* Production-ready HTTP Client for Endpoint Sentinel
* Handles cookies, authentication, retries, and security headers
*/
import { HttpRequest, HttpResponse, CookieJar, Logger } from '../types/scanner.js';
export declare class SecurityHttpClient {
private axiosInstance;
private cookieJar;
private logger;
constructor(cookieJar: CookieJar, logger: Logger, options?: {
timeout?: number;
maxRedirects?: number;
userAgent?: string;
proxy?: string;
});
/**
* Setup request/response interceptors
*/
private setupInterceptors;
/**
* Extract cookies from response
*/
private extractCookies;
/**
* Log response for audit purposes
*/
private logResponse;
/**
* Execute HTTP request with comprehensive error handling
*/
request(request: HttpRequest): Promise<HttpResponse>;
/**
* Execute multiple requests with concurrency control
*/
requestBatch(requests: HttpRequest[], concurrency?: number): Promise<HttpResponse[]>;
/**
* Normalize response headers to lowercase
*/
private normalizeHeaders;
/**
* Safely convert response data to string
*/
private safeStringify;
/**
* Calculate response size
*/
private calculateResponseSize;
/**
* Check if response indicates rate limiting
*/
isRateLimited(response: HttpResponse): boolean;
/**
* Check if response indicates authentication requirement
*/
requiresAuthentication(response: HttpResponse): boolean;
/**
* Extract security headers for analysis
*/
extractSecurityHeaders(response: HttpResponse): SecurityHeaderAnalysis;
/**
* Clean up and close connections
*/
destroy(): void;
}
/**
* Enhanced Cookie Jar implementation
*/
export declare class EnhancedCookieJar implements CookieJar {
private toughCookieJar;
constructor(initialCookies?: string);
setCookie(cookie: string, url: string): void;
getCookies(url: string): string[];
serialize(): string;
clear(): void;
private deserialize;
}
/**
* Security header analysis result
*/
export interface SecurityHeaderAnalysis {
readonly contentSecurityPolicy?: string;
readonly strictTransportSecurity?: string;
readonly xContentTypeOptions?: string;
readonly xFrameOptions?: string;
readonly xXssProtection?: string;
readonly referrerPolicy?: string;
readonly permissionsPolicy?: string;
readonly crossOriginEmbedderPolicy?: string;
readonly crossOriginOpenerPolicy?: string;
readonly crossOriginResourcePolicy?: string;
}
/**
* Custom HTTP Client Error
*/
export declare class HttpClientError extends Error {
readonly url: string;
readonly method: string;
constructor(message: string, url: string, method: string);
}
/**
* HTTP Client Factory
*/
export declare class HttpClientFactory {
static create(cookieJar: CookieJar, logger: Logger, options?: {
timeout?: number;
maxRedirects?: number;
userAgent?: string;
proxy?: string;
}): SecurityHttpClient;
static createWithDefaults(logger: Logger): SecurityHttpClient;
}
//# sourceMappingURL=http-client.d.ts.map