import * as os from 'os'; import User from "./user"; import * as utils from './utils'; export default class DevstarAPIHandler { private user: User; private devstarDomain: string; constructor(user: User) { this.user = user // 获取domain const devstarDomainFromUserConfig = utils.getDevstarDomain() if (undefined == devstarDomainFromUserConfig || "" == devstarDomainFromUserConfig) { this.devstarDomain = "https://devstar.cn"; } else { this.devstarDomain = devstarDomainFromUserConfig.endsWith('/') ? devstarDomainFromUserConfig.slice(0, -1) : devstarDomainFromUserConfig; } } // 上传公钥 public async uploadUserPublicKey(): Promise { return new Promise(async (resolve) => { // 获取机器名称 const machineName = os.hostname(); // 组成公钥名称 const timestamp = Date.now(); const keyTitle = `${this.user.getUsernameFromLocal()}-${machineName}-${timestamp}` const postData = { "key": this.user.getUserPublicKey(), "title": keyTitle } const uploadUrl = this.devstarDomain + `/api/v1/user/keys` // 上传公钥 fetch(uploadUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'token ' + this.user.getUserTokenFromLocal() }, body: JSON.stringify(postData) }) .then(response => { response.json().then(data => { if (response.ok) { console.log("Successfully upload new created public key.\n", data) resolve("ok") } else { throw new Error(`Failed to upload new created public key!\nError: ${data.message}`) } }) }) .catch(error => { console.error(error); }); }) } }