import axios from 'axios' import jsSHA from 'jssha' class DirectApi { /** * @description 鉴权挑战 * @param {Object} param 查询及提交参数 */ w4kLogin (ip, username = 'admin', password) { return new Promise((resolve, reject) => { let challurl = ip + '/api/auth/login/challenge?username=' + username challurl = '/trans/redirect?rd=' + challurl + '&method=get' let loginurl = ip + '/api/auth/login' loginurl = '/trans/redirect?rd=' + loginurl + '&method=post' axios({ url: challurl, method: 'post' // get }).then(res => { if (res.errors) { reject(res) } else { const shaObj = new jsSHA('SHA-256', 'TEXT', { encoding: 'UTF8' }) shaObj.update(password + res.salt + res.challenge) const hash = shaObj.getHash('HEX') axios({ url: loginurl, method: 'post', data: { session_id: res.session_id, username: username, password: hash } }).then(result => { resolve(result) }, (err) => { reject(err) }) } }, (err) => { reject(err) }) }) } w4kQueryUsers (ip) { let url = ip + '/api/persons/query' url = '/trans/redirect?rd=' + url + '&method=post' return axios({ url: url, method: 'POST', withCredentials: true, headers: { 'Content-Type': 'application/json' }, data: { limit: 100, offset: 0, sort: 'desc', query_id: '', query_string: '' } }) } w4kAddUsers (ip, data) { return new Promise((resolve, reject) => { let delurl = ip + '/api/persons/item/' + data.id delurl = '/trans/redirect?rd=' + delurl + '&method=DELETE' let addurl = ip + '/api/persons/item' addurl = '/trans/redirect?rd=' + addurl + '&method=post' if (data.deleted) { delete data.deleted axios({ url: delurl, method: 'post' // DELETE }).then(res => { if (res.errors) { reject(res) } else { axios({ url: addurl, method: 'post', data: data }).then(result => { resolve(result) }, (err) => { reject(err) }) } }, (err) => { reject(err) }) } else { delete data.deleted axios({ url: addurl, method: 'post', data: data }).then(result => { resolve(result) }, (err) => { reject(err) }) } }) } } export default new DirectApi()