OAuth Example - GistLabs/mechanize GitHub Wiki

This is an example of connecting Mechanize with Twitter using OAuth.

package com.gistlabs.mechanize.twitter;

import oauth.signpost.OAuthConsumer;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.protocol.HttpContext;

import com.gistlabs.mechanize.filters.MechanizeChainFilter;
import com.gistlabs.mechanize.filters.MechanizeFilter;

public class AuthFilter implements MechanizeChainFilter {
	final OAuthConsumer oAuthConsumer;
	public AuthFilter(String twitterApiKey, String twitterApiSecret, String twitterAccessToken, String twitterAccessSecret) {
		oAuthConsumer = new CommonsHttpOAuthConsumer(twitterApiKey, twitterApiSecret);
		oAuthConsumer.setTokenWithSecret(twitterAccessToken, twitterAccessSecret);
	}
	public HttpResponse execute(HttpUriRequest request, HttpContext context, MechanizeFilter chain) {
		try {
			oAuthConsumer.sign(request);
		} catch (Exception e) {
			throw new RuntimeException(String.format("Problem! oAuthConsumer=%s, request=%s",oAuthConsumer, request), e);
		}
		return chain.execute(request, context);
	}
}