You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

57 lines
2.0 KiB

import toastr from 'toastr'
export default class UtilHelper {
static deleteEntry(url, cb) {
fetch(url)
.then(res => res.ok ? res.json() : Promise.reject(res.json()))
.then(cb())
.catch(e => this._reportError(e, "delete entry"))
}
static _constructFetch(url, body, cbSucc, cbErr) {
fetch(url, {
method: "POST",
body: JSON.stringify(body),
headers: {
'Authorization': window.localStorage.getItem('token'),
'Content-Type': 'application/json'
}
})
.then(res => res.ok ? res.json() : Promise.reject(res.json()))
.then(res => cbSucc ? cbSucc(res) : null)
.catch(e => {
if (cbErr) {
cbErr(e)
} else {
let name = url.split("/").pop()
this._reportError(e, name)
}
})
}
static _reportError(e, name) {
if (e instanceof Promise) {
e.then(error => toastr.error(`Could not fetch ${name}: ${error.error}`))
} else {
toastr.error(`Could not fetch ${name}: ${e}`)
}
}
static lookupEntry(ID, cbSucc, cbErr) {
this._constructFetch("/api/v1/protected/lookup", { ID }, cbSucc, cbErr)
}
static getVisitors(ID, cbSucc) {
this._constructFetch("/api/v1/protected/visitors", { ID }, cbSucc)
}
static createEntry(entry, cbSucc) {
this._constructFetch("/api/v1/protected/create",entry, cbSucc)
}
static getRecentURLs(cbSucc) {
fetch('/api/v1/protected/recent', {
headers: {
'Authorization': window.localStorage.getItem('token'),
'Content-Type': 'application/json'
}
})
.then(res => res.ok ? res.json() : Promise.reject(res.json()))
.then(res => cbSucc ? cbSucc(res) : null)
.catch(e => this._reportError(e, "recent"))
}
}