1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Migrated src/components/fetchhelper.js

This commit is contained in:
Cromefire_ 2020-05-06 00:03:42 +02:00
parent 60e670fcf7
commit 8c433afd6b
No known key found for this signature in database
GPG key ID: D3D3DB179F435F0C

View file

@ -1,21 +1,19 @@
define([], function () { /* eslint-disable indent */
'use strict'; export function getFetchPromise(request) {
function getFetchPromise(request) { const headers = request.headers || {};
var headers = request.headers || {};
if (request.dataType === 'json') { if (request.dataType === 'json') {
headers.accept = 'application/json'; headers.accept = 'application/json';
} }
var fetchRequest = { const fetchRequest = {
headers: headers, headers: headers,
method: request.type, method: request.type,
credentials: 'same-origin' credentials: 'same-origin'
}; };
var contentType = request.contentType; let contentType = request.contentType;
if (request.data) { if (request.data) {
@ -33,12 +31,12 @@ define([], function () {
headers['Content-Type'] = contentType; headers['Content-Type'] = contentType;
} }
var url = request.url; let url = request.url;
if (request.query) { if (request.query) {
var paramString = paramsToString(request.query); const paramString = paramsToString(request.query);
if (paramString) { if (paramString) {
url += '?' + paramString; url += `?${paramString}`;
} }
} }
@ -51,11 +49,11 @@ define([], function () {
function fetchWithTimeout(url, options, timeoutMs) { function fetchWithTimeout(url, options, timeoutMs) {
console.debug('fetchWithTimeout: timeoutMs: ' + timeoutMs + ', url: ' + url); console.debug(`fetchWithTimeout: timeoutMs: ${timeoutMs}, url: ${url}`);
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var timeout = setTimeout(reject, timeoutMs); const timeout = setTimeout(reject, timeoutMs);
options = options || {}; options = options || {};
options.credentials = 'same-origin'; options.credentials = 'same-origin';
@ -63,50 +61,41 @@ define([], function () {
fetch(url, options).then(function (response) { fetch(url, options).then(function (response) {
clearTimeout(timeout); clearTimeout(timeout);
console.debug('fetchWithTimeout: succeeded connecting to url: ' + url); console.debug(`fetchWithTimeout: succeeded connecting to url: ${url}`);
resolve(response); resolve(response);
}, function (error) { }, function (error) {
clearTimeout(timeout); clearTimeout(timeout);
console.debug('fetchWithTimeout: timed out connecting to url: ' + url); console.debug(`fetchWithTimeout: timed out connecting to url: ${url}`);
reject(); reject(error);
}); });
}); });
} }
function paramsToString(params) { function paramsToString(params) {
return Object.keys(params)
var values = []; .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)
.join('&');
for (var key in params) {
var value = params[key];
if (value !== null && value !== undefined && value !== '') {
values.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
}
}
return values.join('&');
} }
function ajax(request) { export function ajax(request) {
if (!request) { if (!request) {
throw new Error('Request cannot be null'); throw new Error('Request cannot be null');
} }
request.headers = request.headers || {}; request.headers = request.headers || {};
console.debug('requesting url: ' + request.url); console.debug(`requesting url: ${request.url}`);
return getFetchPromise(request).then(function (response) { return getFetchPromise(request).then(function (response) {
console.debug('response status: ' + response.status + ', url: ' + request.url); console.debug(`response status: ${response.status}, url: ${request.url}`);
if (response.status < 400) { if (response.status < 400) {
if (request.dataType === 'json' || request.headers.accept === 'application/json') { if (request.dataType === 'json' || request.headers.accept === 'application/json') {
return response.json(); return response.json();
} else if (request.dataType === 'text' || (response.headers.get('Content-Type') || '').toLowerCase().indexOf('text/') === 0) { } else if (request.dataType === 'text' || (response.headers.get('Content-Type') || '').toLowerCase().includes('text/')) {
return response.text(); return response.text();
} else { } else {
return response; return response;
@ -115,12 +104,8 @@ define([], function () {
return Promise.reject(response); return Promise.reject(response);
} }
}, function (err) { }, function (err) {
console.error('request failed to url: ' + request.url); console.error(`request failed to url: ${request.url}`);
throw err; throw err;
}); });
} }
return { /* eslint-enable indent */
getFetchPromise: getFetchPromise,
ajax: ajax
};
});