45 lines
1016 B
JavaScript
45 lines
1016 B
JavaScript
|
const fetch = require("node-fetch")
|
||
|
class API {
|
||
|
constructor(host) {
|
||
|
this.host = host
|
||
|
}
|
||
|
|
||
|
apiCall =
|
||
|
method =>
|
||
|
async (url = "", options = {}) => {
|
||
|
if (!options.headers) {
|
||
|
options.headers = {}
|
||
|
}
|
||
|
|
||
|
if (!options.headers["Content-Type"]) {
|
||
|
options.headers = {
|
||
|
"Content-Type": "application/json",
|
||
|
Accept: "application/json",
|
||
|
...options.headers,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let json = options.headers["Content-Type"] === "application/json"
|
||
|
|
||
|
const requestOptions = {
|
||
|
method: method,
|
||
|
body: json ? JSON.stringify(options.body) : options.body,
|
||
|
headers: options.headers,
|
||
|
// TODO: See if this is necessary
|
||
|
credentials: "include",
|
||
|
}
|
||
|
|
||
|
const resp = await fetch(`${this.host}${url}`, requestOptions)
|
||
|
|
||
|
return resp
|
||
|
}
|
||
|
|
||
|
post = this.apiCall("POST")
|
||
|
get = this.apiCall("GET")
|
||
|
patch = this.apiCall("PATCH")
|
||
|
del = this.apiCall("DELETE")
|
||
|
put = this.apiCall("PUT")
|
||
|
}
|
||
|
|
||
|
module.exports = API
|