package org.cobra_grendel.html.test;
import java.security.Policy;
import org.cobra_grendel.html.HttpRequest;
import org.cobra_grendel.html.UserAgentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.grendelscan.commons.http.cobra.CobraHttpRequest;
/**
* Simple implementation of {@link org.cobra_grendel.html.UserAgentContext}.
*/
public class SimpleUserAgentContext implements UserAgentContext
{
private static final Logger LOGGER = LoggerFactory.getLogger(SimpleUserAgentContext.class);
/**
* Creates a {@link org.cobra_grendel.html.test.SimpleHttpRequest} instance. Override if a custom mechanism to make requests is needed.
*/
@Override
public HttpRequest createHttpRequest(final int referingTransactionId)
{
throw new IllegalStateException("This needs to be fixed");
// FIXME: This creates a circular dependency. - Jonathan Byrne 10/01/2013
return new CobraHttpRequest(referingTransactionId, -1);
}
public void error(final String message)
{
LOGGER.error(message);
}
public void error(final String message, final Throwable throwable)
{
LOGGER.error(message, throwable);
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#getAppCodeName()
*/
@Override
public String getAppCodeName()
{
return "Cobra";
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#getAppMinorVersion()
*/
@Override
public String getAppMinorVersion()
{
return "0";
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#getAppName()
*/
@Override
public String getAppName()
{
return "Browser";
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#getAppVersion()
*/
@Override
public String getAppVersion()
{
return "1";
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#getBrowserLanguage()
*/
@Override
public String getBrowserLanguage()
{
return "EN";
}
@Override
public String getCookie(final java.net.URL url)
{
this.warn("getCookie(): Method not overridden; returning null.");
return "";
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#getPlatform()
*/
@Override
public String getPlatform()
{
return System.getProperty("os.name");
}
/**
* Returns -1. Override to provide a different Rhino optimization level.
*/
@Override
public int getScriptingOptimizationLevel()
{
return -1;
}
/**
* Returns <code>null</code>. This method must be overridden if JavaScript code is untrusted.
*/
@Override
public Policy getSecurityPolicy()
{
return null;
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#getUserAgent()
*/
@Override
public String getUserAgent()
{
return "Mozilla/4.0 (compatible; MSIE 6.0;) Cobra/Simple";
}
/*
* (non-Javadoc)
*
* @see org.xamjwg.html.HtmlParserContext#isCookieEnabled()
*/
@Override
public boolean isCookieEnabled()
{
this.warn("isCookieEnabled(): Not overridden - returning false");
return false;
}
/**
* Returns <code>true</code>. Implementations wishing to disable JavaScript may override this method.
*/
@Override
public boolean isScriptingEnabled()
{
return true;
}
@Override
public void setCookie(final java.net.URL url, final String cookieSpec)
{
this.warn("setCookie(): Method not overridden.");
}
public void warn(final String message)
{
LOGGER.warn(message);
}
public void warn(final String message, final Throwable throwable)
{
LOGGER.warn(message, throwable);
}
}