blob: 1b0d4e31e9b2d512fff911136fbab3974a960477 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import axios from 'axios'
import { Message } from 'element-ui'
import C from './conf'
axios.defaults.headers.post['Content-Type'] = 'application/json; charset=UTF-8'
axios.defaults.withCredentials = true
function ajax(url, type, options, config) {
return new Promise((resolve, reject) => {
axios({
method: type,
url: config ? C[config.host] + url : C.HOST + url,
timeout: 10000,
headers: {
'Access-Token': window.localStorage.getItem('Access-Token') || ''
},
params: type === 'get' ? options : null,
data: options
})
.then(result => {
const data = result.data
const success = data.success
if (success) {
resolve(data)
return
}
if (!success) {
if (data.errorCode === 403) {
const store = window.localStorage
store.removeItem('Access-Token')
store.removeItem('username')
location.href = '#/login'
return
}
reject(data)
Message({
message: data.errorMsg,
type: 'error',
duration: 2 * 1000
})
return
}
})
.catch(error => {
Message({
message: error,
type: 'error',
duration: 2 * 1000
})
})
})
}
const config = {
get(url, options, config) {
return new Promise((resolve, reject) => {
ajax(url, 'get', options, config).then(
data => {
resolve(data)
},
error => {
reject(error)
}
)
})
},
post(url, options, config) {
return new Promise((resolve, reject) => {
ajax(url, 'post', options, config).then(
data => {
resolve(data)
},
error => {
reject(error)
}
)
})
},
put(url, options) {
return new Promise((resolve, reject) => {
ajax(url, 'put', options).then(
data => {
resolve(data)
},
error => {
reject(error)
}
)
})
},
delete(url, options) {
return new Promise((resolve, reject) => {
ajax(url, 'delete', options).then(
data => {
resolve(data)
},
error => {
reject(error)
}
)
})
}
}
export default config