Search in sources :

Example 1 with HostNameParser

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();
}
Also used : HostNameParser(gov.nist.core.HostNameParser) HostPort(gov.nist.core.HostPort)

Example 2 with HostNameParser

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");
    }
}
Also used : HostNameParser(gov.nist.core.HostNameParser) NameValue(gov.nist.core.NameValue) HostPort(gov.nist.core.HostPort) Token(gov.nist.core.Token) SipUri(gov.nist.javax.sip.address.SipUri)

Aggregations

HostNameParser (gov.nist.core.HostNameParser)2 HostPort (gov.nist.core.HostPort)2 NameValue (gov.nist.core.NameValue)1 Token (gov.nist.core.Token)1 SipUri (gov.nist.javax.sip.address.SipUri)1