use of org.folio.oaipmh.domain.Verb in project mod-oai-pmh by folio-org.
the class VerbValidator method validateExclusiveParam.
/**
* In case of resumption token param presence verifies if there any other parameters were specified too. If they were then error
* will be added to error list.
*
* @param verb - verb
* @param requestParams - request parameters
* @param request - oai-pmh request
* @param errors - list of errors
*/
private void validateExclusiveParam(Verb verb, Map<String, String> requestParams, Request request, List<OAIPMHerrorType> errors) {
String resumptionToken = requestParams.get(verb.getExclusiveParam());
if (verb.getExclusiveParam() != null && resumptionToken != null) {
requestParams.keySet().stream().filter(p -> !verb.getExcludedParams().contains(p)).filter(p -> !verb.getExclusiveParam().equals(p)).findAny().ifPresent(param -> {
if (!param.equals(VERB_PARAM)) {
errors.add(new OAIPMHerrorType().withCode(BAD_ARGUMENT).withValue(format(EXCLUSIVE_PARAM_ERROR_MESSAGE, verb.name(), verb.getExclusiveParam())));
}
});
if (!request.isResumptionTokenParsableAndValid()) {
OAIPMHerrorType error = new OAIPMHerrorType().withCode(BAD_RESUMPTION_TOKEN).withValue(format(INVALID_RESUMPTION_TOKEN, verb.name()));
errors.add(error);
return;
}
if (request.isResumptionTokenTimeExpired()) {
OAIPMHerrorType errorByExpiredTime = new OAIPMHerrorType().withCode(BAD_RESUMPTION_TOKEN).withValue(EXPIRED_RESUMPTION_TOKEN);
errors.add(errorByExpiredTime);
}
}
}
use of org.folio.oaipmh.domain.Verb in project mod-oai-pmh by folio-org.
the class VerbValidator method validate.
/**
* Validates request parameters except 'from' and 'until' against particular verb.
*
* @param object - name of verb against witch parameters are validated
* @param requestParams - map with request parameters
* @return list of errors.
*/
public List<OAIPMHerrorType> validate(Object object, Map<String, String> requestParams, Request request) {
List<OAIPMHerrorType> errors = new ArrayList<>();
String verbName = Objects.nonNull(object) ? object.toString() : "empty";
Verb verb = Verb.fromName(verbName);
if (Objects.nonNull(verb)) {
validateRequiredParams(requestParams, verb, errors);
validateExclusiveParam(verb, requestParams, request, errors);
validateIllegalParams(verb, requestParams, errors);
} else {
errors.add(new OAIPMHerrorType().withCode(BAD_VERB).withValue(format(VERB_NOT_IMPLEMENTED_ERROR_MESSAGE, verbName)));
}
return errors;
}
use of org.folio.oaipmh.domain.Verb in project mod-oai-pmh by folio-org.
the class VerbValidator method validateRequiredParams.
/**
* Verifies that any of the required parameters is not missing.
*
* @param requestParams - vertx context
* @param verb - request verb
* @param errors - errors list
*/
private void validateRequiredParams(Map<String, String> requestParams, Verb verb, List<OAIPMHerrorType> errors) {
Set<String> params = new HashSet<>();
if (verb.getExclusiveParam() != null && requestParams.get(verb.getExclusiveParam()) != null) {
params.add(verb.getExclusiveParam());
} else {
params.addAll(verb.getRequiredParams());
}
final String missingRequiredParams = params.stream().filter(p -> StringUtils.isEmpty(requestParams.get(p))).collect(Collectors.joining(","));
if (StringUtils.isNotEmpty(missingRequiredParams)) {
errors.add(new OAIPMHerrorType().withCode(BAD_ARGUMENT).withValue(format(MISSING_REQUIRED_PARAMETERS_ERROR_MESSAGE, missingRequiredParams)));
}
}
Aggregations