diff options
| author | stonedDiscord <Tukz@gmx.de> | 2022-03-09 07:34:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-09 07:34:56 +0100 |
| commit | 91c3769a78e59924a73db6c759844a9026e8da00 (patch) | |
| tree | 64ce4ac3e786b31a935be40438d5dc831121f055 /webAO/services/request.js | |
| parent | 63a282481d033640a87f97b74f31136410c93717 (diff) | |
| parent | cb6a2ddb36d27abd12a6d0b9aa493194d4c242a2 (diff) | |
Merge pull request #100 from caleb-mabry/webp-support
WebAO Partial Image Fixes
Diffstat (limited to 'webAO/services/request.js')
| -rw-r--r-- | webAO/services/request.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/webAO/services/request.js b/webAO/services/request.js new file mode 100644 index 0000000..6479dcc --- /dev/null +++ b/webAO/services/request.js @@ -0,0 +1,32 @@ +/** + * Make a GET request for a specific URI. + * @param {string} url the URI to be requested + * @returns response data + * @throws {Error} if status code is not 2xx, or a network error occurs + */ +const request = async (url) => new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.responseType = 'text'; + xhr.addEventListener('error', () => { + const err = new Error(`Request for ${url} failed: ${xhr.statusText}`); + err.code = xhr.status; + reject(err); + }); + xhr.addEventListener('abort', () => { + const err = new Error(`Request for ${url} was aborted!`); + err.code = xhr.status; + reject(err); + }); + xhr.addEventListener('load', () => { + if (xhr.status < 200 || xhr.status >= 300) { + const err = new Error(`Request for ${url} failed with status code ${xhr.status}`); + err.code = xhr.status; + reject(err); + } else { + resolve(xhr.response); + } + }); + xhr.open('GET', url, true); + xhr.send(); +}); +export default request; |
