OSDN Git Service

セッションが有効かどうかの確認メソッドを追加
authoryukihane <yukihane.feather@gmail.com>
Sat, 17 Sep 2011 13:59:24 +0000 (22:59 +0900)
committeryukihane <yukihane.feather@gmail.com>
Sun, 18 Sep 2011 03:24:33 +0000 (12:24 +0900)
src/nicobrowser/NicoHttpClient.java

index c480809..0c0423a 100644 (file)
@@ -50,6 +50,7 @@ import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpException;
 import org.apache.http.HttpHost;
@@ -59,6 +60,7 @@ import org.apache.http.NameValuePair;
 import org.apache.http.client.CookieStore;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpHead;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.params.ClientPNames;
 import org.apache.http.client.params.CookiePolicy;
@@ -89,15 +91,14 @@ public class NicoHttpClient {
             "https://secure.nicovideo.jp/secure/login?site=niconico";
     private static final String LOGOUT_PAGE =
             "https://secure.nicovideo.jp/secure/logout";
-    private static final String WATCH_PAGE = "http://www.nicovideo.jp/watch/";
-    private static final String MY_LIST_PAGE_HEADER =
-            "http://www.nicovideo.jp/mylist/";
-    private static final String MOVIE_THUMBNAIL_PAGE_HEADER =
-            "http://ext.nicovideo.jp/api/getthumbinfo/";
-    private static final String GET_FLV_INFO = "http://www.nicovideo.jp/api/getflv/";
-    private static final String SEARCH_HEAD = "http://www.nicovideo.jp/";
-    private static final String ADD_MYLIST_PAGE = "http://www.nicovideo.jp/mylist_add/video/";
-    private static final String GET_THREAD_KEY_PAGE = "http://www.nicovideo.jp/api/getthreadkey?thread=";
+    private static final String NICOVIDEO_HOME_URL = "http://www.nicovideo.jp";
+    private static final String WATCH_PAGE = NICOVIDEO_HOME_URL + "/watch/";
+    private static final String MY_LIST_PAGE_HEADER = NICOVIDEO_HOME_URL + "/mylist/";
+    private static final String MOVIE_THUMBNAIL_PAGE_HEADER = "http://ext.nicovideo.jp/api/getthumbinfo/";
+    private static final String GET_FLV_INFO = NICOVIDEO_HOME_URL + "/api/getflv/";
+    private static final String SEARCH_HEAD = NICOVIDEO_HOME_URL + "/";
+    private static final String ADD_MYLIST_PAGE = NICOVIDEO_HOME_URL + "/mylist_add/video/";
+    private static final String GET_THREAD_KEY_PAGE = NICOVIDEO_HOME_URL + "/api/getthreadkey?thread=";
 
     public NicoHttpClient() {
         http = new DefaultHttpClient();
@@ -163,6 +164,28 @@ public class NicoHttpClient {
     }
 
     /**
+     * ニコニコ動画サービスへアクセスし有効なセッションかどうかを試します.
+     * @return 有効なセッションであればtrue.
+     */
+    public boolean challengeAuth() throws IOException {
+        final HttpHead head = new HttpHead(NICOVIDEO_HOME_URL);
+        HttpResponse response = null;
+        try {
+            response = http.execute(head);
+            final Header authFlag = response.getFirstHeader("x-niconico-authflag");
+            // 0:expired, 1:normal user, 3:premium user
+            if ("0".equals(authFlag.getValue())) {
+                return false;
+            }
+            return true;
+        } finally {
+            if (response != null) {
+                EntityUtils.consume(response.getEntity());
+            }
+        }
+    }
+
+    /**
      * ニコニコ動画からログアウトする.
      * @return ログアウトに成功すればtrue.
      */