+/*$Id$*/
/*
* MainWindow.java
*
*/
package nicobrowser;
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.cookie.CookiePolicy;
-import org.apache.commons.httpclient.methods.PostMethod;
/**
*
*/
public class MainWindow extends javax.swing.JFrame {
- static final String LOGIN_PAGE = "https://secure.nicovideo.jp/secure/login?site=niconico";
private static final String COLUMN_NAMES[] = {"サムネイル", "タイトル", "説明", "投稿日"};
private DefaultTableModel tableModel = new DefaultTableModel(COLUMN_NAMES, 0);
- HttpClient httpClient;
/** Creates new form MainWindow */
public MainWindow() {
initComponents();
- httpClient = new HttpClient();
}
/** This method is called from within the constructor to
//TODO エラー通知.
return;
}
- login(mail, password);
+ NicoHttpClient.getInstance().login(mail, password);
}//GEN-LAST:event_loadButtonActionPerformed
/**
private javax.swing.JTextField passwordField;
// End of variables declaration//GEN-END:variables
- /**
- * ニコニコ動画へログインする.
- * @param mail ログイン識別子(登録メールアドレス).
- * @param password パスワード.
- * @return 認証がOKであればtrue.
- */
- public boolean login(String mail, String password) {
- boolean auth = false;
- PostMethod post = new PostMethod(LOGIN_PAGE);
-
- try {
- post.addParameter("mail", mail);
- post.addParameter("password", password);
- post.addParameter("next_url", "");
- post.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
- httpClient.executeMethod(post);
-
- // ログイン可否の判定.
- // x-niconico-authflagで判定できそうだったが必ず0になる...
- // Set-Cookieがあればログインできたとみなしているが,あまりよろしくないかも.
- auth = (null != post.getResponseHeader("Set-Cookie")) ? true : false;
- } catch (IOException ex) {
- Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
- } finally {
- post.releaseConnection();
- }
- return auth;
- }
+
}
--- /dev/null
+/*$Id$*/
+package nicobrowser;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.cookie.CookiePolicy;
+import org.apache.commons.httpclient.methods.PostMethod;
+
+/**
+ *
+ * @author yuki
+ */
+public class NicoHttpClient extends HttpClient {
+
+ static NicoHttpClient instance;
+ private static final String LOGIN_PAGE =
+ "https://secure.nicovideo.jp/secure/login?site=niconico";
+
+ private NicoHttpClient() {
+ super();
+ instance = this;
+ }
+
+ public static NicoHttpClient getInstance() {
+ if (instance == null) {
+ return new NicoHttpClient();
+ }
+ return instance;
+ }
+
+ /**
+ * ニコニコ動画へログインする.
+ * @param mail ログイン識別子(登録メールアドレス).
+ * @param password パスワード.
+ * @return 認証がOKであればtrue.
+ */
+ public boolean login(String mail, String password) {
+ boolean auth = false;
+ PostMethod post = new PostMethod(LOGIN_PAGE);
+
+ try {
+ post.addParameter("mail", mail);
+ post.addParameter("password", password);
+ post.addParameter("next_url", "");
+ post.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
+ executeMethod(post);
+
+ // ログイン可否の判定.
+ // x-niconico-authflagで判定できそうだったが必ず0になる...
+ // Set-Cookieがあればログインできたとみなしているが,あまりよろしくないかも.
+ auth = (null != post.getResponseHeader("Set-Cookie")) ? true : false;
+ } catch (IOException ex) {
+ Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
+ } finally {
+ post.releaseConnection();
+ }
+ return auth;
+ }
+}
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
+/*$Id$*/
package nicobrowser;
import org.junit.After;
*
* @author yuki
*/
-public class MainWindowTest {
+public class NicoHttpClientTest {
- public MainWindowTest() {
+ public NicoHttpClientTest() {
}
@BeforeClass
}
/**
- * Test of login method, of class MainWindow.
+ * Test of getInstance method, of class NicoHttpClient.
+ */
+ @Test
+ public void getInstance() {
+ System.out.println("getInstance");
+ NicoHttpClient expResult = null;
+ NicoHttpClient result = NicoHttpClient.getInstance();
+ assertNotNull(result);
+
+ // 2回目でも同じインスタンスが返る.
+ NicoHttpClient instance = NicoHttpClient.getInstance();
+ assertEquals(result, instance);
+ }
+
+ /**
+ * Test of login method, of class NicoHttpClient.
*/
@Test
public void login() {
System.out.println("login");
- MainWindow instance = new MainWindow();
+ NicoHttpClient instance = NicoHttpClient.getInstance();
// ログイン失敗ケース
String mail = "test@example.com";