'use server' import { API_BASE_URL } from '@/app/actions/definitions'; import { getSessionData } from '@/app/actions/session'; interface initMessageBody { file_name: string, file_type: string, extension: string, file_size: number | string, action?: string, token?: string } export async function fileUpload(messageBody: initMessageBody) { const token = await getSessionData('token'); if (!token) { return; } const message = messageBody; message.action = "init"; message.token = token; try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 20004, message_body: message }), headers: { "Content-Type": "application/json", "Accept": "application/json" } }); if (response.ok) { let parsed = await response.json() as { message_desc: string, message_body: { upload_id: string, total_chunks: number, chunk_size: number, status: string }, message_code: string }; if (parsed.message_desc === 'Operation successful') { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return error; } } export async function cancelUpload(udloadId: string) { try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 20004, message_body: { action: "cancel", upload_id: udloadId, } }), headers: { "Content-Type": "application/json", "Accept": "application/json" } }); if (response.ok) { let parsed = await response.json() as { message_code: string, message_desc: string, message_body: { upload_id: string, message: string } }; if (parsed.message_desc === 'Upload cancelled successfully') { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return error; } } export async function chunkUpload(formData: FormData) { console.log('chunkUpload'); try { const response = await fetch(`${API_BASE_URL}/api/v1/files/chunk`, { method: 'POST', body: formData }); console.log('chunkUpload fetch'); if (response.ok) { let parsed = await response.json(); console.log('chunkUpload response.ok'); console.log(parsed); if (parsed.message_desc === 'Upload cancelled successfully') { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return error } } export async function checkChunkStatus(upload_id: string) { try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 20004, message_body: { action: 'chunks', upload_id } }), headers: { "Content-Type": "application/json", "Accept": "application/json" } }); if (response.ok) { let parsed = await response.json(); if (parsed.message_desc === 'Upload cancelled successfully') { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return error } } export async function getAllowedFilesExtensions(type: string) { try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 20004, message_body: { action: 'file_extension', file_type: type } }), headers: { "Content-Type": "application/json", "Accept": "application/json" } }); if (response.ok) { let parsed = await response.json(); if (parsed.message_desc === 'Operation successful') { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return error } }