@amanooo/fetch
Version:
custom fetch
41 lines (38 loc) • 1.24 kB
text/typescript
export const obj2urlParams = (obj: Object = {}): string => {
return Object.keys(obj).length === 0
? ''
: Object.keys(obj)
.filter(key => obj[key] !== undefined)
.reduce((str, key) => `${str}${key}=${obj[key]}&`, '')
.slice(0, -1)
.replace(/^/, '?')
}
export function commonHeaders(): HeadersInit {
return {
'content-type': 'application/json',
}
}
export function commonRetryOpts() {
return {
retries: 3,
delay: 3 * 1000,
timeout: 60 * 1000,
}
}
export function cost(startTime: Date) {
return (new Date().getTime() - startTime.getTime()) / 1000
}
export function delay(time: number) {
return new Promise(resolve => setTimeout(() => resolve(true), time))
}
export function timeout(time: number) {
return new Promise((resolve, reject) => setTimeout(() => reject('timeout'), time));
}
export async function filter200Status(r: Response) {
if (r.status !== 200) {
const text = await r.text()
return Promise.reject(`${r.url} error status ${r.status} ${r.statusText} ${text}`)
// throw new Error(`${r.url} error status ${r.status} ${r.statusText} ${text}`);
}
return r.json()
}