package org.limewire.rest;
import org.apache.http.HttpRequest;
import org.limewire.rest.oauth.OAuthException;
import org.limewire.rest.oauth.OAuthRequest;
import org.limewire.rest.oauth.OAuthValidator;
import org.limewire.rest.oauth.OAuthValidatorFactory;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
/**
* Implementation of a RestAuthority that uses OAuth to authorize HTTP
* requests.
*/
class RestAuthorityImpl implements RestAuthority {
private final OAuthValidator validator;
/**
* Constructs a RestAuthorityImpl for the specified base URL, port
* number, and access secret.
*/
@Inject
public RestAuthorityImpl(
@Assisted("baseUrl") String baseUrl,
@Assisted int port,
@Assisted("secret") String secret,
OAuthValidatorFactory validatorFactory) {
validator = validatorFactory.create(baseUrl, port, secret);
}
@Override
public boolean isAuthorized(HttpRequest request) {
try {
OAuthRequest oauthRequest = new OAuthRequest(request);
validator.validateRequest(oauthRequest);
return true;
} catch (OAuthException ex) {
return false;
}
}
}