001package org.nuxeo.ecm.platform.oauth2.request;
002
003import static org.apache.commons.lang.StringUtils.isBlank;
004import static org.apache.commons.lang.StringUtils.isNotBlank;
005
006import java.io.UnsupportedEncodingException;
007import java.net.URLDecoder;
008
009import javax.servlet.http.HttpServletRequest;
010
011import org.apache.commons.logging.Log;
012import org.apache.commons.logging.LogFactory;
013
014/**
015 * @author <a href="mailto:ak@nuxeo.com">Arnaud Kervern</a>
016 * @since 5.9.2
017 */
018public abstract class Oauth2Request {
019
020    private static final Log log = LogFactory.getLog(Oauth2Request.class);
021
022    public static final String CLIENT_ID = "client_id";
023
024    public static final String REDIRECT_URI = "redirect_uri";
025
026    public static final String REDIRECT_URL = "redirect_url";
027
028    protected String clientId;
029
030    protected String redirectUri;
031
032    public Oauth2Request() {
033    }
034
035    public Oauth2Request(HttpServletRequest request) {
036        clientId = request.getParameter(CLIENT_ID);
037        redirectUri = decodeParameter(request, REDIRECT_URI);
038        // Fallback for non-RFC compliant client
039        if (isBlank(redirectUri)) {
040            redirectUri = decodeParameter(request, REDIRECT_URL);
041        }
042    }
043
044    public static String decodeParameter(HttpServletRequest request, String parameterName) {
045        String value = request.getParameter(parameterName);
046        try {
047            if (isNotBlank(value)) {
048                return URLDecoder.decode(value, "UTF-8");
049            }
050        } catch (UnsupportedEncodingException e) {
051            // Nothing to do.
052        }
053        return value;
054    }
055
056    public String getRedirectUri() {
057        return redirectUri;
058    }
059
060    public String getClientId() {
061        return clientId;
062    }
063}