dev comment logic for check max users
Test Workflow / test (push) Waiting to run

This commit is contained in:
vladp
2026-02-21 22:41:48 +07:00
parent 7631ea8c8c
commit f103aca8da
@@ -322,13 +322,14 @@ public class FileUploadServiceImpl implements FileUploadService {
File file = new File(finalFilePath); File file = new File(finalFilePath);
if (session.getFileType().startsWith("audio") && !isWavFile(file)) { if (session.getFileType().startsWith("audio") && !isValidWav(file)) {
session.setStatus(UploadStatus.FAILED); session.setStatus(UploadStatus.FAILED);
session.setLastError("wav file not have RIFF header"); session.setLastError("wav file not have RIFF header");
sessionRepository.save(session); sessionRepository.save(session);
throw new FileFormatException("Failed to upload chunk: .wav file not have RIFF header"); throw new FileFormatException("Failed to upload chunk: .wav file not have RIFF header or " +
"another problems with .wav file");
} }
FileProtector.Type type = "document".equals(session.getFileType()) ? FileProtector.Type type = "document".equals(session.getFileType()) ?
@@ -431,6 +432,67 @@ public class FileUploadServiceImpl implements FileUploadService {
} }
} }
public static boolean isValidWav(File file) {
if (file == null || !file.exists() || file.length() < 44) {
return false;
}
try (FileInputStream fis = new FileInputStream(file)) {
byte[] header = new byte[44];
if (fis.read(header) < 44) {
return false;
}
if (header[0] != 'R' || header[1] != 'I' ||
header[2] != 'F' || header[3] != 'F') {
return false;
}
if (header[8] != 'W' || header[9] != 'A' ||
header[10] != 'V' || header[11] != 'E') {
return false;
}
if (header[12] != 'f' || header[13] != 'm' ||
header[14] != 't' || header[15] != ' ') {
return false;
}
if (header[36] != 'd' || header[37] != 'a' ||
header[38] != 't' || header[39] != 'a') {
return false;
}
int audioFormat = (header[20] & 0xFF) | (header[21] & 0xFF) << 8;
if (audioFormat != 1 && audioFormat != 3) {
return false;
}
int numChannels = (header[22] & 0xFF) | (header[23] & 0xFF) << 8;
if (numChannels < 1 || numChannels > 8) {
return false;
}
int sampleRate = (header[24] & 0xFF) | (header[25] & 0xFF) << 8 |
(header[26] & 0xFF) << 16 | (header[27] & 0xFF) << 24;
if (sampleRate < 8000 || sampleRate > 192000) {
return false;
}
int bitsPerSample = (header[34] & 0xFF) | (header[35] & 0xFF) << 8;
if (bitsPerSample < 8 || bitsPerSample > 32) {
return false;
}
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
private int protectCost(String fileType) { private int protectCost(String fileType) {
int cost = 0; int cost = 0;