import axios from 'axios'
|
import md5 from 'md5'
|
import jsSHA from 'jssha'
|
|
window.GLOB.IndexDB = null
|
|
let service = window.GLOB.service ? '-' + window.GLOB.service.replace('/', '') : ''
|
let db = `mk_inter${service}`
|
|
if (window.indexedDB) {
|
try {
|
let request = window.indexedDB.open(db, 1)
|
request.onerror = () => {
|
console.warn('IndexedDB 初始化失败!')
|
}
|
request.onsuccess = () => {
|
window.GLOB.IndexDB = request.result
|
}
|
request.onupgradeneeded = (event) => {
|
window.GLOB.IndexDB = event.target.result
|
if (!window.GLOB.IndexDB.objectStoreNames.contains('interfaces')) {
|
window.GLOB.IndexDB.createObjectStore('interfaces', { keyPath: 'id' })
|
}
|
}
|
} catch (e) {
|
console.warn('IndexedDB 初始化失败,历史记录将无法查询或修改!')
|
window.GLOB.IndexDB = null
|
}
|
}
|
|
axios.defaults.crossDomain = true
|
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
|
axios.defaults.withCredentials = false
|
|
axios.interceptors.request.use((config) => {
|
return config
|
}, (error) => {
|
return Promise.reject(error)
|
})
|
|
axios.interceptors.response.use((response) => {
|
return Promise.resolve(response)
|
}, (error) => {
|
return Promise.reject(error)
|
})
|
|
class Api {
|
/**
|
* @description 登录系统, 获取用户信息
|
*/
|
dologon (url, method, header, n) {
|
let config = {
|
url,
|
method
|
}
|
|
if (header) {
|
config.headers = header
|
}
|
|
if (n) {
|
let _param = JSON.parse(n)
|
let param = {}
|
|
Object.keys(_param).forEach(key => {
|
param[key.toLowerCase()] = _param[key]
|
})
|
|
if (param.type && param.username && param.password && param.timestamp) {
|
if (param.type === 'S') {
|
let shaObj = new jsSHA('SHA-1', 'TEXT')
|
shaObj.update(param.password)
|
param.password = shaObj.getHash('HEX').toUpperCase()
|
param.password = md5(param.username + param.password + param.timestamp)
|
} else if (/^mk_/ig.test(param.type)) {
|
let shaObj = new jsSHA('SHA-1', 'TEXT')
|
shaObj.update(param.password)
|
param.password = shaObj.getHash('HEX').toUpperCase()
|
param.password = md5(param.privatekey + param.username + param.password + param.timestamp)
|
|
delete param.privatekey
|
}
|
}
|
|
config.data = JSON.stringify(param)
|
}
|
|
return axios(config)
|
}
|
|
/**
|
* @description 通用请求
|
*/
|
normalRequest (url, method, header, n) {
|
let config = {
|
url,
|
method
|
}
|
|
if (header) {
|
config.headers = header
|
}
|
if (n) {
|
config.data = n
|
}
|
|
return axios(config)
|
}
|
|
writeInIndexDB (data) {
|
if (!window.GLOB.IndexDB) return
|
|
window.GLOB.IndexDB.transaction(['interfaces'], 'readwrite').objectStore('interfaces').add(data)
|
}
|
|
getInterfaces () {
|
if (!window.GLOB.IndexDB) return Promise.resolve()
|
|
return new Promise((resolve, reject) => {
|
let request = window.GLOB.IndexDB.transaction(['interfaces']).objectStore('interfaces').openCursor()
|
let list = []
|
|
request.onsuccess = (e) => {
|
let cursor = e.target.result
|
if (cursor) {
|
if (cursor.value) {
|
list.push(cursor.value)
|
}
|
cursor.continue()
|
} else {
|
resolve(list)
|
}
|
}
|
})
|
}
|
|
delInterface (id) {
|
if (!window.GLOB.IndexDB) return
|
|
window.GLOB.IndexDB.transaction(['interfaces'], 'readwrite').objectStore('interfaces').delete(id)
|
}
|
|
/**
|
* @description 清空接口调用记录
|
*/
|
clearInterfaces () {
|
if (!window.GLOB.IndexDB) return
|
|
window.GLOB.IndexDB.transaction(['interfaces'], 'readwrite').objectStore('interfaces').clear()
|
}
|
}
|
|
export default new Api()
|