import java.io.File;
import java.io.IOException;
-import java.nio.file.Path;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
/**
*
*/
public class CookieWinFirefox4 extends Cookie {
- /// <summary>
- /// Firefox4, 5 から user_session を取得。エラーが起こった場合、例外を投げずに空文字を返す
- /// </summary>
- /// <returns>user_session</returns>
+ /**
+ * Firefox4以降から user_session を取得。
+ * @return ユーザセッション文字列.
+ * @throws IOException 取得失敗.
+ */
@Override
public String getUserSessionString() throws IOException {
- String user_session = "";
- try {
- String app_dir = System.getenv("APPDATA");
- if (app_dir == null || app_dir.isEmpty()) {
- return "";
- }
- File dir = new File(app_dir + "\\Mozilla\\Firefox\\Profiles\\");
- File[] userLists = dir.listFiles();
- for (File user_dir : userLists) {
- File sqlist_filename = new File(user_dir, "cookies.sqlite");
- if (sqlist_filename.isFile()) {
- String dataStr = FileUtils.readFileToString(sqlist_filename, "US-ASCII");
- user_session = cutUserSession(dataStr);
- if (!user_session.isEmpty()) {
+ final String appData = System.getenv("APPDATA");
+ if (StringUtils.isNotEmpty(appData)) {
+ final File dir = new File(appData + "\\Mozilla\\Firefox\\Profiles\\");
+ final File[] userLists = dir.listFiles();
+ for (File profileDir : userLists) {
+ final File sqliteFile = new File(profileDir, "cookies.sqlite");
+ if (sqliteFile.isFile()) {
+ String dataStr = FileUtils.readFileToString(sqliteFile, "US-ASCII");
+ final String user_session = cutUserSession(dataStr);
+ if (StringUtils.isNotEmpty(user_session)) {
return user_session;
}
// else continue
}
}
- return ""; // not found
- } catch (Exception e) {
- e.printStackTrace();
- return "";
}
-
+ throw new IOException("user session not found in firefox cookie");
}
}