@Test public void toAsciiLowerCaseNoUppercase() throws Exception { ByteString s = factory.encodeUtf8("a1_+"); assertEquals(s, s.toAsciiLowercase()); if (factory == Factory.BYTE_STRING) { assertSame(s, s.toAsciiLowercase()); } }
ByteString name = header.name.toAsciiLowercase(); ByteString value = header.value; int headerIndex = -1;
@Test public void readAndToLowercase() throws Exception { InputStream in = new ByteArrayInputStream("ABC".getBytes(Charsets.UTF_8)); assertEquals(ByteString.encodeUtf8("ab"), ByteString.read(in, 2).toAsciiLowercase()); assertEquals(ByteString.encodeUtf8("c"), ByteString.read(in, 1).toAsciiLowercase()); assertEquals(ByteString.EMPTY, ByteString.read(in, 0).toAsciiLowercase()); }
@Test public void toAsciiAllUppercase() throws Exception { assertEquals(ByteString.encodeUtf8("ab"), factory.encodeUtf8("AB").toAsciiLowercase()); }
ByteString name = header.name.toAsciiLowercase(); ByteString value = header.value; int headerIndex = -1;
@Test public void toAsciiStartsLowercaseEndsUppercase() throws Exception { assertEquals(ByteString.encodeUtf8("abcd"), factory.encodeUtf8("abCD").toAsciiLowercase()); }
@Override public ByteString toAsciiLowercase() { return toByteString().toAsciiLowercase(); }
/** This does not use "never indexed" semantics for sensitive headers. */ // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3 void writeHeaders(List<Header> headerBlock) throws IOException { // TODO: implement index tracking for (int i = 0, size = headerBlock.size(); i < size; i++) { ByteString name = headerBlock.get(i).name.toAsciiLowercase(); Integer staticIndex = NAME_TO_FIRST_INDEX.get(name); if (staticIndex != null) { // Literal Header Field without Indexing - Indexed Name. writeInt(staticIndex + 1, PREFIX_4_BITS, 0); writeByteString(headerBlock.get(i).value); } else { out.writeByte(0x00); // Literal Header without Indexing - New Name. writeByteString(name); writeByteString(headerBlock.get(i).value); } } }
public List<Header> readNameValueBlock(int length) throws IOException { this.compressedLimit += length; int numberOfPairs = source.readInt(); if (numberOfPairs < 0) throw new IOException("numberOfPairs < 0: " + numberOfPairs); if (numberOfPairs > 1024) throw new IOException("numberOfPairs > 1024: " + numberOfPairs); List<Header> entries = new ArrayList<>(numberOfPairs); for (int i = 0; i < numberOfPairs; i++) { ByteString name = readByteString().toAsciiLowercase(); ByteString values = readByteString(); if (name.size() == 0) throw new IOException("name.size == 0"); entries.add(new Header(name, values)); } doneReading(); return entries; }
public List<Header> readNameValueBlock(int length) throws IOException { this.compressedLimit += length; int numberOfPairs = source.readInt(); if (numberOfPairs < 0) throw new IOException("numberOfPairs < 0: " + numberOfPairs); if (numberOfPairs > 1024) throw new IOException("numberOfPairs > 1024: " + numberOfPairs); List<Header> entries = new ArrayList<>(numberOfPairs); for (int i = 0; i < numberOfPairs; i++) { ByteString name = readByteString().toAsciiLowercase(); ByteString values = readByteString(); if (name.size() == 0) throw new IOException("name.size == 0"); entries.add(new Header(name, values)); } doneReading(); return entries; }
/** This does not use "never indexed" semantics for sensitive headers. */ // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3 void writeHeaders(List<Header> headerBlock) throws IOException { // TODO: implement index tracking for (int i = 0, size = headerBlock.size(); i < size; i++) { ByteString name = headerBlock.get(i).name.toAsciiLowercase(); Integer staticIndex = NAME_TO_FIRST_INDEX.get(name); if (staticIndex != null) { // Literal Header Field without Indexing - Indexed Name. writeInt(staticIndex + 1, PREFIX_4_BITS, 0); writeByteString(headerBlock.get(i).value); } else { out.writeByte(0x00); // Literal Header without Indexing - New Name. writeByteString(name); writeByteString(headerBlock.get(i).value); } } }
/** This does not use "never indexed" semantics for sensitive headers. */ // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3 void writeHeaders(List<Header> headerBlock) throws IOException { // TODO: implement index tracking for (int i = 0, size = headerBlock.size(); i < size; i++) { ByteString name = headerBlock.get(i).name.toAsciiLowercase(); Integer staticIndex = NAME_TO_FIRST_INDEX.get(name); if (staticIndex != null) { // Literal Header Field without Indexing - Indexed Name. writeInt(staticIndex + 1, PREFIX_4_BITS, 0); writeByteString(headerBlock.get(i).value); } else { out.writeByte(0x00); // Literal Header without Indexing - New Name. writeByteString(name); writeByteString(headerBlock.get(i).value); } } }
public List<Header> readNameValueBlock(int length) throws IOException { this.compressedLimit += length; int numberOfPairs = source.readInt(); if (numberOfPairs < 0) throw new IOException("numberOfPairs < 0: " + numberOfPairs); if (numberOfPairs > 1024) throw new IOException("numberOfPairs > 1024: " + numberOfPairs); List<Header> entries = new ArrayList<>(numberOfPairs); for (int i = 0; i < numberOfPairs; i++) { ByteString name = readByteString().toAsciiLowercase(); ByteString values = readByteString(); if (name.size() == 0) throw new IOException("name.size == 0"); entries.add(new Header(name, values)); } doneReading(); return entries; }
ByteString name = header.name.toAsciiLowercase(); ByteString value = header.value; int headerIndex = -1;
ByteString name = header.name.toAsciiLowercase(); ByteString value = header.value; int headerIndex = -1;