import * as qs from "qs-esm";
export function CMSApiClient(baseUrl: string, token: string) {
  return async function CMSFetch<TResponse>(
    path: string,
    init?: RequestInit,
    params = {},
  ): Promise<TResponse | null> {
    let query = qs.stringify(params);
    if (query) {
      query = "?" + query;
    }
    const response = await fetch(`${baseUrl}/api${path}${query}`, {
      ...init,
      headers: {
        ...(init?.headers ?? {}),
        Authorization: `Bearer ${token}`,
        Accept: "application/json",
        "Content-Type": "application/json",
      },
    });
    if (!response.ok) {
      console.log(`CMS API error: ${response.status} ${response.statusText}`);
      return null;
    }

    const contentType = response.headers.get("content-type");

    if (contentType?.includes("application/json")) {
      return (await response.json()) as TResponse;
    }
    return (await response.text()) as TResponse;
  };
}
