komik / src /lib /http.js
bilaku's picture
Upload 3 files
bd11153 verified
Raw
History Blame Contribute Delete
929 Bytes
import axios from "axios";
import { USER_AGENT, BASE_URL } from "../config.js";
import { getCache, setCache } from "./cache.js";
const client = axios.create({
timeout: 20000,
headers: {
"User-Agent": USER_AGENT,
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "id-ID,id;q=0.9,en;q=0.8",
"Referer": BASE_URL + "/",
},
});
export async function fetchHtml(url, { useCache = true, retries = 2 } = {}) {
if (useCache) {
const cached = getCache(url);
if (cached) return cached;
}
let lastErr;
for (let attempt = 0; attempt <= retries; attempt++) {
try {
const res = await client.get(url);
if (useCache) setCache(url, res.data);
return res.data;
} catch (err) {
lastErr = err;
if (attempt < retries) {
await new Promise((r) => setTimeout(r, 600 * (attempt + 1)));
}
}
}
throw lastErr;
}