1
0
mirror of https://github.com/nolanlawson/pinafore synced 2025-02-02 06:47:19 +01:00

39 lines
916 B
JavaScript
Raw Normal View History

const TIMEOUT = 15000
2018-02-11 14:11:03 -08:00
function fetchWithTimeout (url, options) {
return Promise.race([
fetch(url, options),
new Promise((resolve, reject) => {
setTimeout(() => reject(new Error(`Timed out after ${TIMEOUT / 1000} seconds`)), TIMEOUT)
})
])
}
2018-02-08 22:29:29 -08:00
export async function post (url, body) {
return (await fetchWithTimeout(url, {
2018-01-13 14:19:51 -08:00
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
})).json()
}
2018-02-08 22:29:29 -08:00
export function paramsString (paramsObject) {
2018-01-13 14:19:51 -08:00
let params = new URLSearchParams()
Object.keys(paramsObject).forEach(key => {
2018-01-13 19:23:05 -08:00
params.set(key, paramsObject[key])
2018-01-13 14:19:51 -08:00
})
return params.toString()
}
2018-02-08 22:29:29 -08:00
export async function get (url, headers = {}) {
return (await fetchWithTimeout(url, {
2018-01-13 14:19:51 -08:00
method: 'GET',
headers: Object.assign(headers, {
2018-02-08 22:29:29 -08:00
'Accept': 'application/json'
2018-01-13 14:19:51 -08:00
})
})).json()
2018-02-08 22:29:29 -08:00
}