From 6567084dc5487932976dfcff99450799126667ef Mon Sep 17 00:00:00 2001 From: yuki Date: Mon, 1 Feb 2010 06:15:04 +0000 Subject: [PATCH] =?utf8?q?NicoHttpClient=E3=81=AESingleton=E3=82=92?= =?utf8?q?=E6=AD=A2=E3=82=81=E3=82=8B=E3=80=82=20DefaultHttpclient?= =?utf8?q?=E3=81=AE=E7=B6=99=E6=89=BF=E3=82=92=E3=82=84=E3=82=81=E3=80=81?= =?utf8?q?=E5=A7=94=E8=AD=B2=E3=81=AB=E3=81=99=E3=82=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://192.168.11.7/svn/repository/NicoBrowser/branches/dev20100201_comment_download@273 bdf3b611-c98c-6041-8292-703d9c9adbe7 --- src/nicobrowser/NicoHttpClient.java | 51 ++++++++++++----------------- src/nicobrowser/main/Main.java | 2 +- test/nicobrowser/NicoHttpClientRssTest.java | 2 +- test/nicobrowser/NicoHttpClientTest.java | 29 +++------------- 4 files changed, 27 insertions(+), 57 deletions(-) diff --git a/src/nicobrowser/NicoHttpClient.java b/src/nicobrowser/NicoHttpClient.java index 6d98d66..6af84a8 100644 --- a/src/nicobrowser/NicoHttpClient.java +++ b/src/nicobrowser/NicoHttpClient.java @@ -38,7 +38,6 @@ import nicobrowser.util.Result; import nicobrowser.util.Util; 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.HttpResponse; @@ -62,10 +61,10 @@ import org.xml.sax.SAXException; * * @author yuki */ -public class NicoHttpClient extends DefaultHttpClient { +public class NicoHttpClient { private static Log log = LogFactory.getLog(NicoHttpClient.class); - static NicoHttpClient instance; + private final DefaultHttpClient http; private static final String LOGIN_PAGE = "https://secure.nicovideo.jp/secure/login?site=niconico"; private static final String LOGOUT_PAGE = @@ -79,18 +78,10 @@ public class NicoHttpClient extends DefaultHttpClient { private static final String SEARCH_TAIL = "?sort=v"; private static final String ADD_MYLIST_PAGE = "http://www.nicovideo.jp/mylist_add/video/"; - private NicoHttpClient() { - super(); - getParams().setParameter( + public NicoHttpClient() { + http = new DefaultHttpClient(); + http.getParams().setParameter( ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); - instance = this; - } - - public static NicoHttpClient getInstance() { - if (instance == null) { - return new NicoHttpClient(); - } - return instance; } /** @@ -112,13 +103,13 @@ public class NicoHttpClient extends DefaultHttpClient { post.setEntity(new UrlEncodedFormEntity(Arrays.asList(nvps), "UTF-8")); //post.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); - HttpResponse response = execute(post); + HttpResponse response = http.execute(post); log.debug("ログインステータスコード: " + response.getStatusLine().getStatusCode()); // ログイン可否の判定. HttpEntity entity = response.getEntity(); entity.consumeContent(); - List cookies = getCookieStore().getCookies(); + List cookies = http.getCookieStore().getCookies(); if (!cookies.isEmpty()) { auth = true; } @@ -136,7 +127,7 @@ public class NicoHttpClient extends DefaultHttpClient { boolean result = false; HttpGet method = new HttpGet(LOGOUT_PAGE); try { - HttpResponse response = execute(method); + HttpResponse response = http.execute(method); log.debug("ログアウトステータスコード: " + response.getStatusLine().getStatusCode()); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { @@ -165,7 +156,7 @@ public class NicoHttpClient extends DefaultHttpClient { while (url != null) { HttpGet get = new HttpGet(url); HttpResponse response; - response = execute(get); + response = http.execute(get); is = new BufferedInputStream(response.getEntity().getContent()); assert is.markSupported(); is.mark(1024 * 1024); @@ -199,7 +190,7 @@ public class NicoHttpClient extends DefaultHttpClient { BufferedReader reader = null; try { - HttpResponse response = execute(get); + HttpResponse response = http.execute(get); reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); // BOMを読み捨て // reader.skip(1); @@ -278,7 +269,7 @@ public class NicoHttpClient extends DefaultHttpClient { try { get = new HttpGet(url); - HttpResponse response = execute(get); + HttpResponse response = http.execute(get); re = response.getEntity().getContent(); // ドキュメントビルダーファクトリを生成 DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); @@ -334,7 +325,7 @@ public class NicoHttpClient extends DefaultHttpClient { HttpGet get = new HttpGet(url); BufferedReader reader = null; try { - HttpResponse response = execute(get); + HttpResponse response = http.execute(get); reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); if (log.isTraceEnabled()) { reader.mark(1024 * 1024); @@ -489,7 +480,7 @@ public class NicoHttpClient extends DefaultHttpClient { String resultString; BufferedReader reader = null; try { - HttpResponse response = execute(get); + HttpResponse response = http.execute(get); reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); String str; @@ -533,9 +524,9 @@ public class NicoHttpClient extends DefaultHttpClient { URISyntaxException, HttpException, InterruptedException { String watchUrl = "http://www.nicovideo.jp/watch/" + videoID; log.debug("アクセス: " + watchUrl); - getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false); + http.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false); HttpGet get = new HttpGet(watchUrl); - HttpResponse response = execute(get); + HttpResponse response = http.execute(get); String realID = videoID; // ステータスコード302など、リダイレクトが必要な場合 @@ -545,9 +536,9 @@ public class NicoHttpClient extends DefaultHttpClient { watchUrl = "http://www.nicovideo.jp/watch/" + realID; log.debug("アクセス: " + watchUrl); get = new HttpGet(watchUrl); - response = execute(get); + response = http.execute(get); } - getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, true); + http.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, true); final URL notifierUrl = Util.getNotifierUrl(response.getEntity().getContent()); log.debug("違反通報ページ: " + notifierUrl); @@ -556,7 +547,7 @@ public class NicoHttpClient extends DefaultHttpClient { String userName = null; if (notifierUrl != null) { get = new HttpGet(notifierUrl.toString()); - response = execute(get); + response = http.execute(get); userName = Util.getUserName(response.getEntity().getContent()); response.getEntity().consumeContent(); } @@ -570,7 +561,7 @@ public class NicoHttpClient extends DefaultHttpClient { } get = new HttpGet(url.toURI()); - response = execute(get); + response = http.execute(get); String contentType = response.getEntity().getContentType().getValue(); log.debug(contentType); log.debug(fileName); @@ -640,7 +631,7 @@ public class NicoHttpClient extends DefaultHttpClient { String itemId = null; String token = null; HttpGet get = new HttpGet(ADD_MYLIST_PAGE + videoId); - HttpResponse response = execute(get); + HttpResponse response = http.execute(get); HttpEntity entity = response.getEntity(); try { InputStream is = entity.getContent(); @@ -693,7 +684,7 @@ public class NicoHttpClient extends DefaultHttpClient { HttpPost post = new HttpPost("http://www.nicovideo.jp/api/mylist/add"); post.setHeader("Content-Type", "application/x-www-form-urlencoded"); post.setEntity(se); - response = execute(post); + response = http.execute(post); int statusCode = response.getStatusLine().getStatusCode(); response.getEntity().consumeContent(); if (statusCode != 200) { diff --git a/src/nicobrowser/main/Main.java b/src/nicobrowser/main/Main.java index 628714b..3d15631 100644 --- a/src/nicobrowser/main/Main.java +++ b/src/nicobrowser/main/Main.java @@ -107,7 +107,7 @@ public class Main { NicoHttpClient instance = null; try { log.info("リストを取得します"); - instance = NicoHttpClient.getInstance(); + instance = new NicoHttpClient(); List feeds = config.getNicoFeeds(); for (NicoFeed f : feeds) { List list = instance.getContentsFromRss(f.getUrl()); diff --git a/test/nicobrowser/NicoHttpClientRssTest.java b/test/nicobrowser/NicoHttpClientRssTest.java index b331b3f..ea66cfa 100644 --- a/test/nicobrowser/NicoHttpClientRssTest.java +++ b/test/nicobrowser/NicoHttpClientRssTest.java @@ -18,7 +18,7 @@ import org.junit.Test; public class NicoHttpClientRssTest { static final Log log = LogFactory.getLog(NicoHttpClientRssTest.class); - final NicoHttpClient client = NicoHttpClient.getInstance(); + final NicoHttpClient client = new NicoHttpClient(); @Test public void testNewArraivalCategory() throws MalformedURLException { diff --git a/test/nicobrowser/NicoHttpClientTest.java b/test/nicobrowser/NicoHttpClientTest.java index 64b9f43..2aa0445 100644 --- a/test/nicobrowser/NicoHttpClientTest.java +++ b/test/nicobrowser/NicoHttpClientTest.java @@ -30,6 +30,7 @@ public class NicoHttpClientTest { static final String OK_MAIL = "niconico.senyou@live.jp"; static final String OK_PASS = "piyopiyo"; static final String OK_LIST_NO = "3693055"; + private NicoHttpClient instance; public NicoHttpClientTest() { } @@ -44,6 +45,7 @@ public class NicoHttpClientTest { @Before public void setUp() { + instance = new NicoHttpClient(); } @After @@ -51,25 +53,10 @@ public class NicoHttpClientTest { } /** - * Test of getInstance method, of class NicoHttpClient. - */ - @Test - public void getInstance() { - System.out.println("getInstance"); - NicoHttpClient result = NicoHttpClient.getInstance(); - assertNotNull(result); - - // 2回目でも同じインスタンスが返る. - NicoHttpClient instance = NicoHttpClient.getInstance(); - assertEquals(result, instance); - } - - /** * Test of login method, of class NicoHttpClient. */ public void login() throws HttpException, URISyntaxException, InterruptedException { System.out.println("login"); - NicoHttpClient instance = NicoHttpClient.getInstance(); // ログイン失敗ケース instance.logout(); @@ -91,17 +78,16 @@ public class NicoHttpClientTest { System.out.println("logout"); boolean result; - result = NicoHttpClient.getInstance().logout(); + result = instance.logout(); assertEquals(true, result); - result = NicoHttpClient.getInstance().logout(); + result = instance.logout(); assertEquals(true, result); } public void loadMyList() throws URISyntaxException, HttpException, InterruptedException { System.out.println("loadMyList"); - NicoHttpClient instance = NicoHttpClient.getInstance(); List list; list = instance.loadMyList(OK_LIST_NO); @@ -119,7 +105,6 @@ public class NicoHttpClientTest { @Test public void loadMyListDaily() throws URISyntaxException, HttpException, InterruptedException { System.out.println("loadMyListDaily"); - NicoHttpClient instance = NicoHttpClient.getInstance(); List list = instance.loadMyListDaily(); assertNotNull(list); assertNotSame(0, list.size()); @@ -156,7 +141,6 @@ public class NicoHttpClientTest { public void getFlvUrl() throws URISyntaxException, HttpException, InterruptedException, IOException { System.out.println("getFlv"); - NicoHttpClient instance = NicoHttpClient.getInstance(); instance.login(OK_MAIL, OK_PASS); try { URL str = instance.getFlvUrl("sm1359820"); @@ -172,7 +156,6 @@ public class NicoHttpClientTest { public void downLoad() throws URISyntaxException, IOException, HttpException, InterruptedException { System.out.println("downLoad"); - NicoHttpClient instance = NicoHttpClient.getInstance(); instance.login(OK_MAIL, OK_PASS); try { @@ -189,7 +172,6 @@ public class NicoHttpClientTest { public void getFlvFile_String() throws HttpException, InterruptedException, URISyntaxException { System.out.println("getFlvFile"); String videoID = "sm1097445"; - NicoHttpClient instance = NicoHttpClient.getInstance(); instance.login(OK_MAIL, OK_PASS); GetFlvResult result; try { @@ -215,7 +197,6 @@ public class NicoHttpClientTest { @Test public void search() throws URISyntaxException, InterruptedException, HttpException, IOException { System.out.println("search"); - NicoHttpClient instance = NicoHttpClient.getInstance(); instance.login(OK_MAIL, OK_PASS); List conts = instance.search("初音ミク"); @@ -227,7 +208,6 @@ public class NicoHttpClientTest { public void loadMyMovie() throws URISyntaxException, InterruptedException, HttpException, IOException { System.out.println("search"); - NicoHttpClient instance = NicoHttpClient.getInstance(); instance.login(OK_MAIL, OK_PASS); NicoContent cont; @@ -255,7 +235,6 @@ public class NicoHttpClientTest { */ @Test public void addMyList() throws URISyntaxException, HttpException, InterruptedException, IOException { - NicoHttpClient instance = NicoHttpClient.getInstance(); instance.login(OK_MAIL, OK_PASS); instance.addMyList("5681871", "sm9477049"); -- 2.11.0