/*
 * $Id: RSSHttpURLConnectionStub.java,v 1.3 2005/10/23 12:31:35 rampil Exp $
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.rss.http;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import HTTPClient.HTTPResponse;
import HTTPClient.ModuleException;
import HTTPClient.ProtocolNotSuppException;

/**
 * HTTP接続オブジェクト(テスト用)
 * どんなURLを指定しても，内部的にlocalhostに変換して接続しようとする．
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.3 $
 */
public class RSSHttpURLConnectionStub extends RSSHttpURLConnection {
	/** コンストラクタで指定されたURL */
	private final URL originalURL;

	/**
	 * コンストラクタ．
	 * @param dest 接続先(※localhost:80にしか接続しない)
	 * @param hostname テスト用httpdが起動しているホスト
	 * @param port テスト用httpdがlisteningしているポート番号
	 * @throws ProtocolNotSuppException プロトコルをサポートしていない
	 */
	public RSSHttpURLConnectionStub(URL dest, String hostname, int port) throws ProtocolNotSuppException, MalformedURLException {
		super(new URL(dest.getProtocol(), hostname, port, dest.getFile()));
		originalURL = dest;
	}
	/**
	 * 接続先URLを返す．
	 * @return 接続先URL
	 */
	public URL getURL() {
		return originalURL;
	}
	/**
	 * コンストラクタで設定したURLのファイルをリクエストする．
	 * @return レスポンス
	 */
	public HTTPResponse get() throws IOException, ModuleException {
		HTTPResponse resp = Get(super.getURL().getFile(), super.getURL().getQuery());

		// オリジナルURLを書き換える
		return resp;
	}
}
