at.gv.egovernment.moa.id.protocols.oauth20.OAuth20Util.java Source code

Java tutorial

Introduction

Here is the source code for at.gv.egovernment.moa.id.protocols.oauth20.OAuth20Util.java

Source

/*******************************************************************************
 * Copyright 2014 Federal Chancellery Austria
 * MOA-ID has been developed in a cooperation between BRZ, the Federal
 * Chancellery Austria - ICT staff unit, and Graz University of Technology.
 *
 * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
 * the European Commission - subsequent versions of the EUPL (the "Licence");
 * You may not use this work except in compliance with the Licence.
 * You may obtain a copy of the Licence at:
 * http://www.osor.eu/eupl/
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the Licence is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the Licence for the specific language governing permissions and
 * limitations under the Licence.
 *
 * This product combines work with different licenses. See the "NOTICE" text
 * file for details on the various modules and licenses.
 * The "NOTICE" text file is part of the distribution. Any derivative works
 * that you distribute must include a readable copy of the "NOTICE" text file.
 *******************************************************************************/
package at.gv.egovernment.moa.id.protocols.oauth20;

import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

import com.google.gson.JsonObject;

public final class OAuth20Util {

    public static final String REGEX_HTTPS = "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
    public static final String REGEX_FILE = "^(file):/.[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";

    private OAuth20Util() {
        throw new InstantiationError();
    }

    /**
     * Simple helper function to add parameter to a url
     * 
     * @param url
     * @param name
     * @param value
     * @throws UnsupportedEncodingException
     */
    public static void addParameterToURL(final StringBuilder url, final String name, final String value)
            throws UnsupportedEncodingException {
        if (url.indexOf("?") < 0) {
            url.append("?");
        } else {
            url.append("&");
        }
        // URLEncoder.encode(value, "UTF-8")
        url.append(name).append("=").append(value);
    }

    public static boolean isUrl(final String url) {
        Pattern urlPattern;
        if (url.startsWith("file")) {
            urlPattern = Pattern.compile(REGEX_FILE, Pattern.CASE_INSENSITIVE);
        } else {
            urlPattern = Pattern.compile(REGEX_HTTPS, Pattern.CASE_INSENSITIVE);
        }

        Matcher matcher = urlPattern.matcher(url);
        return matcher.find();
    }

    public static boolean isValidStateValue(String state) {
        Pattern urlPattern = Pattern.compile("javascript|<|>|&|;", Pattern.CASE_INSENSITIVE);
        Matcher matcher = urlPattern.matcher(state);
        return !matcher.find();
    }

    public static void addProperytiesToJsonObject(JsonObject jsonObject, Map<String, Object> params) {
        for (Map.Entry<String, Object> param : params.entrySet()) {

            if (!StringUtils.isEmpty(param.getKey()) && param.getValue() != null) {

                // check for integer
                try {
                    int i = Integer.parseInt(String.valueOf(param.getValue()));
                    jsonObject.addProperty(param.getKey(), i);
                    continue;
                } catch (NumberFormatException e) {
                }

                // check for long
                try {
                    long l = Long.parseLong(String.valueOf(param.getValue()));
                    jsonObject.addProperty(param.getKey(), l);
                    continue;
                } catch (NumberFormatException e) {
                }

                // string
                if (param.getValue() instanceof String) {
                    jsonObject.addProperty(param.getKey(), String.valueOf(param.getValue()));
                }
            }
        }
    }

}