OSDN Git Service

Cookieにユーザセッションが保存されていなかった場合には空文字列を返す.
[coroid/inqubus.git] / frontend / src / saccubus / net / CookieWinCrome.java
1 package saccubus.net;
2
3 import static org.apache.commons.lang.StringUtils.*;
4
5 import java.io.File;
6 import java.io.IOException;
7 import java.util.ArrayList;
8 import java.util.List;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
12 /**
13  * WindowsのChrome cookie ディレクトリを決め打ちして扱います.
14  * @author rankingloid (nicorank)
15  * @author hazychill (nicorank)
16  * @author orz (saccubus)
17  * @author yuki
18  */
19 public class CookieWinCrome extends Cookie {
20
21     private static final Logger logger = LoggerFactory.getLogger(CookieWinCrome.class);
22     private static final String COOKIE_PATH = "/Google/Chrome/User Data/Default/Cookies";
23
24     /** <p>
25      *  Chrome から user_session を取得。エラーが起こった場合、例外を投げずに空文字を返す
26      *  </p>
27      *  @return user_session
28      */
29     @Override
30     public String getNicoUserSession() throws IOException {
31         final List<File> alters = new ArrayList<>();
32
33         // Win7
34         final String localAppData = System.getenv("LOCALAPPDATA");
35         if (isNotEmpty(localAppData)) {
36             alters.add(new File(localAppData + COOKIE_PATH));
37         }
38
39         // WinXP
40         final String userProfile = System.getenv("USERPROFILE");
41         if (isNotEmpty(userProfile)) {
42             alters.add(new File(userProfile + "/Local Settings/Application Data" + COOKIE_PATH));
43         }
44
45         // ??? just try
46         final String appData = System.getenv("APPDATA");
47         if (isNotEmpty(appData)) {
48             alters.add(new File(appData + COOKIE_PATH));
49         }
50
51         return getUserSession("UTF-8", alters.toArray(new File[0]));
52     }
53 }