Search in sources :

Example 1 with Verb

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);
        }
    }
}
Also used : INVALID_RESUMPTION_TOKEN(org.folio.oaipmh.Constants.INVALID_RESUMPTION_TOKEN) EXPIRED_RESUMPTION_TOKEN(org.folio.oaipmh.Constants.EXPIRED_RESUMPTION_TOKEN) Set(java.util.Set) VERB_PARAM(org.folio.oaipmh.Constants.VERB_PARAM) StringUtils(org.apache.commons.lang3.StringUtils) Collectors(java.util.stream.Collectors) String.format(java.lang.String.format) BAD_ARGUMENT(org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_ARGUMENT) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Objects(java.util.Objects) OAIPMHerrorType(org.openarchives.oai._2.OAIPMHerrorType) Component(org.springframework.stereotype.Component) List(java.util.List) Request(org.folio.oaipmh.Request) Verb(org.folio.oaipmh.domain.Verb) Map(java.util.Map) BAD_RESUMPTION_TOKEN(org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_RESUMPTION_TOKEN) BAD_VERB(org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_VERB) OAIPMHerrorType(org.openarchives.oai._2.OAIPMHerrorType)

Example 2 with Verb

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;
}
Also used : OAIPMHerrorType(org.openarchives.oai._2.OAIPMHerrorType) Verb(org.folio.oaipmh.domain.Verb) ArrayList(java.util.ArrayList)

Example 3 with Verb

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)));
    }
}
Also used : INVALID_RESUMPTION_TOKEN(org.folio.oaipmh.Constants.INVALID_RESUMPTION_TOKEN) EXPIRED_RESUMPTION_TOKEN(org.folio.oaipmh.Constants.EXPIRED_RESUMPTION_TOKEN) Set(java.util.Set) VERB_PARAM(org.folio.oaipmh.Constants.VERB_PARAM) StringUtils(org.apache.commons.lang3.StringUtils) Collectors(java.util.stream.Collectors) String.format(java.lang.String.format) BAD_ARGUMENT(org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_ARGUMENT) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Objects(java.util.Objects) OAIPMHerrorType(org.openarchives.oai._2.OAIPMHerrorType) Component(org.springframework.stereotype.Component) List(java.util.List) Request(org.folio.oaipmh.Request) Verb(org.folio.oaipmh.domain.Verb) Map(java.util.Map) BAD_RESUMPTION_TOKEN(org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_RESUMPTION_TOKEN) BAD_VERB(org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_VERB) OAIPMHerrorType(org.openarchives.oai._2.OAIPMHerrorType) HashSet(java.util.HashSet)

Aggregations

ArrayList (java.util.ArrayList)3 Verb (org.folio.oaipmh.domain.Verb)3 OAIPMHerrorType (org.openarchives.oai._2.OAIPMHerrorType)3 String.format (java.lang.String.format)2 HashSet (java.util.HashSet)2 List (java.util.List)2 Map (java.util.Map)2 Objects (java.util.Objects)2 Set (java.util.Set)2 Collectors (java.util.stream.Collectors)2 StringUtils (org.apache.commons.lang3.StringUtils)2 EXPIRED_RESUMPTION_TOKEN (org.folio.oaipmh.Constants.EXPIRED_RESUMPTION_TOKEN)2 INVALID_RESUMPTION_TOKEN (org.folio.oaipmh.Constants.INVALID_RESUMPTION_TOKEN)2 VERB_PARAM (org.folio.oaipmh.Constants.VERB_PARAM)2 Request (org.folio.oaipmh.Request)2 BAD_ARGUMENT (org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_ARGUMENT)2 BAD_RESUMPTION_TOKEN (org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_RESUMPTION_TOKEN)2 BAD_VERB (org.openarchives.oai._2.OAIPMHerrorcodeType.BAD_VERB)2 Component (org.springframework.stereotype.Component)2