70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
import md5 from 'js-md5';
|
||
import networkSvc from '../../networkSvc';
|
||
import store from '../../../store';
|
||
import userSvc from '../../userSvc';
|
||
import badgeSvc from '../../badgeSvc';
|
||
import utils from '../../utils';
|
||
|
||
/**
|
||
* 自定义账号前缀
|
||
*/
|
||
const subPrefix = 'cs';
|
||
export default {
|
||
subPrefix,
|
||
async addAccount({
|
||
name,
|
||
uploadUrl,
|
||
fileParamName,
|
||
customHeaders,
|
||
customParams,
|
||
resultUrlParam,
|
||
}) {
|
||
userSvc.addUserInfo({
|
||
id: `${subPrefix}:${utils.encodeBase64(name)}`,
|
||
name,
|
||
imageUrl: '',
|
||
});
|
||
// Build token object including sub
|
||
const token = {
|
||
uploadUrl,
|
||
fileParamName,
|
||
customHeaders,
|
||
customParams,
|
||
resultUrlParam,
|
||
name,
|
||
sub: utils.encodeBase64(name),
|
||
};
|
||
// Add token to smms tokens
|
||
store.dispatch('data/addCustomToken', token);
|
||
badgeSvc.addBadge('addCustomAccount');
|
||
return token;
|
||
},
|
||
async uploadFile({
|
||
token,
|
||
file,
|
||
}) {
|
||
const newFileName = `${md5(await utils.encodeFiletoBase64(file))}.${file.type.split('/')[1]}`;
|
||
const newfile = new File([file], newFileName, { type: file.type });
|
||
const headers = token.customHeaders || {};
|
||
const formData = token.customParams || {};
|
||
formData[token.fileParamName] = newfile;
|
||
const { body } = await networkSvc.request({
|
||
method: 'POST',
|
||
url: token.uploadUrl,
|
||
headers,
|
||
formData,
|
||
});
|
||
const paramArray = token.resultUrlParam.split('.');
|
||
let result = body;
|
||
paramArray.forEach((paramName) => {
|
||
result = result[paramName];
|
||
if (!result) {
|
||
store.dispatch('notification/error', `自定义图床上传图片失败,响应Body为:${JSON.stringify(body)}`);
|
||
throw new Error(`自定义图床上传图片失败,响应Body为:${JSON.stringify(body)}`);
|
||
}
|
||
});
|
||
return result;
|
||
},
|
||
|
||
};
|