/**
 * ajax请求相关的服务
 */
import ServiceUrl from './config.env'

class AjaxService {
    constructor() {
        this.name = 'AjaxService'
    }
    getBaseUrl(url = '') {
        return url.indexOf('://') > -1 ? url : ServiceUrl + url
    }
    getHeaders({ header = {} }) {
        header['Accept'] = 'application/json'
        header['Content-Type'] = 'application/json'
        return header
    }
    request(options = {}) {
        let header = this.getHeaders(options)
        let url = this.getBaseUrl(options.url)
        if (options.header) {
            header = Object.assign(header, options.header)
        }
        let { isLoading = true } = options
        if (isLoading) {
            uni.showLoading({ title: '加载中' })
        }
        const requestPromise = new Promise((resolve, reject) => {
            uni.request({
                url: url,
                method: options.method || 'POST',
                data: options.data || {},
                header,
                success: res => {
                    if (isLoading) uni.hideLoading()
                    if (options.isStatus) {
                        resolve(res.data)
                    } else {
                        if (res.data.code === 0) {
                            resolve(res.data)
                        } else {
                            reject(res.data)
                        }
                    }
                },
                fail: error => {
                    reject(error)
                    uni.hideLoading()
                }
            })
        })
        return requestPromise
    }
    get(options) {
        options.method = 'GET'
        return this.request(options)
    }
    post(options) {
        options.method = 'POST'
        return this.request(options)
    }
}
export default new AjaxService()
