Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,13 @@ public void forEachEntry(BiConsumer<String, String> consumer) {
}
}

@Override
public <C> void forEachEntry(C contextValue, HeaderWithValueConsumer<C> consumer) {
for (int i = 0; i < size * 2; i += 2) {
consumer.accept(contextValue, array[i], array[i + 1]);
}
}

/**
* Create a new ArrayHttpHeaders by copying raw array data.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ final class ArrayHttpHeaders extends AbstractArrayHttpHeaders implements Modifia
* @param key pre-interned header name (must be from HeaderNameRegistry)
* @param value header value
*/
void addHeaderCanonical(String key, String value) {
@Override
public void addHeaderCanonical(String key, String value) {
ensureCapacity();
int idx = size * 2;
array[idx] = key;
Expand All @@ -44,9 +45,14 @@ void addHeaderCanonical(String key, String value) {

@Override
public void addHeaderTrusted(HeaderName name, String value) {
addHeaderTrusted(name.name(), value);
}

@Override
public void addHeaderTrusted(String name, String value) {
ensureCapacity();
int idx = size * 2;
array[idx] = name.name();
array[idx] = name;
array[idx + 1] = value;
size++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ public final class HeaderName {
public static final HeaderName AMZ_SDK_REQUEST = HeaderName.builtin("amz-sdk-request");
public static final HeaderName X_AMZN_REQUESTID = HeaderName.builtin("x-amzn-requestid");
public static final HeaderName X_AMZN_TRACE_ID = HeaderName.builtin("x-amzn-trace-id");
public static final HeaderName X_AMZ_CHECKSUM_CRC32 = HeaderName.builtin("x-amz-checksum-crc32");
public static final HeaderName X_AMZ_CHECKSUM_CRC32C = HeaderName.builtin("x-amz-checksum-crc32c");
public static final HeaderName X_AMZ_CHECKSUM_CRC64NVME = HeaderName.builtin("x-amz-checksum-crc64nvme");
public static final HeaderName X_AMZ_CHECKSUM_SHA1 = HeaderName.builtin("x-amz-checksum-sha1");
public static final HeaderName X_AMZ_CHECKSUM_SHA256 = HeaderName.builtin("x-amz-checksum-sha256");
public static final HeaderName X_AMZ_CONTENT_SHA256 = HeaderName.builtin("x-amz-content-sha256");
public static final HeaderName X_AMZ_DATE = HeaderName.builtin("x-amz-date");
public static final HeaderName X_AMZ_REQUEST_ID = HeaderName.builtin("x-amz-request-id");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,16 @@ default void addHeader(HeaderName name, List<String> values) {
addHeader(name.name(), values);
}

/**
* Add a header with a pre-canonicalized name.
*
* <p>Use this when {@code name} is already canonical lowercase. The value is
* still normalized and validated.
*/
default void addHeaderCanonical(String name, String value) {
addHeader(name, value);
}

/**
* Adds the given {@code headers}, similarly to if {@link #addHeader(String, List)} were to be called for each
* entry in the given map.
Expand Down Expand Up @@ -181,6 +191,17 @@ default void addHeaderTrusted(HeaderName name, String value) {
addHeader(name, value);
}

/**
* Add a header with a pre-canonicalized name and pre-validated value, bypassing
* name canonicalization and value normalization when supported.
*
* <p>Use this only when {@code name} is already canonical lowercase and
* {@code value} is known to be valid.
*/
default void addHeaderTrusted(String name, String value) {
addHeader(name, value);
}

/**
* Remove a header and its values by name.
*
Expand Down
Loading