Refine search
public HeaderElement[] getElements() throws ParseException { ParserCursor cursor = new ParserCursor(0, this.buffer.length()); cursor.updatePos(this.valuePos); return BasicHeaderValueParser.DEFAULT .parseElements(this.buffer, cursor); }
public HeaderElement parseHeaderElement(final CharArrayBuffer buffer, final ParserCursor cursor) { if (buffer == null) { throw new IllegalArgumentException("Char array buffer may not be null"); } if (cursor == null) { throw new IllegalArgumentException("Parser cursor may not be null"); } NameValuePair nvp = parseNameValuePair(buffer, cursor); NameValuePair[] params = null; if (!cursor.atEnd()) { char ch = buffer.charAt(cursor.getPos() - 1); if (ch != ELEM_DELIMITER) { params = parseParameters(buffer, cursor); } } return createHeaderElement(nvp.getName(), nvp.getValue(), params); }
int pos = cursor.getPos(); int indexFrom = cursor.getPos(); int indexTo = cursor.getUpperBound(); char ch = buffer.charAt(pos); if (ch == '=') { break; if (isOneOf(ch, delimiters)) { terminated = true; break; name = buffer.substringTrimmed(indexFrom, indexTo); } else { name = buffer.substringTrimmed(indexFrom, pos); pos++; cursor.updatePos(pos); return createNameValuePair(name, null); qouted = !qouted; if (!qouted && !escaped && isOneOf(ch, delimiters)) { terminated = true; break; cursor.updatePos(pos); return createNameValuePair(name, value);
/** * Parses textual representation of {@code Content-Type} value. * * @param s text * @return content type * @throws ParseException if the given text does not represent a valid * {@code Content-Type} value. * @throws UnsupportedCharsetException Thrown when the named charset is not available in * this instance of the Java virtual machine */ public static ContentType parse( final String s) throws ParseException, UnsupportedCharsetException { Args.notNull(s, "Content type"); final CharArrayBuffer buf = new CharArrayBuffer(s.length()); buf.append(s); final ParserCursor cursor = new ParserCursor(0, s.length()); final HeaderElement[] elements = BasicHeaderValueParser.INSTANCE.parseElements(buf, cursor); if (elements.length > 0) { return create(elements[0], true); } else { throw new ParseException("Invalid content type: " + s); } }
@VisibleForTesting public static Map<String, String[]> constructParameterMap(URI uri) throws UnsupportedEncodingException { // Do not use uri.getQuery() here, as getQuery() already decodes, and we decode again below final String query = uri.getRawQuery(); if (query == null) { return Collections.emptyMap(); } Map<String, String[]> queryParams = new HashMap<>(); CharArrayBuffer buffer = new CharArrayBuffer(query.length()); buffer.append(query); ParserCursor cursor = new ParserCursor(0, buffer.length()); while (!cursor.atEnd()) { NameValuePair nameValuePair = BasicHeaderValueParser.INSTANCE.parseNameValuePair(buffer, cursor, QUERY_DELIMITERS); if (!StringUtils.isEmpty(nameValuePair.getName())) { String decodedName = urlDecode(nameValuePair.getName()); String decodedValue = urlDecode(nameValuePair.getValue()); String[] oldValues = queryParams.get(decodedName); String[] newValues = null == oldValues ? new String[1] : Arrays.copyOf(oldValues, oldValues.length + 1); newValues[newValues.length - 1] = decodedValue; queryParams.put(decodedName, newValues); } } return queryParams; }
@Override public NameValuePair parseNameValuePair(final CharArrayBuffer buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char array buffer"); 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 createNameValuePair(name, null); } final String value = tokenParser.parseValue(buffer, cursor, VALUE_DELIMS); if (!cursor.atEnd()) { cursor.updatePos(cursor.getPos() + 1); } return createNameValuePair(name, value); }
int pos = cursor.getPos(); int indexTo = cursor.getUpperBound(); char ch = buffer.charAt(pos); if (HTTP.isWhitespace(ch)) { pos++; cursor.updatePos(pos); if (cursor.atEnd()) { return new NameValuePair[] {}; while (!cursor.atEnd()) { NameValuePair param = parseNameValuePair(buffer, cursor); params.add(param); char ch = buffer.charAt(cursor.getPos() - 1); if (ch == ELEM_DELIMITER) { break;
@Override public NameValuePair[] parseParameters(final CharArrayBuffer buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char array buffer"); Args.notNull(cursor, "Parser cursor"); tokenParser.skipWhiteSpace(buffer, cursor); final List<NameValuePair> params = new ArrayList<NameValuePair>(); while (!cursor.atEnd()) { final NameValuePair param = parseNameValuePair(buffer, cursor); params.add(param); final char ch = buffer.charAt(cursor.getPos() - 1); if (ch == ELEM_DELIMITER) { break; } } return params.toArray(new NameValuePair[params.size()]); }
@Override public HeaderElement[] parseElements(final CharArrayBuffer buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char array buffer"); Args.notNull(cursor, "Parser cursor"); final List<HeaderElement> elements = new ArrayList<HeaderElement>(); while (!cursor.atEnd()) { final HeaderElement element = parseHeaderElement(buffer, cursor); if (!(element.getName().length() == 0 && element.getValue() == null)) { elements.add(element); } } return elements.toArray(new HeaderElement[elements.size()]); }
/** * Returns an array of {@link HeaderElement}s constructed from my value. * * @see BasicHeaderValueParser#parseElements(String, HeaderValueParser) * * @return an array of header elements * * @throws ParseException in case of a parse error */ public HeaderElement[] getElements() throws ParseException { if (this.value != null) { // result intentionally not cached, it's probably not used again return BasicHeaderValueParser.parseElements(this.value, null); } else { return new HeaderElement[] {}; } }
public HeaderElement parseHeader( final CharArrayBuffer buffer, final ParserCursor cursor) throws ParseException { if (buffer == null) { throw new IllegalArgumentException("Char array buffer may not be null"); } if (cursor == null) { throw new IllegalArgumentException("Parser cursor may not be null"); } NameValuePair nvp = this.nvpParser.parseNameValuePair(buffer, cursor, DELIMITERS); List<NameValuePair> params = new ArrayList<NameValuePair>(); while (!cursor.atEnd()) { NameValuePair param = this.nvpParser.parseNameValuePair(buffer, cursor, DELIMITERS); params.add(param); } return new BasicHeaderElement( nvp.getName(), nvp.getValue(), params.toArray(new NameValuePair[params.size()])); }
public HeaderElement[] parseElements(final CharArrayBuffer buffer, final ParserCursor cursor) { if (buffer == null) { throw new IllegalArgumentException("Char array buffer may not be null"); } if (cursor == null) { throw new IllegalArgumentException("Parser cursor may not be null"); } List elements = new ArrayList(); while (!cursor.atEnd()) { HeaderElement element = parseHeaderElement(buffer, cursor); if (!(element.getName().length() == 0 && element.getValue() == null)) { elements.add(element); } } return (HeaderElement[]) elements.toArray(new HeaderElement[elements.size()]); }
public NameValuePair parseNameValuePair(final CharArrayBuffer buffer, final ParserCursor cursor) { return parseNameValuePair(buffer, cursor, ALL_DELIMITERS); }
public void consume(Map<String, String> result) throws IOException { if (httpResponse.getEntity() != null) { if (responseCharacterSet == null || responseCharacterSet.isEmpty()) { Header contentType = httpResponse.getEntity().getContentType(); if (contentType != null) { String value = contentType.getValue(); NameValuePair[] nameValuePairs = BasicHeaderValueParser.parseParameters(value, BasicHeaderValueParser.INSTANCE); for (NameValuePair nameValuePair : nameValuePairs) { if (nameValuePair.getName().equalsIgnoreCase("charset")) { responseCharacterSet = nameValuePair.getValue(); break; } } } if (responseCharacterSet == null || responseCharacterSet.isEmpty()) { responseCharacterSet = Consts.ISO_8859_1.name(); } } consumeResponseContent(result); } }
public String getBoundary() { String contentTypeValue = getType(); HeaderElement[] contentType = BasicHeaderValueParser.parseElements(contentTypeValue, new BasicHeaderValueParser()); if (contentType.length != 1) throw new IllegalArgumentException("Multipart response appears to have a bad Content-Type: header value: " + contentTypeValue); NameValuePair boundaryNV = contentType[0].getParameterByName("boundary"); if (boundaryNV == null) return null; return unescapeBoundary(boundaryNV.getValue()); }
/** * Parses textual representation of <code>Content-Type</code> value. * * @param s text * @return content type * @throws ParseException if the given text does not represent a valid * <code>Content-Type</code> value. * @throws UnsupportedCharsetException Thrown when the named charset is not available in * this instance of the Java virtual machine */ public static ContentType parse( final String s) throws ParseException, UnsupportedCharsetException { Args.notNull(s, "Content type"); final CharArrayBuffer buf = new CharArrayBuffer(s.length()); buf.append(s); final ParserCursor cursor = new ParserCursor(0, s.length()); final HeaderElement[] elements = BasicHeaderValueParser.INSTANCE.parseElements(buf, cursor); if (elements.length > 0) { return create(elements[0]); } else { throw new ParseException("Invalid content type: " + s); } }
@VisibleForTesting public static Map<String, String[]> constructParameterMap(URI uri) throws UnsupportedEncodingException { // Do not use uri.getQuery() here, as getQuery() already decodes, and we decode again below final String query = uri.getRawQuery(); if (query == null) { return Collections.emptyMap(); } Map<String, String[]> queryParams = new HashMap<>(); CharArrayBuffer buffer = new CharArrayBuffer(query.length()); buffer.append(query); ParserCursor cursor = new ParserCursor(0, buffer.length()); while (!cursor.atEnd()) { NameValuePair nameValuePair = BasicHeaderValueParser.INSTANCE.parseNameValuePair(buffer, cursor, QUERY_DELIMITERS); if (!StringUtils.isEmpty(nameValuePair.getName())) { String decodedName = urlDecode(nameValuePair.getName()); String decodedValue = urlDecode(nameValuePair.getValue()); String[] oldValues = queryParams.get(decodedName); String[] newValues = null == oldValues ? new String[1] : Arrays.copyOf(oldValues, oldValues.length + 1); newValues[newValues.length - 1] = decodedValue; queryParams.put(decodedName, newValues); } } return queryParams; }
@Override public NameValuePair parseNameValuePair(final CharArrayBuffer buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char array buffer"); 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 createNameValuePair(name, null); } final String value = tokenParser.parseValue(buffer, cursor, VALUE_DELIMS); if (!cursor.atEnd()) { cursor.updatePos(cursor.getPos() + 1); } return createNameValuePair(name, value); }
public NameValuePair[] parseParameters(final CharArrayBuffer buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char array buffer"); Args.notNull(cursor, "Parser cursor"); int pos = cursor.getPos(); final int indexTo = cursor.getUpperBound(); while (pos < indexTo) { final char ch = buffer.charAt(pos); if (HTTP.isWhitespace(ch)) { pos++; } else { break; } } cursor.updatePos(pos); if (cursor.atEnd()) { return new NameValuePair[] {}; } final List<NameValuePair> params = new ArrayList<NameValuePair>(); while (!cursor.atEnd()) { final NameValuePair param = parseNameValuePair(buffer, cursor); params.add(param); final char ch = buffer.charAt(cursor.getPos() - 1); if (ch == ELEM_DELIMITER) { break; } } return params.toArray(new NameValuePair[params.size()]); }
@Override public NameValuePair[] parseParameters(final CharArrayBuffer buffer, final ParserCursor cursor) { Args.notNull(buffer, "Char array buffer"); Args.notNull(cursor, "Parser cursor"); tokenParser.skipWhiteSpace(buffer, cursor); final List<NameValuePair> params = new ArrayList<NameValuePair>(); while (!cursor.atEnd()) { final NameValuePair param = parseNameValuePair(buffer, cursor); params.add(param); final char ch = buffer.charAt(cursor.getPos() - 1); if (ch == ELEM_DELIMITER) { break; } } return params.toArray(new NameValuePair[params.size()]); }