UNPKG

@ribajs/core

Version:

Core module of Riba.js

136 lines 10.9 kB
import { extend, isJson } from "@ribajs/utils/src/type.js"; export class HttpService { static setRequestHeaderEachRequest(name, value) { this._requestHeadersEachRequest.push({ name, value, }); } static async getJSON(url, data, headers = {}, options = {}) { return this.fetch(url, "GET", data, "json", headers, options); } static async post(url, data, dataType, headers = {}, options = {}) { return this.fetch(url, "POST", data, dataType, headers, options); } static async delete(url, data, dataType, headers = {}, options = {}) { return this.fetch(url, "DELETE", data, dataType, headers, options); } static async put(url, data, dataType, headers = {}, options = {}) { return this.fetch(url, "PUT", data, dataType, headers, options); } static async get(url, data, dataType, headers = {}, options = {}) { return this.fetch(url, "GET", data, dataType, headers, options); } static parseDataType(dataType) { const headers = {}; let contentType = "application/x-www-form-urlencoded"; let accept = "*/*"; switch (dataType) { case "script": contentType = "application/javascript"; break; case "json": contentType = "application/json"; accept = "application/json, text/javascript"; break; case "xml": contentType = "application/xml"; accept = "application/xml, text/xml"; break; case "text": contentType = "text/plain"; accept = "text/plain"; break; case "html": contentType = "text/html"; accept = "text/html"; break; case "form": contentType = "application/x-www-form-urlencoded"; break; } if (contentType) { headers["Content-Type"] = contentType; headers["Accept"] = accept; } return headers; } static async fetch(url, method = "GET", data = {}, dataType, headers = {}, options = {}) { if (!fetch) { throw new Error("Your browser does not support the fetch API, use xhr instead or install a polyfill."); } let body; for (const header of this._requestHeadersEachRequest) { headers[header.name] = header.value; } if (dataType) { headers = extend({ deep: false }, headers, this.parseDataType(dataType)); } if (!options.crossDomain && !headers["X-Requested-With"]) { headers["X-Requested-With"] = "XMLHttpRequest"; } const cache = options.cache ? options.cache : "default"; if (method === "GET" && data) { const queryStr = new URLSearchParams(data).toString(); if (queryStr) { const separator = url.includes("?") ? "&" : "?"; url = url + separator + new URLSearchParams(data).toString(); } } else if (data) { if (dataType === "form") { body = new URLSearchParams(data); } else { body = JSON.stringify(data); } } const response = await fetch(url, { credentials: "same-origin", cache, method, body, headers, mode: options.mode || "cors", }); let bodyResult = (await response.text()); if (typeof bodyResult === "string" && isJson(bodyResult)) { bodyResult = JSON.parse(bodyResult); } if (typeof bodyResult === "string") { switch (bodyResult) { case "null": bodyResult = null; break; case "true": bodyResult = true; break; case "false": bodyResult = false; break; case "undefined": bodyResult = undefined; break; } } const result = { status: response.status, headers: response.headers, ok: response.ok, redirected: response.redirected, statusText: response.statusText, type: response.type, url: response.url, arrayBuffer: response.arrayBuffer, blob: response.blob, bodyUsed: response.bodyUsed, clone: response.clone, formData: response.formData, text: response.text, body: bodyResult, }; return result; } static _requestHeadersEachRequest = []; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTNELE1BQU0sT0FBTyxXQUFXO0lBTWYsTUFBTSxDQUFDLDJCQUEyQixDQUFDLElBQVksRUFBRSxLQUFhO1FBQ25FLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUM7WUFDbkMsSUFBSTtZQUNKLEtBQUs7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBUU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ3pCLEdBQVcsRUFDWCxJQUFVLEVBQ1YsVUFBZSxFQUFFLEVBQ2pCLFVBQThCLEVBQUU7UUFFaEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQVNNLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN0QixHQUFXLEVBQ1gsSUFBVSxFQUNWLFFBQWlCLEVBQ2pCLFVBQWUsRUFBRSxFQUNqQixVQUE4QixFQUFFO1FBRWhDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDeEIsR0FBVyxFQUNYLElBQVUsRUFDVixRQUFpQixFQUNqQixVQUFlLEVBQUUsRUFDakIsVUFBOEIsRUFBRTtRQUVoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFP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