OSDN Git Service

cookie処理コミット漏れ
authoryukihane <yukihane.feather@gmail.com>
Sun, 18 Sep 2011 04:07:16 +0000 (13:07 +0900)
committeryukihane <yukihane.feather@gmail.com>
Sun, 18 Sep 2011 04:07:16 +0000 (13:07 +0900)
frontend/src/saccubus/net/CookieWinFirefox.java [new file with mode: 0644]

diff --git a/frontend/src/saccubus/net/CookieWinFirefox.java b/frontend/src/saccubus/net/CookieWinFirefox.java
new file mode 100644 (file)
index 0000000..d6ec9ea
--- /dev/null
@@ -0,0 +1,38 @@
+package saccubus.net;
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * WindowsのFirefox(4以降) cookie ディレクトリを決め打ちして扱います.
+ * @author orz (saccubus)
+ * @author yuki
+ */
+class CookieWinFirefox extends Cookie {
+
+    /**
+     * Firefox4以降から user_session を取得。
+     * @return ユーザセッション文字列.
+     * @throws IOException 取得失敗.
+     */
+    @Override
+    protected String getNicoUserSession() throws IOException {
+        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()) {
+                    final String user_session = getUserSession("US-ASCII", sqliteFile);
+                    if (StringUtils.isNotEmpty(user_session)) {
+                        return user_session;
+                    }
+                    // else continue
+                }
+            }
+        }
+        return "";
+    }
+}