/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.vertical.adminweb;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
import com.enonic.esl.containers.MultiValueMap;
import com.enonic.esl.net.URL;
import com.enonic.cms.core.DeploymentPathResolver;
import com.enonic.cms.core.structure.SiteKey;
public class AdminHelper
{
private static final Logger LOG = LoggerFactory.getLogger( AdminHelper.class );
public static String getDebugPath( HttpServletRequest request, SiteKey siteKey )
{
return getAdminPath( request, true ) + "/site/" + siteKey.toInt() + "/";
}
public static String getAdminPath( HttpServletRequest request, boolean relative )
{
final StringBuilder path = new StringBuilder();
if ( !relative )
{
path.append( request.getScheme() );
path.append( "://" );
path.append( request.getServerName() );
if ( request.getServerPort() != 80 )
{
path.append( ":" );
path.append( request.getServerPort() );
}
}
path.append( DeploymentPathResolver.getAdminDeploymentPath( request ) );
return path.toString();
}
public static void redirectClientToAdminPath( HttpServletRequest request, HttpServletResponse response, String adminPath,
MultiValueMap queryParams )
{
StringBuffer urlString = new StringBuffer();
urlString.append( getAdminPath( request, true ) );
urlString.append( "/" ).append( adminPath );
URL url = new URL( urlString );
if ( queryParams != null )
{
url.addParameters( queryParams );
}
redirectClient( url.toString(), response );
}
public static void redirectClientToReferer( HttpServletRequest request, HttpServletResponse response )
{
redirectClient( request.getHeader( "referer" ), response );
}
public static void redirectClientToAbsoluteUrl( String url, HttpServletResponse response )
{
Assert.notNull( url, "Given url cannot be null" );
if ( !url.matches( "^[a-z]{3,6}://.+" ) )
{
throw new RuntimeException( "Given url must be absolute" );
}
redirectClient( url, response );
}
public static void redirectToURL( URL url, HttpServletResponse response )
{
String urlString = url.toString();
redirectClient( urlString, response );
}
private static void redirectClient( String url, HttpServletResponse response )
{
try
{
response.sendRedirect( response.encodeRedirectURL( url ) );
}
catch ( IOException ioe )
{
LOG.error( "Failed to redirect client", ioe );
throw new RuntimeException( "Failed to redirect client", ioe );
}
}
}