OSDN Git Service

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

index bf3da89..cf03ad0 100644 (file)
@@ -2,7 +2,6 @@ package saccubus.net;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.commons.io.FileUtils;
@@ -42,7 +41,8 @@ public abstract class Cookie {
      * @param str 切り出す対象文字列
      * @return user_session 文字列。見つからなければnull。
      */
-    protected final String cutUserSession(String str) {
+    private String cutUserSession(File cookieFile, String charsetName) throws IOException {
+        final String str = FileUtils.readFileToString(cookieFile, charsetName);
         final Matcher mather = USER_SESSION_PATTERN.matcher(str);
         if (mather.lookingAt()) {
             return mather.group(1);
@@ -52,22 +52,26 @@ public abstract class Cookie {
 
     /**
      * cookieDirs ディレクトリからクッキーを見つけて user_session を返す
-     * @param cookieDirs cookie保存ディレクトリの候補.
+     * @param cookieFileOrDirs cookieが保存されたディレクトリの候補, あるいはcookieファイルの候補.
      * @return ユーザセッション文字列. 無ければnull.
      */
-    protected final String getUserSessionFromDir(String charsetName, File... cookieDirs) throws IOException {
-        for (File dir : cookieDirs) {
-            if (dir.isDirectory()) {
-                File[] files = dir.listFiles();
+    protected final String getUserSession(String charsetName, File... cookieFileOrDirs) throws IOException {
+        for (File file : cookieFileOrDirs) {
+            if (file.isDirectory()) {
+                File[] files = file.listFiles();
                 for (File cookieFile : files) {
                     if (cookieFile.isFile()) {
-                        final String cookie = FileUtils.readFileToString(cookieFile, charsetName);
-                        final String userSession = cutUserSession(cookie);
+                        final String userSession = cutUserSession(cookieFile, charsetName);
                         if (StringUtils.isNotEmpty(userSession)) {
                             return userSession;
                         }
                     }
                 }
+            } else if (file.isFile()) {
+                final String userSession = cutUserSession(file, charsetName);
+                if (StringUtils.isNotEmpty(userSession)) {
+                    return userSession;
+                }
             }
         }
 
index 655958d..4db66cb 100644 (file)
@@ -2,7 +2,6 @@ package saccubus.net;
 
 import java.io.File;
 import java.io.IOException;
-import org.apache.commons.io.FileUtils;
 
 /**
  *
@@ -12,8 +11,8 @@ public class CookieDefault extends Cookie {
 
     private final File fileOrDir;
 
-    public CookieDefault(File dir) {
-        this.fileOrDir = dir;
+    public CookieDefault(File fileOrDir) {
+        this.fileOrDir = fileOrDir;
     }
 
     /**
@@ -22,16 +21,7 @@ public class CookieDefault extends Cookie {
      */
     @Override
     public String getUserSessionString() throws IOException {
-        if (fileOrDir.isDirectory()) {
-            // Directory Type like MSIE
-            return getUserSessionFromDir("UTF-8", fileOrDir);
-        }
-
-        if (fileOrDir.isFile()) {
-            // File Type like Firefox3
-            String dataStr = FileUtils.readFileToString(fileOrDir, "UTF-8");
-            return cutUserSession(dataStr);
-        }
-        return "";
+        // TODO 存在しなかった場合
+        return getUserSession("UTF-8", fileOrDir);
     }
 }
index 2499d24..f3fcb9d 100644 (file)
@@ -4,7 +4,6 @@ import static org.apache.commons.lang.StringUtils.*;
 
 import java.io.File;
 import java.io.IOException;
-import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -75,8 +74,7 @@ public class CookieWinCrome extends Cookie {
             final File cookieFile = new File(pathPrefix + COOKIE_PATH);
             if (cookieFile.isFile()) {
                 try {
-                    String dataStr = FileUtils.readFileToString(cookieFile, "UTF-8");
-                    return cutUserSession(dataStr);
+                    return getUserSession("UTF-8", cookieFile);
                 } catch (IOException ex) {
                     logger.error("cookie read error: " + cookieFile.getPath(), ex);
                 }
index 7ca2d32..942289c 100644 (file)
@@ -2,7 +2,6 @@ package saccubus.net;
 
 import java.io.File;
 import java.io.IOException;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 
 /**
@@ -24,8 +23,7 @@ public class CookieWinFirefox3 extends Cookie {
         if (StringUtils.isNotEmpty(appData)) {
             File sqlist_filename = new File(appData + "\\Mozilla\\Firefox\\Profiles\\cookies.sqlite");
             if (sqlist_filename.isFile()) {
-                final String dataStr = FileUtils.readFileToString(sqlist_filename, "US-ASCII");
-                final String userSession = cutUserSession(dataStr);
+                final String userSession = getUserSession("US-ASCII", sqlist_filename);
                 if (StringUtils.isNotEmpty(userSession)) {
                     return userSession;
                 }
index 17ba055..300eadc 100644 (file)
@@ -2,7 +2,6 @@ package saccubus.net;
 
 import java.io.File;
 import java.io.IOException;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 
 /**
@@ -25,8 +24,7 @@ public class CookieWinFirefox4 extends Cookie {
             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);
+                    final String user_session = getUserSession("US-ASCII", sqliteFile);
                     if (StringUtils.isNotEmpty(user_session)) {
                         return user_session;
                     }
index c2f74c6..a6b07c1 100644 (file)
@@ -4,7 +4,6 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 
 /**
@@ -34,6 +33,6 @@ public class CookieWinMsIe extends Cookie {
         // これは何だ?
         searchDirs.add(new File(userProfile + "\\Cookies\\"));
 
-        return getUserSessionFromDir("MS932", searchDirs.toArray(new File[0]));
+        return getUserSession("MS932", searchDirs.toArray(new File[0]));
     }
 }