package com.cattong.commons.http.auth;
import java.util.HashMap;
import java.util.Map;
import com.cattong.commons.LibException;
import com.cattong.commons.LibResultCode;
import com.cattong.commons.oauth.OAuthAccessor;
import com.cattong.commons.oauth.OAuthConsumer;
import com.cattong.commons.oauth.OAuthParameterStyle;
import com.cattong.commons.oauth.config.OAuthConfig;
import com.cattong.commons.util.StringUtil;
public class OAuthAccessorFactory {
private static Map<Authorization, OAuthAccessor> accessorMap;
private static Map<String, OAuthConsumer> consumerMap;
static {
accessorMap = new HashMap<Authorization, OAuthAccessor>();
consumerMap = new HashMap<String, OAuthConsumer>();
}
public synchronized static OAuthAccessor getOAuthAccessorInstance(Authorization auth) throws LibException {
if (auth == null) {
throw new LibException(LibResultCode.E_PARAM_NULL);
}
OAuthAccessor accessor = accessorMap.get(auth);
if (accessor == null) {
OAuthConsumer consumer = consumerMap.get(auth.getoAuthConfig().getConsumerKey());
if (consumer == null) {
OAuthConfig oauthConfig = auth.getoAuthConfig();
consumer = new OAuthConsumer(oauthConfig.getCallbackUrl(),
oauthConfig.getConsumerKey(),
oauthConfig.getConsumerSecret());
if (StringUtil.isNotEmpty(oauthConfig.getOAuthParameterStyle())) {
OAuthParameterStyle paramStyle = OAuthParameterStyle.valueOf(oauthConfig.getOAuthParameterStyle());
consumer.setParameterStyle(paramStyle);
}
consumerMap.put(oauthConfig.getConsumerKey(), consumer);
}
accessor = new OAuthAccessor(consumer);
accessor.setAuthorization(auth);
accessorMap.put(auth, accessor);
}
return accessor;
}
}