/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.oaipmh.server; import static org.apache.commons.lang3.StringUtils.trimToNull; import static org.opencastproject.util.data.Option.eq; import static org.opencastproject.util.data.Option.option; import org.opencastproject.oaipmh.OaiPmhConstants; import org.opencastproject.util.data.Option; /** * Helper to encapsulate HTTP parameter handling. */ public abstract class Params { /** * Implement this method to supply the needed parameters. * * @return the parameter or null or a blank string to indicate a missing parameter */ abstract String getParameter(String key); /** * Return the complete repository URL. This is everything before the query parameters. * Examples: http://localhost:8080/oaipmh or http://localhost:8080/oaipmh/cq5 */ abstract String getRepositoryUrl(); boolean isVerbGetRecord() { return getVerb().map(eq(OaiPmhConstants.VERB_GET_RECORD)).getOrElse(false); } boolean isVerbIdentify() { return getVerb().map(eq(OaiPmhConstants.VERB_IDENTIFY)).getOrElse(false); } boolean isVerbListMetadataFormats() { return getVerb().map(eq(OaiPmhConstants.VERB_LIST_METADATA_FORMATS)).getOrElse(false); } boolean isVerbListSets() { return getVerb().map(eq(OaiPmhConstants.VERB_LIST_SETS)).getOrElse(false); } boolean isVerbListIdentifiers() { return getVerb().map(eq(OaiPmhConstants.VERB_LIST_IDENTIFIERS)).getOrElse(false); } boolean isVerbListRecords() { return getVerb().map(eq(OaiPmhConstants.VERB_LIST_RECORDS)).getOrElse(false); } Option<String> getVerb() { return option(trimToNull(getParameter("verb"))); } Option<String> getIdentifier() { return option(trimToNull(getParameter("identifier"))); } Option<String> getMetadataPrefix() { return option(trimToNull(getParameter("metadataPrefix"))); } Option<String> getFrom() { return option(trimToNull(getParameter("from"))); } Option<String> getUntil() { return option(trimToNull(getParameter("until"))); } Option<String> getSet() { return option(trimToNull(getParameter("set"))); } Option<String> getResumptionToken() { return option(trimToNull(getParameter("resumptionToken"))); } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("Params"); sb.append("{verb="); sb.append(getVerb()); sb.append("}"); return sb.toString(); } }