Files
no-copy-frontend/src/app/actions/violationActions.ts
T

224 lines
4.3 KiB
TypeScript
Raw Normal View History

2026-03-12 17:44:02 +07:00
'use server'
import { getSessionData } from '@/app/actions/session';
import { API_BASE_URL } from '@/app/actions/definitions';
export async function getViolationSearchStatus() {
const token = await getSessionData('token');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/global-search/actual-task`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': `Bearer ${token}`,
}
});
if (response.ok) {
2026-03-13 13:42:07 +07:00
const text = await response.text();
if (text) {
try {
const parsed = JSON.parse(text);
console.log('Parsed:', parsed);
return parsed;
} catch (e) {
console.log('Not JSON, raw text:', text);
return {
status: text === 'Task not found' ? 'task-not-found' : text
};
}
} else {
return null;
}
2026-03-12 17:44:02 +07:00
} else {
return null
}
} catch (error) {
return null
}
}
export async function startGlobalMonitoring(monitoringType: 'monitoring' | 'all_files') {
const token = await getSessionData('token');
console.log('startGlobalMonitoring');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/global-search/start`, {
method: 'POST',
body: JSON.stringify({
2026-03-13 13:42:07 +07:00
searchType: monitoringType,
...(monitoringType === 'all_files' && { fileIds: [] })
2026-03-12 17:44:02 +07:00
}),
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`,
}
});
if (response.ok) {
2026-03-13 13:42:07 +07:00
const parsed: {
taskId: string,
status: string,
totalFiles: number
} = await response.json();
2026-03-12 17:44:02 +07:00
console.log(parsed);
2026-03-13 13:42:07 +07:00
if (parsed?.status === 'ACCEPTED') {
2026-03-12 17:44:02 +07:00
return parsed
} else {
return null
}
} else {
return null
}
} catch (error) {
return null
}
2026-03-16 17:12:52 +07:00
}
export async function getViolationFilesArray() {
const token = await getSessionData('token');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/global-search/violation-summary`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': `Bearer ${token}`,
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed.length) {
return parsed;
} else {
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return []
}
}
/* статистика нурешений */
export async function fetchViolationStats() {
const token = await getSessionData('token');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 30010,
message_body: {
token: token
}
}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed) {
return parsed;
} else {
throw null;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return null
}
}
export async function getFileViolations(fileId: string, page: number) {
2026-03-18 18:09:33 +07:00
const token = await getSessionData('token');
2026-03-16 17:12:52 +07:00
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 30009,
message_body: {
file_id: fileId,
page: page,
size: 5,
2026-03-18 18:09:33 +07:00
sort_direction: "desc",
token: token
2026-03-16 17:12:52 +07:00
}
}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed.message_body) {
return parsed.message_body;
} else {
throw null;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return null
}
2026-03-18 18:09:33 +07:00
}
export async function fetchViolationGeography() {
const token = await getSessionData('token');
/* "group_by": "tld" */
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 30009,
message_body: {
group_by: "domain",
token: token
}
}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed) {
return parsed;
} else {
throw null;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return null
}
2026-03-12 17:44:02 +07:00
}