package glaze.oauth; import glaze.Glaze; import glaze.GlazeException; import glaze.func.Closures.Closure; import glaze.oauth.spi.OAuthCredentialsProvider; import glaze.oauth.util.OAuthClientHelper; import org.apache.http.auth.AuthenticationException; import org.apache.http.client.methods.HttpRequestBase; public class OAuthClosure implements Closure<HttpRequestBase> { public static Glaze Signed(final Glaze ma) { return Signed(ma, null, null); } public static Glaze Signed(final Glaze ma, final OAuthCredentialsProvider provider) { return Signed(ma, provider, null); } public static Glaze Signed(final Glaze ma, final OAuthCredentialsProvider provider, final Object context) { return ma.decorate(new OAuthClosure(provider, context)); } public static Glaze Signed(final Glaze ma, final Object context) { return Signed(ma, null, context); } private final Object context; private final OAuthCredentialsProvider provider; public OAuthClosure(final OAuthCredentialsProvider provider, final Object context) { this.context = context; this.provider = provider; } @Override public void on(final HttpRequestBase request) { try { OAuthClientHelper.signRequest(provider, context, request); } catch (AuthenticationException e) { throw new GlazeException(e); } } }