UNPKG

@akomalabs/kemono

Version:

A production-grade TypeScript API wrapper for the Kemono/Coomer platforms

50 lines (49 loc) 1.77 kB
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;