import * as fs from "node:fs";
import { ofetch } from "ofetch";
import * as toml from "toml";

const config = toml.parse(fs.readFileSync("configs/config.api.toml", "utf-8"));
const URL = config.backend.backend_url;
const RETRY = config.request.request_retries;
const CODES = config.request.request_retry_codes;

export default async (
	api: string,
	value?: string | number,
	value2?: string | number,
) => {
	try {
		let fetch: { [key: string]: unknown };
		if (!value2) {
			if (!value) {
				fetch = await ofetch(URL + api, {
					parseResponse: JSON.parse,
					retry: RETRY,
					retryDelay: 500,
					retryStatusCodes: CODES,
				});
			} else {
				fetch = await ofetch(`${URL}${api}/${value}/fetch-data`, {
					parseResponse: JSON.parse,
					retry: RETRY,
					retryDelay: 500,
					retryStatusCodes: CODES,
				});
			}
		} else {
			fetch = await ofetch(`${URL}${api}/${value}/${value2}/fetch-data`, {
				parseResponse: JSON.parse,
				retry: RETRY,
				retryDelay: 500,
				retryStatusCodes: CODES,
			});
		}
		const result = fetch;
		return [result, null];
	} catch (error) {
		return [[], error];
	}
};
