use of gov.nist.core.HostNameParser in project XobotOS by xamarin.
the class URLParser method uricString.
protected String uricString() throws ParseException {
StringBuffer retval = new StringBuffer();
while (true) {
String next = uric();
if (next == null) {
char la = lexer.lookAhead(0);
// e.g. http://[::1]
if (la == '[') {
HostNameParser hnp = new HostNameParser(this.getLexer());
HostPort hp = hnp.hostPort(false);
retval.append(hp.toString());
continue;
}
break;
}
retval.append(next);
}
return retval.toString();
}
use of gov.nist.core.HostNameParser in project XobotOS by xamarin.
the class URLParser method sipURL.
/**
* Parse and return a structure for a SIP URL.
* @return a URL structure for a SIP url.
* @throws ParseException if there was a problem parsing.
*/
public SipUri sipURL(boolean inBrackets) throws ParseException {
if (debug)
dbg_enter("sipURL");
SipUri retval = new SipUri();
// pmusgrave - handle sips case
Token nextToken = lexer.peekNextToken();
int sipOrSips = TokenTypes.SIP;
String scheme = TokenNames.SIP;
if (nextToken.getTokenType() == TokenTypes.SIPS) {
sipOrSips = TokenTypes.SIPS;
scheme = TokenNames.SIPS;
}
try {
lexer.match(sipOrSips);
lexer.match(':');
retval.setScheme(scheme);
int startOfUser = lexer.markInputPosition();
// Note: user may contain ';', host may not...
String userOrHost = user();
String passOrPort = null;
// name:password or host:port
if (lexer.lookAhead() == ':') {
lexer.consume(1);
passOrPort = password();
}
// name@hostPort
if (lexer.lookAhead() == '@') {
lexer.consume(1);
retval.setUser(userOrHost);
if (passOrPort != null)
retval.setUserPassword(passOrPort);
} else {
// then userOrHost was a host, backtrack just in case a ';' was eaten...
lexer.rewindInputPosition(startOfUser);
}
HostNameParser hnp = new HostNameParser(this.getLexer());
HostPort hp = hnp.hostPort(false);
retval.setHostPort(hp);
lexer.selectLexer("charLexer");
while (lexer.hasMoreChars()) {
// If the URI is not enclosed in brackets, parameters belong to header
if (lexer.lookAhead(0) != ';' || !inBrackets)
break;
lexer.consume(1);
NameValue parms = uriParam();
if (parms != null)
retval.setUriParameter(parms);
}
if (lexer.hasMoreChars() && lexer.lookAhead(0) == '?') {
lexer.consume(1);
while (lexer.hasMoreChars()) {
NameValue parms = qheader();
retval.setQHeader(parms);
if (lexer.hasMoreChars() && lexer.lookAhead(0) != '&')
break;
else
lexer.consume(1);
}
}
return retval;
} finally {
if (debug)
dbg_leave("sipURL");
}
}
Aggregations