001/*
002 * Licensed under the Apache License, Version 2.0 (the "License");
003 * you may not use this file except in compliance with the License.
004 * You may obtain a copy of the License at
005 *
006 *     http://www.apache.org/licenses/LICENSE-2.0
007 *
008 * Unless required by applicable law or agreed to in writing, software
009 * distributed under the License is distributed on an "AS IS" BASIS,
010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
011 * See the License for the specific language governing permissions and
012 * limitations under the License.
013 */
014package org.gbif.ws.security;
015
016import java.util.regex.Pattern;
017
018import org.apache.commons.lang3.StringUtils;
019
020import static org.gbif.ws.util.SecurityConstants.GBIF_SCHEME_PREFIX;
021
022public final class GbifAuthUtils {
023
024  private static final Pattern COLON_PATTERN = Pattern.compile(":");
025
026  private GbifAuthUtils() {}
027
028  /**
029   * Tries to get the appkey from the request header.
030   * @param authorizationHeader 'Authorization' header.
031   * @return the appkey found or null
032   */
033  public static String getAppKeyFromRequest(final String authorizationHeader) {
034    if (StringUtils.startsWith(authorizationHeader, GBIF_SCHEME_PREFIX)) {
035      String[] values = COLON_PATTERN.split(authorizationHeader.substring(5), 2);
036      if (values.length == 2) {
037        return values[0];
038      }
039    }
040    return null;
041  }
042}