Added validation for tags formats
This commit is contained in:
parent
cab48f940f
commit
a2a6512d9c
2 changed files with 56 additions and 2 deletions
|
|
@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||||
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
||||||
|
import ru.nbch.credit_tracker.entities.monitoring_request.Subject;
|
||||||
import ru.nbch.credit_tracker.entities.signal_package.Signals;
|
import ru.nbch.credit_tracker.entities.signal_package.Signals;
|
||||||
import ru.nbch.credit_tracker.enums.SignalError;
|
import ru.nbch.credit_tracker.enums.SignalError;
|
||||||
import ru.nbch.credit_tracker.enums.Status;
|
import ru.nbch.credit_tracker.enums.Status;
|
||||||
|
|
@ -19,8 +20,11 @@ import ru.nbch.credit_tracker.service.scoring.AuthorizationService;
|
||||||
import ru.nbch.credit_tracker.service.signal.SignalRestService;
|
import ru.nbch.credit_tracker.service.signal.SignalRestService;
|
||||||
import ru.nbch.credit_tracker.service.xml.IXmlProcessor;
|
import ru.nbch.credit_tracker.service.xml.IXmlProcessor;
|
||||||
import ru.nbch.credit_tracker.service.xml.XmlUtilService;
|
import ru.nbch.credit_tracker.service.xml.XmlUtilService;
|
||||||
|
import ru.nbch.credit_tracker.utils.ValidationUtil;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
@ -124,6 +128,7 @@ public class SignalFacade {
|
||||||
// валидация xml
|
// валидация xml
|
||||||
ResponseEntity<Resource> errorResponse = validateMonitoringRequest(monitoringRequest);
|
ResponseEntity<Resource> errorResponse = validateMonitoringRequest(monitoringRequest);
|
||||||
if (errorResponse != null) {
|
if (errorResponse != null) {
|
||||||
|
signalService.rejectPackage(monitoringRequest);
|
||||||
return errorResponse;
|
return errorResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -191,7 +196,24 @@ public class SignalFacade {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ResponseEntity<Resource> validateTagsTypes(MonitoringRequest request) {
|
private ResponseEntity<Resource> validateTagsTypes(MonitoringRequest request) {
|
||||||
// TODO проверка на типы тут уже можно регистрировать в бд REGECTED реквесты
|
if (!ValidationUtil.validatePackageName(request.getPackageName())) {
|
||||||
|
return getBadResponse(SignalError.ERROR_008);
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> uniqueIds = new HashSet<>();
|
||||||
|
for (Subject subject : request.getSubjects().getSubject()) {
|
||||||
|
if (!ValidationUtil.validatePhone(subject.getClientId())) {
|
||||||
|
return getBadResponse(SignalError.ERROR_003);
|
||||||
|
}
|
||||||
|
if (!ValidationUtil.validateNPId(subject.getId())) {
|
||||||
|
return getBadResponse(SignalError.ERROR_010);
|
||||||
|
}
|
||||||
|
// проверка на уникальность Id внутри одного пакета
|
||||||
|
if (!uniqueIds.add(subject.getId())) {
|
||||||
|
return getBadResponse(SignalError.ERROR_004, subject.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
package ru.nbch.credit_tracker.utils;
|
||||||
|
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class ValidationUtil {
|
||||||
|
|
||||||
|
private static String phoneRegex = "^\\d{9}$";
|
||||||
|
private static String packageNameRegex = "^[A-Z0-9_]{1,22}$";
|
||||||
|
private static String npIdRegex = "^\\S{1,36}$";
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean validatePhone(String input) {
|
||||||
|
if(input == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Pattern.matches(phoneRegex, input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean validatePackageName(String input) {
|
||||||
|
if(input == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Pattern.matches(packageNameRegex, input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean validateNPId(String input) {
|
||||||
|
if(input == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Pattern.matches(npIdRegex, input);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue