OSDN Git Service

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

index 67e3999..b4f1f92 100644 (file)
@@ -1,10 +1,14 @@
 package saccubus.net;
 
+import static org.apache.commons.lang.StringUtils.*;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.commons.io.FileUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  *
@@ -12,6 +16,7 @@ import org.apache.commons.io.FileUtils;
  */
 public class CookieWinCrome extends Cookie {
 
+    private static final Logger logger = LoggerFactory.getLogger(CookieWinCrome.class);
     private static final String COOKIE_PATH = "\\Google\\Chrome\\User Data\\Default\\Cookies";
     private static final Pattern USER_SESSION_PATTERN = Pattern.compile("user_session_[\\d_]+");
 
@@ -22,39 +27,19 @@ public class CookieWinCrome extends Cookie {
      */
     @Override
     public String getUserSessionString() throws IOException {
-        String local_Appdir = System.getenv("LOCALAPPDATA");
-        if (local_Appdir != null && !local_Appdir.isEmpty()) {
-            // Win7 32bit
-            final File cookie_file = new File(local_Appdir + COOKIE_PATH);
-            if (cookie_file.isFile()) {
-                final String dataStr = FileUtils.readFileToString(cookie_file, "UTF-8");
-                final String user_session = cutUserSession(dataStr);
-                if (!user_session.isEmpty()) {
-                    return user_session;
-                }
-            }
+        final String cookieWin7 = tryReadingWin7();
+        if (isNotEmpty(cookieWin7)) {
+            return cookieWin7;
         }
 
-        String profile_dir = System.getenv("USERPROFILE");
-        if (profile_dir != null && !profile_dir.isEmpty()) {
-            // XP 32bit
-            final File cookie_file = new File(profile_dir
-                    + "\\Local Settings\\Application Data" + COOKIE_PATH);
-            if (cookie_file.isFile()) {
-                String dataStr = FileUtils.readFileToString(cookie_file, "UTF-8");
-                final String user_session = cutUserSession(dataStr);
-                return user_session;
-            }
+        final String cookieXp = tryReadingXp();
+        if (isNotEmpty(cookieXp)) {
+            return cookieXp;
         }
-        String app_dir = System.getenv("APPDATA");
-        if (app_dir != null && !app_dir.isEmpty()) {
-            // ??? just try
-            final File cookie_file = new File(app_dir + COOKIE_PATH);
-            if (cookie_file.isFile()) {
-                String dataStr = FileUtils.readFileToString(cookie_file, "UTF-8");
-                final String user_session = cutUserSession(dataStr);
-                return user_session;
-            }
+
+        final String cookieOther = tryReadingOther();
+        if (isNotEmpty(cookieOther)) {
+            return cookieOther;
         }
 
         throw new IOException("user session not found in google chorome cookie");
@@ -73,4 +58,63 @@ public class CookieWinCrome extends Cookie {
 
         return null;
     }
+
+    /**
+     * Windows7 のcookie取得を試みる.
+     * @return ユーザセッション文字列. 取得できない場合はnull.
+     */
+    private String tryReadingWin7() {
+        final String localAppData = System.getenv("LOCALAPPDATA");
+        if (isNotEmpty(localAppData)) {
+            // Win7 32bit
+            final File cookieFile = new File(localAppData + COOKIE_PATH);
+            if (cookieFile.isFile()) {
+                try {
+                    final String dataStr = FileUtils.readFileToString(cookieFile, "UTF-8");
+                    return cutUserSession(dataStr);
+                } catch (IOException ex) {
+                    logger.error("cookie read error: " + cookieFile.getPath(), ex);
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * WindowsXP のcookie処理を試みる.
+     * @return ユーザセッション文字列. 取得できない場合はnull.
+     */
+    private String tryReadingXp() {
+        final String profile_dir = System.getenv("USERPROFILE");
+        if (isNotEmpty(profile_dir)) {
+            // XP 32bit
+            final File cookieFile = new File(profile_dir + "\\Local Settings\\Application Data" + COOKIE_PATH);
+            if (cookieFile.isFile()) {
+                try {
+                    String dataStr = FileUtils.readFileToString(cookieFile, "UTF-8");
+                    return cutUserSession(dataStr);
+                } catch (IOException ex) {
+                    logger.error("cookie read error: " + cookieFile.getPath(), ex);
+                }
+            }
+        }
+        return null;
+    }
+
+    private String tryReadingOther() {
+        final String appData = System.getenv("APPDATA");
+        if (isNotEmpty(appData)) {
+            // ??? just try
+            final File cookieFile = new File(appData + COOKIE_PATH);
+            if (cookieFile.isFile()) {
+                try {
+                    String dataStr = FileUtils.readFileToString(cookieFile, "UTF-8");
+                    return cutUserSession(dataStr);
+                } catch (IOException ex) {
+                    logger.error("cookie read error: " + cookieFile.getPath(), ex);
+                }
+            }
+        }
+        return null;
+    }
 }