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}