package com.cattong.commons.http.auth;
import java.util.Date;
import com.cattong.commons.ServiceProvider;
import com.cattong.commons.oauth.config.OAuthConfig;
import com.cattong.commons.oauth.config.OAuthConfigFactory;
import com.cattong.commons.util.StringUtil;
public class Authorization implements java.io.Serializable {
private static final long serialVersionUID = -413250347293002921L;
public static final int AUTH_VERSION_BASIC = 0;
public static final int AUTH_VERSION_OAUTH_1 = 1;
public static final int AUTH_VERSION_OAUTH_2 = 2;
protected ServiceProvider serviceProvider;
protected int serviceProviderNo;
protected int authVersion;
/*
* 如果是basic的话,accessToken相当于username,accessSecret是password
*/
private String accessToken;
private String accessSecret;
//配置信息,包括comsumerkey,comsumerSecrete, callbackUrl;
private OAuthConfig oAuthConfig;
//2.0
private Date expiredAt;
private String refreshToken;
public Authorization(ServiceProvider sp) {
if (sp == null) {
return;
}
this.serviceProvider = sp;
this.oAuthConfig = OAuthConfigFactory.getOAuthConfig(sp);
this.authVersion = AUTH_VERSION_OAUTH_1;
if (oAuthConfig != null) {
this.authVersion = oAuthConfig.getAuthVersion();
}
}
// public Authorization(ServiceProvider serviceProvider, int authVersion) {
// if (serviceProvider == null) {
// return;
// }
// this.serviceProvider = serviceProvider;
//
// this.authVersion = authVersion;
//
// switch(authVersion) {
// case AUTH_VERSION_BASIC:
// break;
// case AUTH_VERSION_OAUTH_1:
// case AUTH_VERSION_OAUTH_2:
// this.oAuthConfig = OAuthConfigFactory.getOAuthConfig(serviceProvider);
// break;
// }
// }
public Authorization(ServiceProvider serviceProvider, String accessToken, String accessSecret) {
this(serviceProvider);
this.accessToken = accessToken;
this.accessSecret = accessSecret;
}
public ServiceProvider getServiceProvider() {
if (serviceProvider == null) {
serviceProvider = ServiceProvider.getServiceProvider(serviceProviderNo);
}
return serviceProvider;
}
public void setServiceProvider(ServiceProvider serviceProvider) {
this.serviceProvider = serviceProvider;
this.serviceProviderNo = serviceProvider.getSpNo();
}
public int getAuthVersion() {
return authVersion;
}
public void setAuthVersion(int authVersion) {
this.authVersion = authVersion;
}
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public String getAccessSecret() {
return accessSecret;
}
public void setAccessSecret(String accessSecret) {
this.accessSecret = accessSecret;
}
public OAuthConfig getoAuthConfig() {
return oAuthConfig;
}
public void setoAuthConfig(OAuthConfig oAuthConfig) {
this.oAuthConfig = oAuthConfig;
}
public Date getExpiredAt() {
return expiredAt;
}
public void setExpiredAt(Date expiredAt) {
this.expiredAt = expiredAt;
}
public String getRefreshToken() {
return refreshToken;
}
public void setRefreshToken(String refreshToken) {
this.refreshToken = refreshToken;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Authorization other = (Authorization) obj;
if (!StringUtil.isEquals(accessToken, other.getAccessToken())) {
return false;
}
if (!StringUtil.isEquals(accessSecret, other.getAccessSecret())) {
return false;
}
if (authVersion != other.authVersion) {
return false;
}
if (serviceProvider != other.getServiceProvider()) {
return false;
}
if (other.getoAuthConfig() == null || oAuthConfig == null) {
return false;
}
if (!StringUtil.isEquals(oAuthConfig.getConsumerKey(), other.getoAuthConfig().getConsumerKey()) ) {
return false;
}
return true;
}
@Override
public int hashCode() {
String code = accessToken + accessSecret + serviceProvider +
oAuthConfig == null ? "" : oAuthConfig.getConsumerKey() + oAuthConfig.getConsumerSecret();
return code.hashCode();
}
}