package freenet.client.filter;
import freenet.client.filter.HTMLFilter.ParsedTag;
/**
* Callback to be provided to a content filter.
*/
public interface FilterCallback {
/**
* Process a URI.
* If it cannot be turned into something sufficiently safe, then return null.
* @param overrideType Force the return type.
* @throws CommentException If the URI is nvalid or unacceptable in some way.
*/
public String processURI(String uri, String overrideType) throws CommentException;
/**
* Process a URI.
* If it cannot be turned into something sufficiently safe, then return null.
* @param overrideType Force the return type.
* @throws CommentException If the URI is nvalid or unacceptable in some way.
*/
public String processURI(String uri, String overrideType, boolean noRelative, boolean inline) throws CommentException;
/**
* Process a base URI in the page. Not only is this filtered, it affects all
* relative uri's on the page.
*/
public String onBaseHref(String baseHref);
/**
* Process plain-text. Notification only; can't modify.
* Type can be null, or can correspond, for example to HTML tag name around text
* (for example: "title").
*
* Note that the string will have been fed through the relevant decoder if
* necessary (e.g. HTMLDecoder). It must be re-encoded if it is sent out as
* text to a browser.
*/
public void onText(String s, String type);
/**
* Process a form on the page.
* @param method The form sending method. Normally GET or POST.
* @param action The URI to send the form to.
* @return The new action URI, or null if the form is not allowed.
* @throws CommentException
*/
public String processForm(String method, String action) throws CommentException;
/**
* Process a tag. If it needs changing, then return the changed
* HTML, if not, then return null;
* @param pt - The tag to be replaced
* @return The new tag, or null, if it doesn't need changing
* */
public String processTag(ParsedTag pt);
public void onFinished();
}