UNPKG

@kareemaly/researcher

Version:
47 lines (46 loc) 1.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.contentClient = exports.searchClient = void 0; const axios_1 = __importDefault(require("axios")); const logger_1 = require("./logger"); const log = (0, logger_1.createLogger)("http-client"); // Client for search API calls exports.searchClient = axios_1.default.create({ headers: { Accept: "application/json", "User-Agent": "Researcher/1.0", }, timeout: 10000, // 10 seconds }); // Client for fetching web content exports.contentClient = axios_1.default.create({ headers: { Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "User-Agent": "Mozilla/5.0 (compatible; Researcher/1.0; +https://github.com/yourusername/researcher)", }, timeout: 30000, // 30 seconds maxContentLength: 10 * 1024 * 1024, // 10MB }); // Add logging interceptors [exports.searchClient, exports.contentClient].forEach((client) => { client.interceptors.request.use((config) => { log("Making request to %s", config.url); return config; }, (error) => { log.error("Request error: %O", error); return Promise.reject(error); }); client.interceptors.response.use((response) => { log("Received response from %s (%d bytes)", response.config.url, JSON.stringify(response.data).length); return response; }, (error) => { if (axios_1.default.isAxiosError(error)) { log.error("Response error from %s: %s", error.config?.url, error.message); } return Promise.reject(error); }); });