package logbook.server.proxy; /** * 動作に必要なデータのみ取得するためのフィルターです。 * */ public class Filter { /** フィルターするContent-Type */ public static final String CONTENT_TYPE_FILTER = "text/plain"; /** キャプチャーするリクエストのバイトサイズ上限 */ public static final int MAX_POST_FIELD_SIZE = 1024 * 1024; /** setAttribute用のキー(Response) */ public static final String RESPONSE_BODY = "res-body"; /** setAttribute用のキー(Request) */ public static final String REQUEST_BODY = "req-body"; /** setAttribute用のキー(Content-Encoding) */ public static final String CONTENT_ENCODING = "logbook.content-encoding"; private static String serverName; /** * 鎮守府サーバー名を設定する * @param name 鎮守府サーバー名 */ public static void setServerName(String name) { serverName = name; } /** * 鎮守府サーバー名を取得する * @param name 鎮守府サーバー名 */ public static String getServerName() { return serverName; } /** * 鎮守府サーバー名を検出した場合true * * @return 鎮守府サーバー名を検出した場合true */ public static boolean isServerDetected() { return serverName != null; } /** * <p> * 取得が必要なデータかを調べます<br> * 鎮守府サーバーが検出された場合はサーバー名から必要かどうかを判別します<br> * 鎮守府サーバーが検出できていない場合は常にtrue<br> * * @param name サーバー名 * @return 取得が必要なデータか */ public static boolean isNeed(String name) { if ((!isServerDetected() || (isServerDetected() && serverName.equals(name)))) { return true; } return false; } /** * <p> * 取得が必要なデータかを調べます<br> * 鎮守府サーバーが検出された場合はサーバー名とContent-Typeから必要かどうかを判別します<br> * 鎮守府サーバーが検出できていない場合はContent-Typeから必要かどうかを判別します<br> * * @param name サーバー名 * @param contentType Content-Type * @return 取得が必要なデータか */ public static boolean isNeed(String name, String contentType) { if ((!isServerDetected() || serverName.equals(name)) && CONTENT_TYPE_FILTER.equals(contentType)) { return true; } return false; } }