Files
forgetmenot-django/site/src/utils/api.js
2020-11-13 16:24:00 -06:00

71 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Utils: Back-end
*/
import config from "../../config";
/**
* Register a new user
*/
export const userRegister = async (email, password) => {
return await requestApi("/users/register", "POST", { email, password });
};
/**
* Login a new user
*/
export const userLogin = async (email, password) => {
return await requestApi("/users/login", "POST", { email, password });
};
/**
* userGet
*/
export const userGet = async (token) => {
return await requestApi("/user", "POST", null, {
Authorization: `Bearer ${token}`,
});
};
/**
* API request to call the backend
*/
export const requestApi = async (
path = "",
method = "GET",
data = null,
headers = {}
) => {
// Check if API URL has been set
if (!config?.domains?.api) {
throw new Error(
`Error: Missing API Domain Please add the API domain from your serverless Express.js back-end to this front-end application. You can do this in the "site" folder, in the "./config.js" file. Instructions are listed there and in the documentation.`
);
}
// Prepare URL
if (!path.startsWith("/")) {
path = `/${path}`;
}
const url = `${config.domains.api}${path}`;
// Set headers
headers = Object.assign({ "Content-Type": "application/json" }, headers);
// Default options are marked with *
const response = await fetch(url, {
method: method.toUpperCase(),
mode: "cors",
cache: "no-cache",
headers,
body: data ? JSON.stringify(data) : null,
});
if (response.status < 200 || response.status >= 300) {
const error = await response.json();
throw new Error(error.error);
}
return await response.json();
};