Commit dc91b190 authored by chenshouchao's avatar chenshouchao

feat: 文件相关请求初步封装

parent 14087e5c
......@@ -2771,6 +2771,12 @@
"@types/node": "*"
}
},
"@types/crypto-js": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/@types/crypto-js/-/crypto-js-4.1.1.tgz",
"integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==",
"dev": true
},
"@types/eslint": {
"version": "7.29.0",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz",
......@@ -4369,6 +4375,11 @@
"which": "^2.0.1"
}
},
"crypto-js": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz",
"integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
},
"crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
......
......@@ -31,6 +31,7 @@
"camelcase": "^6.2.1",
"case-sensitive-paths-webpack-plugin": "^2.4.0",
"classnames": "^2.3.1",
"crypto-js": "^4.1.1",
"css-loader": "^6.5.1",
"css-minimizer-webpack-plugin": "^3.2.0",
"dotenv": "^10.0.0",
......@@ -168,6 +169,7 @@
]
},
"devDependencies": {
"@types/crypto-js": "^4.1.1",
"@types/mockjs": "^1.0.6"
}
}
......@@ -7,7 +7,7 @@
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
// const AWSPREFIX = "/0xaws";
const PRIVATIZATIONPREFIX = "/fileserver";
// const PRIVATIZATIONPREFIX = "/fileserver";
// const PRIVATIZATION_API_URI_PREFIX = process.env.NODE_ENV === 'development' ? "http://123.57.131.31" : "";
let BACKEND_API_URI_PREFIX = "";
......@@ -37,4 +37,4 @@ switch (process.env.REACT_APP_ENV) {
break;
}
export { BACKEND_API_URI_PREFIX, PRIVATIZATIONPREFIX }; // 导出放在11行后面,避免发布时被替换
export { BACKEND_API_URI_PREFIX }; // 导出放在11行后面,避免发布时被替换
import axios from "axios";
// import Api from '../../../../commons/utils/api_manager'
// import CloudEStore from '../stores/CloudEStore'
// import { Actions, Constants } from '../../../../commons/utils/constants'
// import MessageUtil from '../../../../commons/utils/MessageUtil'
// import ApiUtils from '../../../../commons/utils/ApiUtils'
// import { APIOPTION, urlToken, ZONEID } from '../../../../commons/utils/raysyncApi'
// import UserStore from '../../../../console/common/stores/UserStore'
import Base64 from "crypto-js/enc-base64";
import Utf8 from "crypto-js/enc-utf8";
let headers = {
"Content-Type": "application/json",
};
class CloudEController {
//文件 删除
// static JobOutFileDel(urls, type) {
// if (
// ApiUtils.getAuthorizationHeaders(
// CloudEStore,
// headers,
// Actions.GET_JOB_FILE_DEL
// )
// ) {
// headers["Cache-Control"] = "no-cache";
// headers["delfilepath"] = Base64.stringify(Utf8.parse(urls));
// let url = "";
// if (
// localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) &&
// JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))
// ) {
// url += urlToken();
// }
// axios
// .get(APIOPTION() + "/delete/" + url, {
// headers: headers,
// })
// .then(function (response) {
// CloudEStore.emitChange(
// Actions.GET_JOB_FILE_DEL,
// true,
// Actions.GET_JOB_FILE_DEL,
// type
// );
// })
// .catch(function (error) {
// console.log(error);
// MessageUtil.handleError(CloudEStore, error);
// CloudEStore.emitChange(Actions.GET_JOB_FILE_DEL, false);
// });
// }
// }
// // 文件列表
// static JobOutFileList(url, showHide = false, items) {
// if (
// ApiUtils.getAuthorizationHeaders(
// CloudEStore,
// headers,
// Actions.JobOutFileList
// )
// ) {
// headers["Cache-Control"] = "no-cache";
// // headers['parentName'] = ''
// if (
// localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) &&
// JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))
// ) {
// url += urlToken();
// }
// axios
// //修改 查看文件的接口为list(可查看隐藏文件)
// .get(APIOPTION() + "/list" + url + "&showhidden=" + showHide, {
// headers: headers,
// })
// .then(function (response) {
// Array.isArray(response.data)
// ? CloudEStore.setjobOutFileList(response.data)
// : CloudEStore.setjobOutFileList([]);
// CloudEStore.emitChange(
// Actions.JobOutFileList,
// true,
// Actions.JobOutFileList,
// items
// );
// })
// .catch(function (error) {
// console.log(error);
// MessageUtil.handleError(CloudEStore, error);
// CloudEStore.emitChange(Actions.JobOutFileList, false);
// });
// }
// }
// static JobOutFileListMove(url) {
// if (
// ApiUtils.getAuthorizationHeaders(
// CloudEStore,
// headers,
// Actions.JOB_OUT_FILE_LIST_MOVE_NEW
// )
// ) {
// headers["Cache-Control"] = "no-cache";
// if (
// localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) &&
// JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))
// ) {
// url += urlToken();
// }
// axios
// .get(APIOPTION() + "/download" + url, {
// headers: headers,
// })
// .then(function (response) {
// CloudEStore.setjobOutFileListMove(response.data);
// CloudEStore.emitChange(
// Actions.JOB_OUT_FILE_LIST_MOVE_NEW,
// true,
// Actions.JOB_OUT_FILE_LIST_MOVE_NEW
// );
// })
// .catch(function (error) {
// console.log(error);
// MessageUtil.handleError(CloudEStore, error);
// CloudEStore.emitChange(Actions.JOB_OUT_FILE_LIST_MOVE_NEW, false);
// });
// }
// }
// // 全局搜索 文件名
// static JobSearchFileList(url, base, showHide = false) {
// if (
// ApiUtils.getAuthorizationHeaders(
// CloudEStore,
// headers,
// Actions.JOB_OUTFILE_LIST_SEARCH
// )
// ) {
// headers["Cache-Control"] = "no-cache";
// if (
// localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) &&
// JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))
// ) {
// url = urlToken() + "&q=" + url;
// }
// axios
// .get(APIOPTION() + "/search" + base + url + "&showhidden=" + showHide, {
// headers: headers,
// })
// .then(function (response) {
// Array.isArray(response.data)
// ? CloudEStore.setjobOutFileList(response.data)
// : CloudEStore.setjobOutFileList([]);
// CloudEStore.emitChange(
// Actions.JOB_OUTFILE_LIST_SEARCH,
// true,
// Actions.JOB_OUTFILE_LIST_SEARCH
// );
// })
// .catch(function (error) {
// console.log(error);
// MessageUtil.handleError(CloudEStore, error);
// CloudEStore.emitChange(Actions.JOB_OUTFILE_LIST_SEARCH, false);
// });
// }
// }
}
export default CloudEController;
// const API = "https://fileserver.cloudam.cn:8091"
// const APIOPTION = "https://fileserver.cloudam.cn"
// const APIPORT = "39.105.230.38"
// const raysyncAddr = {
// bandwidth: null
// capacity: 10485760
// enableLargeFileTransfer: true
// fileServerEndPoint: "https://fileserver.cloudam.cn"
// fileSystemType: "standard"
// jobLogServerEndPoint: "https://fileserver.cloudam.cn:6677"
// privateIp: "10.8.2.67"
// protocolType: "NFS"
// publicMountDir: "/public"
// publicMountUrl: "132594ad6e-atf93.cn-beijing.nas.aliyuncs.com"
// ramUserId: "61261f8a2a2aa4d72f752c3c"
// smbMountUrl: null
// srcAddr: "fileserver.cloudam.cn"
// srcIp: "47.94.198.50"
// sshServerEndPoint: "https://fileserver.cloudam.cn:8888"
// storageType: "Capacity"
// token: null
// userMountDir: "/public/data/"
// userMountUrl: "132594ad6e-uop2.cn-beijing.nas.aliyuncs.com"
// vncServerEndPoint: "https://fileserver.cloudam.cn:9090"
// zoneId: "cn-beijing-h"
// }
const getLoaclStorageOfKey = (key: string) => {
return JSON.parse(localStorage.getItem(key) || "");
};
const API = function () {
const raysyncAddr = getLoaclStorageOfKey("raysyncAddr");
return raysyncAddr.srcAddr ? `https://${raysyncAddr.srcAddr}:8091` : "";
};
// 文件服务器指向
const APIOPTION = function () {
// todo isPrivatization
const raysyncAddr = getLoaclStorageOfKey("raysyncAddr");
return raysyncAddr.fileServerEndPoint || "";
};
// api端口号
const APIPORT = function () {
const raysyncAddr = getLoaclStorageOfKey("raysyncAddr");
return raysyncAddr.srcIp || "";
};
// const currentRegion = {
// cloudProvider: "ALIYUN"
// description: "本计算区有丰富的CPU资源,并提供部分GPU资源,可以满足大部分计算作业需求。"
// enabled: true
// id: "CE-Z1"
// initialized: true
// location: "CLOUD"
// name: "通用计算区"
// primary: true
// storageConfig: {srcAddr: "fileserver.cloudam.cn", srcIp: "47.94.198.50", privateIp: "10.8.2.67",…}
// bandwidth: null
// capacity: 10485760
// enableLargeFileTransfer: true
// fileServerEndPoint: "https://fileserver.cloudam.cn"
// fileSystemType: "standard"
// jobLogServerEndPoint: "https://fileserver.cloudam.cn:6677"
// privateIp: "10.8.2.67"
// protocolType: "NFS"
// publicMountDir: "/public"
// publicMountUrl: "132594ad6e-atf93.cn-beijing.nas.aliyuncs.com"
// ramUserId: "61261f8a2a2aa4d72f752c3c"
// smbMountUrl: null
// srcAddr: "fileserver.cloudam.cn"
// srcIp: "47.94.198.50"
// sshServerEndPoint: "https://fileserver.cloudam.cn:8888"
// storageType: "Capacity"
// token: null
// userMountDir: "/public/data/"
// userMountUrl: "132594ad6e-uop2.cn-beijing.nas.aliyuncs.com"
// vncServerEndPoint: "https://fileserver.cloudam.cn:9090"
// zoneId: "cn-beijing-h"
// }
// 当前计算区
let currentRegion = localStorage.getItem("current-region");
let currentRegionJson = currentRegion && JSON.parse(currentRegion);
let user = getLoaclStorageOfKey("userinfo");
// 文件路径
const FILEPATH =
currentRegionJson &&
currentRegionJson.location &&
currentRegionJson.location === "ON_PREMISE" &&
localStorage.getItem("userinfo")
? `/home/${user.name}`
: "/home/cloudam";
const FILEPATH_SHARE = "/share";
// 工作日志
const APIJOBLOGPOINT = function () {
const raysyncAddr = getLoaclStorageOfKey("raysyncAddr");
return raysyncAddr.jobLogServerEndPoint || "";
};
// 区id
const ZONEID = (params: string) => {
let currentRegion = getLoaclStorageOfKey("current-region");
return currentRegion[params || "id"] || "";
};
const urlToken = (root: string) => {
let token = getLoaclStorageOfKey("token").access_token;
let json = getLoaclStorageOfKey("current-region");
const userInfo = getLoaclStorageOfKey("userinfo");
if (json["location"] && json["location"] === "ON_PREMISE") {
return `?username=${
userInfo["name"]
}&token=${token}&filetoken=${encodeURIComponent(
userInfo["onpremFileAccessToken"]
)}&share=false`;
}
if (root && root === "home") {
return `?username=${
userInfo["homeDirectoryMountPoint"]
}&token=${token}&filetoken=${encodeURIComponent(
userInfo["fileAccessToken"]
)}&share=false`;
}
// 是否共有文件系统
if (
localStorage.getItem("isShareFileSystem") &&
localStorage.getItem("isShareFileSystem") === "true"
) {
return `?username=${
userInfo["shareDirectoryMountPoint"]
}&token=${token}&filetoken=${encodeURIComponent(
userInfo["shareFileAccessToken"]
)}&share=true`;
} else {
return `?username=${
userInfo["homeDirectoryMountPoint"]
}&token=${token}&filetoken=${encodeURIComponent(
userInfo["fileAccessToken"]
)}&share=false`;
}
};
const getUuid = () => {
const userInfo = getLoaclStorageOfKey("userinfo");
// 是否共有文件系统
if (
localStorage.getItem("isShareFileSystem") &&
localStorage.getItem("isShareFileSystem") === "true"
) {
return userInfo["shareDirectoryMountPoint"];
} else {
return userInfo["homeDirectoryMountPoint"];
}
};
const USERNAME = () => {
return getLoaclStorageOfKey("userinfo").name;
};
// 加密传输
const encryptTransfer = () => {
const userInfo = getLoaclStorageOfKey("userinfo");
if (userInfo) {
let encryptTransfer = userInfo.encryptTransfer;
if (encryptTransfer) {
return true;
}
return false;
}
return false;
};
const getType = function () {
if (
localStorage.getItem("isShareFileSystem") &&
localStorage.getItem("isShareFileSystem") === "true"
) {
return "share";
} else {
return "data";
}
};
export {
API,
APIPORT,
FILEPATH,
FILEPATH_SHARE,
APIOPTION,
APIJOBLOGPOINT,
ZONEID,
urlToken,
USERNAME,
getUuid,
encryptTransfer,
getType,
};
export const ApiUtils = {};
// const API = "https://fileserver.cloudam.cn:8091"
// const APIOPTION = "https://fileserver.cloudam.cn"
// const APIPORT = "39.105.230.38"
import { isPrivatization } from './helper.js'
import { Constants } from "./constants";
import { PRIVATIZATIONPREFIX } from "./api_prefix.js";
const API = function () {
return localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY) ? "https://" + JSON.parse(localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY)).srcAddr + ":8091" : "";
}
const APIOPTION = function () {
if (isPrivatization) {
if (localStorage.getItem(Constants.CURRENT_REGION_SELECT_KEY) && JSON.parse(localStorage.getItem(Constants.CURRENT_REGION_SELECT_KEY))) {
let json = JSON.parse(localStorage.getItem(Constants.CURRENT_REGION_SELECT_KEY))
if (json['location'] && json['location'] === "ON_PREMISE") {
return JSON.parse(localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY)).fileServerEndPoint
} else if (json['location'] && json['location'] === "CLOUDAM") {
return localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY) ? JSON.parse(localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY)).fileServerEndPoint + PRIVATIZATIONPREFIX : "";
} else if (json['location'] && json['location'] === "CLOUD") {
return (window.location.host === "localhost:3000" ? "http://8.140.168.27" : window.location.origin) + PRIVATIZATIONPREFIX
}
return false
}
return false;
}
return localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY) && localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY) && JSON.parse(localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY)).fileServerEndPoint ? JSON.parse(localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY)).fileServerEndPoint : "";
}
const APIPORT = function () {
return localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY) ? JSON.parse(localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY)).srcIp : "";
}
let currentRegion = localStorage.getItem(Constants.CURRENT_REGION_SELECT_KEY);
let currentRegionJson = currentRegion && JSON.parse(currentRegion);
let user = localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) && JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY));
const FILEPATH = currentRegionJson && currentRegionJson.location && currentRegionJson.location === "ON_PREMISE" && localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) ? `/home/${user.name}` : "/home/cloudam"
const FILEPATH_SHARE = "/share"
const APIJOBLOGPOINT = function () {
return localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY) ? JSON.parse(localStorage.getItem(Constants.RAYSYNC_ADDR_TOKEN_KEY)).jobLogServerEndPoint : "";
}
const ZONEID = function (params) {
return localStorage.getItem(Constants.CURRENT_REGION_SELECT_KEY) ? JSON.parse(localStorage.getItem(Constants.CURRENT_REGION_SELECT_KEY))[params || "id"] : "";
}
const urlToken = function (root) {
let token = localStorage.getItem(Constants.TOKEN_KEY) && JSON.parse(localStorage.getItem(Constants.TOKEN_KEY)).access_token
let json = JSON.parse(localStorage.getItem(Constants.CURRENT_REGION_SELECT_KEY))
if (json['location'] && json['location'] === "ON_PREMISE") {
return "?username=" + JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['name'] + "&token=" + token + "&filetoken=" + encodeURIComponent(JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['onpremFileAccessToken']) + "&share=false";
}
if (root && root === "home") {
return "?username=" + JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['homeDirectoryMountPoint'] + "&token=" + token + "&filetoken=" + encodeURIComponent(JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['fileAccessToken']) + "&share=false";
}
if (localStorage.getItem(Constants.CURRENT_ISFILESYSTEM) && localStorage.getItem(Constants.CURRENT_ISFILESYSTEM) === "true") {
return "?username=" + JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['shareDirectoryMountPoint'] + "&token=" + token + "&filetoken=" + encodeURIComponent(JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['shareFileAccessToken']) + "&share=true";
} else {
return "?username=" + JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['homeDirectoryMountPoint'] + "&token=" + token + "&filetoken=" + encodeURIComponent(JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['fileAccessToken']) + "&share=false";
}
}
const getUuid = function () {
if (localStorage.getItem(Constants.CURRENT_ISFILESYSTEM) && localStorage.getItem(Constants.CURRENT_ISFILESYSTEM) === "true") {
return JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['shareDirectoryMountPoint'];
} else {
return JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['homeDirectoryMountPoint'];
}
}
const USERNAME = function () {
return JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))['name']
}
const encryptTransfer = function () {
if (localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) && JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))) {
let encryptTransfer = JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY)).encryptTransfer
if (encryptTransfer) {
return true;
}
return false;
}
return false;
}
const getType = function () {
if (localStorage.getItem(Constants.CURRENT_ISFILESYSTEM) && localStorage.getItem(Constants.CURRENT_ISFILESYSTEM) === "true") {
return "share";
} else {
return "data";
}
}
export { API, APIPORT, FILEPATH, FILEPATH_SHARE, APIOPTION, APIJOBLOGPOINT, ZONEID, urlToken, USERNAME, getUuid, encryptTransfer, getType }
\ No newline at end of file
import style from "./InformationDisplay.module.css";
import React from "react";
type InfoLi = {
label: string | number;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment