import httpClient from '@/utils/http';

import {
  ControllerResponse,
  ServicePresignedURLResponse,
  ServiceUploadToken
} from './data-contracts';
export default {
  /**
   * @description 获取文件上传的相关配置信息
   */
  configList: () => {
    return httpClient.get<
      ControllerResponse & {
        data?: Record<string, any>;
      }
    >(`/upload/config`);
  },
  /**
   * @description 获取用于前端直传S3的预签名URL
   */
  presignedUrlList: (query: {
    /** 文件名 */
    filename: string;
    /** 过期时间（秒） */
    expires?: number;
  }) => {
    return httpClient.get<
      ControllerResponse & {
        data?: ServicePresignedURLResponse;
      }
    >(`/upload/presigned-url`, { query: query });
  },
  /**
   * @description 获取用于前端直传S3的Token
   */
  tokenList: (query: {
    /** 文件名 */
    filename: string;
    /** 文件类型 */
    content_type?: string;
    /** 最大文件大小（字节） */
    max_size?: number;
  }) => {
    return httpClient.get<
      ControllerResponse & {
        data?: ServiceUploadToken;
      }
    >(`/upload/token`, { query: query });
  }
};
