"feat: 同步功能增强与配置优化,支持多类型同步及日志分级"
This commit is contained in:
		| @@ -24,6 +24,7 @@ type Options = { | ||||
|   check?: boolean; | ||||
|   returnContent?: boolean; | ||||
|   setToken?: boolean; | ||||
|   hash?: string; | ||||
|   [key: string]: any; | ||||
| }; | ||||
| export const fetchLink = async (url: string, opts?: Options) => { | ||||
| @@ -39,8 +40,10 @@ export const fetchLink = async (url: string, opts?: Options) => { | ||||
|   if (token && setToken) { | ||||
|     fetchURL.searchParams.set('token', token); | ||||
|   } | ||||
|   if (opts?.hash) { | ||||
|     fetchURL.searchParams.set('hash', opts.hash); | ||||
|   } | ||||
|   fetchURL.searchParams.set('download', 'true'); | ||||
|   console.log('fetchURL', fetchURL.toString()); | ||||
|  | ||||
|   const res = await fetch(fetchURL.toString()); | ||||
|   const blob = await res.blob(); | ||||
| @@ -52,6 +55,7 @@ export const fetchLink = async (url: string, opts?: Options) => { | ||||
|   const pathname = fetchURL.pathname; | ||||
|   const filename = pathname.split('/').pop(); | ||||
|   return { | ||||
|     status: res.status, | ||||
|     filename, | ||||
|     blob, | ||||
|     type, | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import { getBufferHash, getHash } from '@/uitls/hash.ts'; | ||||
| import FormData from 'form-data'; | ||||
| import { logger } from '../logger.ts'; | ||||
| export const handleResponse = async (err: any, res: any) => { | ||||
|   return new Promise((resolve) => { | ||||
|     if (err) { | ||||
| @@ -27,6 +28,9 @@ export const getFormParams = (opts: UploadOptions, headers: any): FormData.Submi | ||||
|   if (opts.token) { | ||||
|     // url.searchParams.append('token', opts.token); | ||||
|   } | ||||
|   if (opts.meta) { | ||||
|     url.searchParams.append('meta', encodeURIComponent(JSON.stringify(opts.meta))); | ||||
|   } | ||||
|   const value: FormData.SubmitOptions = { | ||||
|     path: url.pathname + url.search, | ||||
|     host: url.hostname, | ||||
| @@ -38,7 +42,7 @@ export const getFormParams = (opts: UploadOptions, headers: any): FormData.Submi | ||||
|       ...headers, | ||||
|     }, | ||||
|   }; | ||||
|   console.log('getFormParams', value); | ||||
|   logger.debug('getFormParams', value); | ||||
|   return value; | ||||
| }; | ||||
| type UploadOptions = { | ||||
| @@ -47,7 +51,21 @@ type UploadOptions = { | ||||
|   token?: string; | ||||
|   form?: FormData; | ||||
|   needHash?: boolean; | ||||
|   hash?: string; | ||||
|   meta?: Record<string, any>; | ||||
| }; | ||||
| /** | ||||
|  * 单个文件上传 | ||||
|  * @param opts | ||||
|  * @param opts.url 上传地址 | ||||
|  * @param opts.file 文件路径或Buffer | ||||
|  * @param opts.token token | ||||
|  * @param opts.form form对象 | ||||
|  * @param opts.needHash 是否需要hash | ||||
|  * @param opts.hash hash | ||||
|  * @param opts.meta meta | ||||
|  * @returns | ||||
|  */ | ||||
| export const upload = (opts: UploadOptions): Promise<{ code?: number; message?: string; [key: string]: any }> => { | ||||
|   const form = opts?.form || new FormData(); | ||||
|   if (!opts.form) { | ||||
| @@ -62,7 +80,7 @@ export const upload = (opts: UploadOptions): Promise<{ code?: number; message?: | ||||
|     } | ||||
|     form.append('file', value); | ||||
|     if (opts.needHash) { | ||||
|       hash = getBufferHash(value); | ||||
|       hash = opts?.hash || getBufferHash(value); | ||||
|       opts.url = new URL(opts.url.toString()); | ||||
|       opts.url.searchParams.append('hash', hash); | ||||
|     } | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import { Logger } from '@kevisual/logger/node'; | ||||
|  | ||||
| const level = process.env.LOG_LEVEL || 'info'; | ||||
| export const logger = new Logger({ | ||||
|   level: 'info', | ||||
|   level: level as any, | ||||
| }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user