/**
 * 环境配置相关 API 调用。
 *
 * - fetchEnvConfig：获取键值对列表（敏感值已掩码）
 * - updateEnvConfig：批量更新键值对
 * - exportEnvConfig：导出去敏感值的配置文件（浏览器下载）
 */

import { apiClient } from './client';
import type { EnvConfigItem } from '../types';

/** 获取环境配置列表 */
export async function fetchEnvConfig(): Promise<EnvConfigItem[]> {
  const { data } = await apiClient.get<{ items: EnvConfigItem[] }>('/env-config');
  return data.items;
}

/** 批量更新环境配置 */
export async function updateEnvConfig(items: EnvConfigItem[]): Promise<void> {
  await apiClient.put('/env-config', { items });
}

/** 导出配置文件（去敏感值），触发浏览器下载 */
export async function exportEnvConfig(): Promise<void> {
  const response = await apiClient.get('/env-config/export', {
    responseType: 'blob',
  });
  // 从响应头提取文件名，回退默认值
  const disposition = response.headers['content-disposition'] as string | undefined;
  let filename = 'env-config.txt';
  if (disposition) {
    const match = disposition.match(/filename="?([^";\s]+)"?/);
    if (match) filename = match[1];
  }
  // 创建临时链接触发下载
  const url = URL.createObjectURL(response.data as Blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = filename;
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
  URL.revokeObjectURL(url);
}
