package org.limewire.http.auth;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.apache.http.auth.Credentials;
/**
* Describes a way to do authentication.
*/
public interface ServerAuthScheme {
/**
* Sets scheme to be complete which means, authentication successful
* or no authentication required.
*/
void setComplete();
/**
* @return true if authentication was successful or no authentication is
* not required
*/
boolean isComplete();
/**
* Parses the credentials from the HTTP request and returns them.
* @return null if credentials could not be parsed
*/
Credentials authenticate(HttpRequest request);
/**
* Creates the challenge header which is sent to the other side
* to fulfill the authentication challenge which can be stateful.
*/
Header createChallenge();
}