Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const host = "http://localhost:3030";
- //universal function for requests:
- async function request(url, options) {
- try {
- const response = await fetch(host + url, options);
- if (response.ok !== true) {
- if (response.status == 403) {
- sessionStorage.removeItem("userData"); // problem with registration!
- }
- const error = await response.json();
- throw new Error(error.message);
- }
- if (response.status == 204) {
- return response;
- } else {
- return response.json();
- }
- } catch (err) {
- alert(err.message);
- throw err;
- }
- }
- // function for creating request options:
- function createOptions(method = "get", data) {
- const options = {
- method,
- headers: {},
- };
- if (data !== undefined) {
- options.headers["Content-Type"] = "application/json";
- options.body = JSON.stringify(data);
- }
- const userData = JSON.parse(sessionStorage.getItem("userData"));
- if (userData !== null) {
- options.headers["X-Authorization"] = userData.token;
- }
- return options;
- }
- export async function get(url) {
- return request(url, createOptions());
- }
- export async function post(url, data) {
- return request(url, createOptions("post", data));
- }
- export async function put(url, data) {
- return request(url, createOptions("put", data));
- }
- export async function del(url) {
- return request(url, createOptions("delete"));
- }
- export async function login(email, password) {
- const result = await post("/users/login", { email, password });
- const userData = {
- email: result.email,
- id: result._id,
- token: result.accessToken,
- };
- sessionStorage.setItem("userData", JSON.stringify(userData));
- }
- export async function register(email, password) {
- const result = await post("/users/register", { email, password });
- const userData = {
- email: result.email,
- id: result._id,
- token: result.accessToken,
- };
- sessionStorage.setItem("userData", JSON.stringify(userData));
- }
- export async function logout() {
- await get("/users/logout");
- sessionStorage.removeItem("userData");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement