private String parseToken(final CharArrayBuffer buf, final ParserCursor cursor, final BitSet delimiters) { return tokenParser.parseToken(buf, cursor, delimiters); }
@Override String parseHeaderElement(final CharSequence buf, final ParserCursor cursor) { final String token = this.parser.parseToken(buf, cursor, COMMA); if (!cursor.atEnd()) { final int pos = cursor.getPos(); if (buf.charAt(pos) == ',') { cursor.updatePos(pos + 1); } } return !TextUtils.isBlank(token) ? token : null; }
@Override String parseHeaderElement(final CharSequence buf, final ParserCursor cursor) { final String token = this.parser.parseToken(buf, cursor, COMMA); if (!cursor.atEnd()) { final int pos = cursor.getPos(); if (buf.charAt(pos) == ',') { cursor.updatePos(pos + 1); } } return !TextUtils.isBlank(token) ? token : null; }
public static Set<String> parseTokens(final CharSequence src, final ParserCursor cursor) { Args.notNull(src, "Source"); Args.notNull(cursor, "Cursor"); final Set<String> tokens = new LinkedHashSet<>(); while (!cursor.atEnd()) { final int pos = cursor.getPos(); if (src.charAt(pos) == ',') { cursor.updatePos(pos + 1); } final String token = TokenParser.INSTANCE.parseToken(src, cursor, COMMA); if (!TextUtils.isBlank(token)) { tokens.add(token); } } return tokens; }
public static Set<String> parseTokens(final CharSequence src, final ParserCursor cursor) { Args.notNull(src, "Source"); Args.notNull(cursor, "Cursor"); final Set<String> tokens = new LinkedHashSet<>(); while (!cursor.atEnd()) { final int pos = cursor.getPos(); if (src.charAt(pos) == ',') { cursor.updatePos(pos + 1); } final String token = TokenParser.INSTANCE.parseToken(src, cursor, COMMA); if (!TextUtils.isBlank(token)) { tokens.add(token); } } return tokens; }
while (!cursor.atEnd()) { delimSet.set('='); final String name = tokenParser.parseToken(s, cursor, delimSet); String value = null; if (!cursor.atEnd()) { if (delim == '=') { delimSet.clear('='); value = tokenParser.parseToken(s, cursor, delimSet); if (!cursor.atEnd()) { cursor.updatePos(cursor.getPos() + 1);
while (!cursor.atEnd()) { delimSet.set('='); final String name = tokenParser.parseToken(s, cursor, delimSet); String value = null; if (!cursor.atEnd()) { if (delim == '=') { delimSet.clear('='); value = tokenParser.parseToken(s, cursor, delimSet); if (!cursor.atEnd()) { cursor.updatePos(cursor.getPos() + 1);
throw new ParseException("Invalid TLS version", buffer, lowerBound, upperBound, pos); final String s = this.tokenParser.parseToken(buffer, cursor, delimiters); final int idx = s.indexOf('.'); if (idx == -1) {
NameValuePair parseTokenOrParameter(final CharSequence buffer, final ParserCursor cursor) { tokenParser.skipWhiteSpace(buffer, cursor); final String token = tokenParser.parseToken(buffer, cursor, TERMINATORS); if (!cursor.atEnd()) { if (buffer.charAt(cursor.getPos()) == BLANK) { tokenParser.skipWhiteSpace(buffer, cursor); } if (!cursor.atEnd() && buffer.charAt(cursor.getPos()) == EQUAL_CHAR) { cursor.updatePos(cursor.getPos() + 1); final String value = tokenParser.parseValue(buffer, cursor, DELIMITER); return new BasicNameValuePair(token, value); } } return new BasicNameValuePair(token, null); }
@Test public void testTokenParsingTokensWithUnquotedBlanks() throws Exception { final String s = " stuff and \tsome\tmore stuff ;"; final CharArrayBuffer raw = createBuffer(s); final ParserCursor cursor = new ParserCursor(0, s.length()); final String result = parser.parseToken(raw, cursor, TokenParser.INIT_BITSET(';')); Assert.assertEquals("stuff and some more stuff", result); }
@Override public StatusLine parseStatusLine(final CharArrayBuffer buffer) throws ParseException { Args.notNull(buffer, "Char array buffer"); final ParserCursor cursor = new ParserCursor(0, buffer.length()); this.tokenParser.skipWhiteSpace(buffer, cursor); final ProtocolVersion ver = parseProtocolVersion(buffer, cursor); this.tokenParser.skipWhiteSpace(buffer, cursor); final String s = this.tokenParser.parseToken(buffer, cursor, BLANKS); for (int i = 0; i < s.length(); i++) { if (!Character.isDigit(s.charAt(i))) { throw new ParseException("Status line contains invalid status code", buffer, cursor.getLowerBound(), cursor.getUpperBound(), cursor.getPos()); } } final int statusCode; try { statusCode = Integer.parseInt(s); } catch (final NumberFormatException e) { throw new ParseException("Status line contains invalid status code", buffer, cursor.getLowerBound(), cursor.getUpperBound(), cursor.getPos()); } final String text = buffer.substringTrimmed(cursor.getPos(), cursor.getUpperBound()); return new StatusLine(ver, statusCode, text); }
@Override public StatusLine parseStatusLine(final CharArrayBuffer buffer) throws ParseException { Args.notNull(buffer, "Char array buffer"); final ParserCursor cursor = new ParserCursor(0, buffer.length()); this.tokenParser.skipWhiteSpace(buffer, cursor); final ProtocolVersion ver = parseProtocolVersion(buffer, cursor); this.tokenParser.skipWhiteSpace(buffer, cursor); final String s = this.tokenParser.parseToken(buffer, cursor, BLANKS); for (int i = 0; i < s.length(); i++) { if (!Character.isDigit(s.charAt(i))) { throw new ParseException("Status line contains invalid status code", buffer, cursor.getLowerBound(), cursor.getUpperBound(), cursor.getPos()); } } final int statusCode; try { statusCode = Integer.parseInt(s); } catch (final NumberFormatException e) { throw new ParseException("Status line contains invalid status code", buffer, cursor.getLowerBound(), cursor.getUpperBound(), cursor.getPos()); } final String text = buffer.substringTrimmed(cursor.getPos(), cursor.getUpperBound()); return new StatusLine(ver, statusCode, text); }
@Override public NameValuePair parseNameValuePair(final CharSequence buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char sequence"); Args.notNull(cursor, "Parser cursor"); final String name = tokenParser.parseToken(buffer, cursor, TOKEN_DELIMS); if (cursor.atEnd()) { return new BasicNameValuePair(name, null); } final int delim = buffer.charAt(cursor.getPos()); cursor.updatePos(cursor.getPos() + 1); if (delim != '=') { return new BasicNameValuePair(name, null); } final String value = tokenParser.parseValue(buffer, cursor, VALUE_DELIMS); if (!cursor.atEnd()) { cursor.updatePos(cursor.getPos() + 1); } return new BasicNameValuePair(name, value); }
@Override public NameValuePair parseNameValuePair(final CharSequence buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char sequence"); Args.notNull(cursor, "Parser cursor"); final String name = tokenParser.parseToken(buffer, cursor, TOKEN_DELIMS); if (cursor.atEnd()) { return new BasicNameValuePair(name, null); } final int delim = buffer.charAt(cursor.getPos()); cursor.updatePos(cursor.getPos() + 1); if (delim != '=') { return new BasicNameValuePair(name, null); } final String value = tokenParser.parseValue(buffer, cursor, VALUE_DELIMS); if (!cursor.atEnd()) { cursor.updatePos(cursor.getPos() + 1); } return new BasicNameValuePair(name, value); }
final String token1 = this.tokenParser.parseToken(buffer, cursor, FULL_STOP); final int major; try { final String token2 = this.tokenParser.parseToken(buffer, cursor, BLANKS); final int minor; try {
final String token1 = this.tokenParser.parseToken(buffer, cursor, FULL_STOP); final int major; try { final String token2 = this.tokenParser.parseToken(buffer, cursor, BLANKS); final int minor; try {
final String method = this.tokenParser.parseToken(buffer, cursor, BLANKS); if (TextUtils.isEmpty(method)) { throw new ParseException("Invalid request line", final String uri = this.tokenParser.parseToken(buffer, cursor, BLANKS); if (TextUtils.isEmpty(uri)) { throw new ParseException("Invalid request line",
final String method = this.tokenParser.parseToken(buffer, cursor, BLANKS); if (TextUtils.isEmpty(method)) { throw new ParseException("Invalid request line", final String uri = this.tokenParser.parseToken(buffer, cursor, BLANKS); if (TextUtils.isEmpty(uri)) { throw new ParseException("Invalid request line",
@Override public Header parseHeader(final CharArrayBuffer buffer) throws ParseException { Args.notNull(buffer, "Char array buffer"); final ParserCursor cursor = new ParserCursor(0, buffer.length()); this.tokenParser.skipWhiteSpace(buffer, cursor); final String name = this.tokenParser.parseToken(buffer, cursor, COLON); if (cursor.getPos() == cursor.getLowerBound() || cursor.getPos() == cursor.getUpperBound() || buffer.charAt(cursor.getPos()) != ':' || TextUtils.isEmpty(name) || TokenParser.isWhitespace(buffer.charAt(cursor.getPos() - 1))) { throw new ParseException("Invalid header", buffer, cursor.getLowerBound(), cursor.getUpperBound(), cursor.getPos()); } final String value = buffer.substringTrimmed(cursor.getPos() + 1, cursor.getUpperBound()); return new BasicHeader(name, value); }
@Override public Header parseHeader(final CharArrayBuffer buffer) throws ParseException { Args.notNull(buffer, "Char array buffer"); final ParserCursor cursor = new ParserCursor(0, buffer.length()); this.tokenParser.skipWhiteSpace(buffer, cursor); final String name = this.tokenParser.parseToken(buffer, cursor, COLON); if (cursor.getPos() == cursor.getLowerBound() || cursor.getPos() == cursor.getUpperBound() || buffer.charAt(cursor.getPos()) != ':' || TextUtils.isEmpty(name) || TokenParser.isWhitespace(buffer.charAt(cursor.getPos() - 1))) { throw new ParseException("Invalid header", buffer, cursor.getLowerBound(), cursor.getUpperBound(), cursor.getPos()); } final String value = buffer.substringTrimmed(cursor.getPos() + 1, cursor.getUpperBound()); return new BasicHeader(name, value); }