mirror of
https://github.com/Soulful-Sailer/Event-Tracker.git
synced 2026-03-29 16:16:46 -05:00
version 1.0.0 commit
This commit is contained in:
73
static/scripts/fetchFile.js
Normal file
73
static/scripts/fetchFile.js
Normal file
@@ -0,0 +1,73 @@
|
||||
let eventServer = new URL("http://" + window.location.host);
|
||||
|
||||
/**
|
||||
* sends the specified GET request to the server and returns the response
|
||||
* @param {string} filePath - path to requested file on server
|
||||
* @param {string} dataType - type of data requested (text, json, blob)
|
||||
* @param {Object} [headers] - request headers if needed
|
||||
* @param {Object} [parameters] - Search Parameters
|
||||
* @returns {Response} response - data returned by the server, decoded as indended
|
||||
*/
|
||||
function fetchFile(filePath, dataType, headers={}, parameters={}) {
|
||||
//setup URL
|
||||
let fileURL = eventServer;
|
||||
fileURL.pathname = `/${filePath}`;
|
||||
for (p in parameters) fileURL.searchParams.append(p, parameters[p]);
|
||||
|
||||
headers["method"] = "GET";
|
||||
return fetch(fileURL, headers)
|
||||
.then(response => {
|
||||
//If server replies with requested file, return it. Else log HTTP error
|
||||
if (response.ok) {
|
||||
//decode the response as indended
|
||||
switch (dataType) {
|
||||
case "text": return response.text().then(data => { return data }); break;
|
||||
case "json": return response.json().then(data => { return data }); break;
|
||||
case "blob": return response.blob().then(data => { return data }); break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log(`HTTP-Error: ${events.status}\n${fileURL}`);
|
||||
return undefined;
|
||||
}
|
||||
})
|
||||
//if request is unable to be sent, log error
|
||||
.catch(error => {
|
||||
console.log(error.message);
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* sends specified data as a POST request to the server
|
||||
* @param {string} filePath - path to requested file on server
|
||||
* @param {string} data - stringified data to be sent to server
|
||||
* @param {string} contentType - content type header for POST request
|
||||
* @param {Object} [headers] - request headers if needed
|
||||
* @returns {Response} response - server's response to the request
|
||||
*/
|
||||
function postData(filePath, data, contentType, headers={}) {
|
||||
//setup URL
|
||||
let fileURL = eventServer;
|
||||
fileURL.pathname = `/${filePath}`;
|
||||
|
||||
headers["method"] = "POST";
|
||||
headers["headers"] = {"Content-Type" : contentType};
|
||||
headers["body"] = data;
|
||||
|
||||
return fetch(fileURL, headers)
|
||||
.then(response => {
|
||||
//return the server's response, log if there is an HTTP error
|
||||
if (response.ok)
|
||||
return response;
|
||||
else {
|
||||
console.log(`HTTP-Error: ${response.status}\n${fileURL}`);
|
||||
return response;
|
||||
}
|
||||
})
|
||||
//if request is unable to be sent, log error
|
||||
.catch(error => {
|
||||
console.log(error.message);
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user