feat: add api requests

This commit is contained in:
2025-07-07 15:45:25 +03:00
parent f20785993a
commit 9b39cf285d
8 changed files with 144 additions and 5 deletions

View File

@@ -0,0 +1,35 @@
import { API_ROUTES } from '@shared/config/routes';
import { TBaseForm } from '@shared/api/api.types';
import { CORE } from '@shared/config/core';
type TRequest = TBaseForm;
const sendFormFn = async ({ ...props }: TRequest) => {
try {
const response = await fetch('/api' + API_ROUTES.SEND_FORM, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
...props,
secure: CORE.MAIL_SECURE_KEY,
}),
});
if (response.ok) {
return response;
} else {
if (response.status === 400) throw new Error(`400 Bad request`);
if (response.status === 401) throw new Error(`401 Unauthorized`);
if (response.status === 500) throw new Error('500 Internal server error');
throw new Error(`${response.status} - Network response failure`);
}
} catch (e) {
console.error(e);
}
};
export { sendFormFn };

View File

@@ -0,0 +1,6 @@
export type TBaseForm = {
form: string;
name?: string;
phone: string;
message?: string;
};

View File

@@ -0,0 +1,7 @@
export const CORE = {
MAIL_USER: process.env.NEXT_PUBLIC_MAIL_USER,
MAIL_PASS: process.env.NEXT_PUBLIC_MAIL_PASS,
MAIL_FROM: process.env.NEXT_PUBLIC_MAIL_FROM,
MAIL_TO: process.env.NEXT_PUBLIC_MAIL_TO,
MAIL_SECURE_KEY: process.env.NEXT_PUBLIC_MAIL_SECURE_KEY,
} as const;

View File

@@ -0,0 +1,4 @@
export const API_ROUTES = {
SEND_FORM: '/sendform',
HEARTBEAT: '/heartbeat',
} as const;