@akomalabs/kemono
Version:
A production-grade TypeScript API wrapper for the Kemono/Coomer platforms
50 lines (49 loc) • 1.77 kB
TypeScript
import type { AxiosRequestConfig } from 'axios';
import type { Logger } from 'winston';
import type { Cache } from './cache';
import type { RateLimiter } from './rate-limiter';
import type { KemonoConfig } from '../types/config';
/**
* HTTP client for making API requests with retry, caching, and rate limiting
*/
export declare class HttpClient {
private readonly cache;
private readonly rateLimiter;
private readonly logger;
private readonly axios;
constructor(config: KemonoConfig, cache: Cache, rateLimiter: RateLimiter, logger: Logger);
/**
* Make a GET request with caching and rate limiting
* @param url Request URL
* @param config Axios request config
* @returns Response data
*/
get<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
/**
* Make a POST request with rate limiting
* @param url Request URL
* @param data Request body
* @param config Axios request config
* @returns Response data
*/
post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
/**
* Make a PUT request with rate limiting
* @param url Request URL
* @param data Request body
* @param config Axios request config
* @returns Response data
*/
put<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
/**
* Make a DELETE request with rate limiting
* @param url Request URL
* @param config Axios request config
* @returns Response data
*/
delete<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
}
/**
* Create a new HTTP client instance
*/
export declare function createHttpClient(config: KemonoConfig, cache: Cache, rateLimiter: RateLimiter, logger: Logger): HttpClient;