package org.mobicents.rtsp; import java.net.URI; import java.net.URISyntaxException; import java.util.List; import java.util.Set; import org.jboss.netty.handler.codec.http.DefaultHttpMessage; import org.jboss.netty.handler.codec.http.HttpMethod; /** * * @author amit.bhayani * */ public class DefaultRtspRequest extends DefaultHttpMessage implements RtspRequest { private final RtspMethod method; private final String uri; private final String host; private final int port; private final static String COLON = ":"; private final static String SP = " "; private final static String CRLF = "\r\n"; public DefaultRtspRequest(RtspVersion rtspVersion, RtspMethod method, String uri) throws URISyntaxException { super(rtspVersion); if (method == null) { throw new NullPointerException("method"); } if (uri == null) { throw new NullPointerException("uri"); } URI objUri = new URI(uri); String scheme = objUri.getScheme() == null ? "rtsp" : objUri .getScheme(); host = objUri.getHost() == null ? "localhost" : objUri.getHost(); port = objUri.getPort() == -1 ? 5050 : objUri.getPort(); if (!scheme.equalsIgnoreCase("rtsp")) { throw new UnsupportedOperationException("Only rtsp is supported"); } this.method = method; this.uri = uri; } public HttpMethod getMethod() { return method; } public String getUri() { return uri; } @Override public String toString() { return getMethod().toString() + ' ' + getUri() + ' ' + getProtocolVersion().getText(); } public String debug() { StringBuffer buffer = new StringBuffer(); buffer.append(this.toString()); buffer.append(CRLF); Set<String> headers = this.getHeaderNames(); for (String header : headers) { List<String> values = this.getHeaders(header); for (String value : values) { buffer.append(header); buffer.append(COLON); buffer.append(SP); buffer.append(value); buffer.append(CRLF); } } return buffer.toString(); } public String getHost() { return host; } public int getPort() { return port; } }