add sync download

This commit is contained in:
2025-05-12 04:30:17 +08:00
parent 4aec2bc231
commit eaccbf5ada
14 changed files with 219 additions and 32 deletions

View File

@@ -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;

View File

@@ -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
View File

@@ -0,0 +1,5 @@
import { Logger } from '@kevisual/logger/node';
export const logger = new Logger({
level: 'info',
});