thorio/KGrabber

View on GitHub
src/js/util/ajax.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * @typedef {Object} Response
 * @property {String} response
 */

/**
 * Makes an HTTP request
 * @param {String} method
 * @param {String} url
 * @param {Object} obj
 * @param {any} obj.data
 * @param {Object} obj.headers
 * @returns {Promise<Response>} Response
 * @private
 */
function request(method, url, { data, headers } = {}) {
    return new Promise((resolve, reject) => {
        GM_xmlhttpRequest({
            method,
            url,
            data,
            headers,
            onload: resolve,
            onerror: reject,
        });
    });
}

/**
 * Makes a HTTP GET request
 * @param {String} url
 * @param {Object} headers
 * @returns {Promise<Response>} Response
 */
exports.get = (url, headers) => {
    return request("GET", url, { headers });
};

/**
 * Makes a HTTP POST request
 * @param {String} url
 * @param {Object} headers
 * @param {Object} data
 * @returns {Promise<Response>} Response
 */
exports.post = (url, data, headers) => {
    return request("POST", url, { data, headers });
};

/**
 * Makes a HTTP HEAD request
 * @param {String} url
 * @param {Object} headers
 * @returns {Promise<Response>} Response
 */
exports.head = (url, headers) => {
    return request("HEAD", url, { headers });
};