OSDN Git Service

CookieWinCrome リファクタリング
authoryukihane <yukihane.feather@gmail.com>
Sat, 17 Sep 2011 08:29:09 +0000 (17:29 +0900)
committeryukihane <yukihane.feather@gmail.com>
Sat, 17 Sep 2011 08:29:09 +0000 (17:29 +0900)
frontend/src/saccubus/net/CookieWinCrome.java

index f3fcb9d..997b69c 100644 (file)
@@ -4,6 +4,8 @@ import static org.apache.commons.lang.StringUtils.*;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -23,63 +25,26 @@ public class CookieWinCrome extends Cookie {
      */
     @Override
     public String getUserSessionString() throws IOException {
-        final String cookieWin7 = tryReadingWin7();
-        if (isNotEmpty(cookieWin7)) {
-            return cookieWin7;
-        }
-
-        final String cookieXp = tryReadingXp();
-        if (isNotEmpty(cookieXp)) {
-            return cookieXp;
-        }
-
-        final String cookieOther = tryReadingOther();
-        if (isNotEmpty(cookieOther)) {
-            return cookieOther;
-        }
-
-        throw new IOException("user session not found in google chorome cookie");
-    }
+        final List<File> alters = new ArrayList<>();
 
-    /**
-     * Windows7 のcookie取得を試みる.
-     * @return ユーザセッション文字列. 取得できない場合はnull.
-     */
-    private String tryReadingWin7() {
+        // Win7
         final String localAppData = System.getenv("LOCALAPPDATA");
-        return tryReading(localAppData);
-    }
+        if (isNotEmpty(localAppData)) {
+            alters.add(new File(localAppData + COOKIE_PATH));
+        }
 
-    /**
-     * WindowsXP のcookie処理を試みる.
-     * @return ユーザセッション文字列. 取得できない場合はnull.
-     */
-    private String tryReadingXp() {
+        // WinXP
         final String userProfile = System.getenv("USERPROFILE");
         if (isNotEmpty(userProfile)) {
-            // XP 32bit
-            return tryReading(userProfile + "\\Local Settings\\Application Data");
+            alters.add(new File(userProfile + "\\Local Settings\\Application Data" + COOKIE_PATH));
         }
-        return null;
-    }
 
-    private String tryReadingOther() {
         // ??? just try
         final String appData = System.getenv("APPDATA");
-        return tryReading(appData);
-    }
-
-    private String tryReading(String pathPrefix) {
-        if (isNotEmpty(pathPrefix)) {
-            final File cookieFile = new File(pathPrefix + COOKIE_PATH);
-            if (cookieFile.isFile()) {
-                try {
-                    return getUserSession("UTF-8", cookieFile);
-                } catch (IOException ex) {
-                    logger.error("cookie read error: " + cookieFile.getPath(), ex);
-                }
-            }
+        if (isNotEmpty(appData)) {
+            alters.add(new File(appData + COOKIE_PATH));
         }
-        return null;
+
+        return getUserSession("UTF-8", alters.toArray(new File[0]));
     }
 }