| Server IP : 54.37.205.81 / Your IP : 216.73.216.76 Web Server : nginx/1.22.1 System : Linux vps-249481fa 6.1.0-50-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-07-02) x86_64 User : debian ( 1000) PHP Version : 8.2.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/app.copyrightchain.it/copyrightchain_app/services/ |
Upload File : |
// Centralized API client for WordPress bridge endpoints.
// IMPORTANT: Do not persist JWT in localStorage.
export type ApiError = {
status: number;
message: string;
details?: unknown;
};
let authToken: string | null = null;
export function setAuthToken(token: string | null) {
authToken = token;
}
export function getAuthToken() {
return authToken;
}
export async function apiFetch<T>(path: string, options: RequestInit = {}): Promise<T> {
const base = (import.meta as any).env?.VITE_WP_API_BASE || '/wp-json/ccp/v1';
const url = path.startsWith('http') ? path : `${base}${path.startsWith('/') ? '' : '/'}${path}`;
const headers: Record<string, string> = {
'Content-Type': 'application/json',
...(options.headers ? (options.headers as any) : {}),
};
if (authToken) headers['Authorization'] = `Bearer ${authToken}`;
const res = await fetch(url, { ...options, headers });
const contentType = res.headers.get('content-type') || '';
const isJson = contentType.includes('application/json');
const payload = isJson ? await res.json().catch(() => null) : await res.text().catch(() => null);
if (!res.ok) {
const err: ApiError = {
status: res.status,
message: (payload && (payload.message || payload.error)) || res.statusText || 'Request failed',
details: payload,
};
throw err;
}
return payload as T;
}