package eriji.com.oauth;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Properties;
public class OAuthFileStore implements OAuthStore {
private Logger logger = Logger.getLogger(OAuthFileStore.class);
private static final String TOKEN_KEY = "token";
private static final String SECRET_KEY = "secret";
private String mCacheDir = null;
public OAuthFileStore(String cacheDir) {
File dir = new File(cacheDir);
if (! dir.exists()) {
dir.mkdir();
}
mCacheDir = dir.getAbsolutePath();
}
@Override
public void store(String key, OAuthToken token) throws OAuthStoreException
{
String file = mCacheDir + "/" + key + "_" + token.getTokenType();
try {
Properties p = new Properties();
p.setProperty(TOKEN_KEY, token.getToken());
p.setProperty(SECRET_KEY, token.getTokenSecret());
FileWriter fw = new FileWriter(file);
// p.store(fw, key + "'s " + token.getTokenType() );
fw.close();
logger.info("Store " + token.getTokenType() + ": " + token + " into " + file);
} catch (IOException ioe) {
throw new OAuthStoreException("Cann't store token into " + file);
}
}
@Override
public OAuthToken get(String key, String tokenType) throws OAuthStoreException {
// TODO Auto-generated method stub
try {
File file = new File(mCacheDir + "/" + key + "_" + tokenType);
if (file.exists()) {
Properties p = new Properties();
FileReader fr = new FileReader(file);
// p.load(fr);
OAuthToken token = new OAuthToken(p.getProperty(TOKEN_KEY),
p.getProperty(SECRET_KEY));
logger.info("Get " + tokenType + ": " + token);
return token;
}
} catch (IOException ioe) {
throw new OAuthStoreException("Cann't get token: " + key);
}
return null;
}
@Override
public boolean isExists(String key, String tokenType) {
File file = new File(mCacheDir + "/" + key + "_" + tokenType);
return file.exists();
}
}