Skip to content
Snippets Groups Projects
axios.ts 1.18 KiB
Newer Older
/**
 * Created by glenn on 7/6/2017.
 */
import axios from 'axios';

// export const CancelToken = axios.CancelToken;

/**
 *
 * @param obj
 * @param keyArr
 * @param defaultVal
 * @returns
 */
function getValue(obj: { [s: string]: any }, keyArr: string[], defaultVal: any = null): any {
    let k = keyArr.splice(0, 1)[0];

    if (keyArr.length == 0) {
        return typeof obj[k] === 'undefined' ? defaultVal : obj[k];
    } else {
        if (typeof  obj[k] === 'undefined') {
            throw `key error: ${k} ${obj.toString()}`;
        } else {
            return getValue(obj[k], keyArr);
        }
    }
}


/**
 *
 * @param {string} endpoint
 * @param {(d: Object) => any} callback
 * @param {Object} params
 * @param {(d: Object) => any} error
 * @returns {any}
 */
export const get = (endpoint: string,
                          callback: (d: Object) => any,
                          params: Object = {},
                          error: (d?: Object) => any = () => {}): any => {
    axios.get(endpoint, {params: params}).then((response: any) => {

        let data = getValue(response, ['data'], null);
        callback(data);
    }).catch((reason: any) => {
        error(reason);
    });
};