add sync download
This commit is contained in:
		| @@ -23,21 +23,25 @@ export type Package = { | ||||
| type Options = { | ||||
|   check?: boolean; | ||||
|   returnContent?: boolean; | ||||
|   setToken?: boolean; | ||||
|   [key: string]: any; | ||||
| }; | ||||
| export const fetchLink = async (url: string, opts?: Options) => { | ||||
|   const token = process.env.KEVISUAL_TOKEN || storage.getItem('token'); | ||||
|   const fetchURL = new URL(url); | ||||
|   const check = opts?.check ?? false; | ||||
|   const setToken = opts?.setToken ?? true; | ||||
|   if (check) { | ||||
|     if (!url.startsWith(baseURL)) { | ||||
|       throw new Error('url must start with ' + baseURL); | ||||
|     } | ||||
|   } | ||||
|   if (token) { | ||||
|   if (token && setToken) { | ||||
|     fetchURL.searchParams.set('token', token); | ||||
|   } | ||||
|   fetchURL.searchParams.set('download', 'true'); | ||||
|   console.log('fetchURL', fetchURL.toString()); | ||||
|  | ||||
|   const res = await fetch(fetchURL.toString()); | ||||
|   const blob = await res.blob(); | ||||
|   const type = blob.type; | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| import { getBufferHash, getHash } from '@/uitls/hash.ts'; | ||||
| import FormData from 'form-data'; | ||||
| export const handleResponse = async (err: any, res: any) => { | ||||
|   return new Promise((resolve) => { | ||||
| @@ -37,6 +38,7 @@ export const getFormParams = (opts: UploadOptions, headers: any): FormData.Submi | ||||
|       ...headers, | ||||
|     }, | ||||
|   }; | ||||
|   console.log('getFormParams', value); | ||||
|   return value; | ||||
| }; | ||||
| type UploadOptions = { | ||||
| @@ -44,14 +46,25 @@ type UploadOptions = { | ||||
|   file?: string | Buffer | File; | ||||
|   token?: string; | ||||
|   form?: FormData; | ||||
|   needHash?: boolean; | ||||
| }; | ||||
| export const upload = (opts: UploadOptions): Promise<{ code?: number; message?: string; [key: string]: any }> => { | ||||
|   const form = opts?.form || new FormData(); | ||||
|   if (!opts.form) { | ||||
|     let hash = ''; | ||||
|     let value: any; | ||||
|     let type = 'string'; | ||||
|     if (typeof opts.file === 'string') { | ||||
|       form.append('file', Buffer.from(opts.file)); | ||||
|       value = Buffer.from(opts.file); | ||||
|     } else { | ||||
|       form.append('file', opts.file); | ||||
|       type = 'buffer'; | ||||
|       value = opts.file; | ||||
|     } | ||||
|     form.append('file', value); | ||||
|     if (opts.needHash) { | ||||
|       hash = getBufferHash(value); | ||||
|       opts.url = new URL(opts.url.toString()); | ||||
|       opts.url.searchParams.append('hash', hash); | ||||
|     } | ||||
|   } | ||||
|   const headers = form.getHeaders(); | ||||
|   | ||||
							
								
								
									
										5
									
								
								src/module/logger.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/module/logger.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| import { Logger } from '@kevisual/logger/node'; | ||||
|  | ||||
| export const logger = new Logger({ | ||||
|   level: 'info', | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user