Skip to content

Commit

Permalink
Use Cookie Encoder/Decoder API (#618)
Browse files Browse the repository at this point in the history
* Use Cookie Encoder/Decoder API

* servlet 4.5.0

* Fix RequestFilterTest

* Fix Cors TCK test

* Replace wildcard import

---------

Co-authored-by: Tim Yates <tim.yates@gmail.com>
  • Loading branch information
sdelamo and timyates committed Jan 24, 2024
1 parent 7f82a6d commit 05dc4b0
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 44 deletions.
1 change: 0 additions & 1 deletion azure-function-http/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ dependencies {
api(mn.micronaut.http.server)
api(projects.micronautAzureFunction)
api(mnServlet.micronaut.servlet.core)
implementation(mn.micronaut.http.netty)
implementation(mn.micronaut.router)
implementation(libs.jakarta.inject.api)
compileOnly(libs.managed.azure.functions.java.library)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@
import io.micronaut.http.HttpHeaders;
import io.micronaut.http.cookie.Cookie;
import io.micronaut.http.cookie.Cookies;
import io.micronaut.http.netty.cookies.NettyCookie;
import io.netty.handler.codec.http.cookie.ServerCookieDecoder;
import io.micronaut.http.cookie.ServerCookieDecoder;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
Expand All @@ -51,18 +51,11 @@ public AzureCookies(String path, HttpHeaders headers, ConversionService conversi
this.conversionService = conversionService;
String value = headers.get(HttpHeaders.COOKIE);
if (value != null) {
cookies = new LinkedHashMap<>(10);
Set<io.netty.handler.codec.http.cookie.Cookie> nettyCookies = ServerCookieDecoder.STRICT.decode(value);
for (io.netty.handler.codec.http.cookie.Cookie nettyCookie : nettyCookies) {
String cookiePath = nettyCookie.path();
if (cookiePath != null) {
if (path.startsWith(cookiePath)) {
cookies.put(nettyCookie.name(), new NettyCookie(nettyCookie));
}
} else {
cookies.put(nettyCookie.name(), new NettyCookie(nettyCookie));
}
}
List<Cookie> cookieList = ServerCookieDecoder.INSTANCE.decode(value);
cookies = new LinkedHashMap<>(cookieList.size());
cookieList.stream()
.filter(c -> c.getPath() == null || path.startsWith(c.getPath()))
.forEach(c -> cookies.put(c.getName(), c));
} else {
cookies = Collections.emptyMap();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@
import io.micronaut.http.MutableHttpHeaders;
import io.micronaut.http.MutableHttpResponse;
import io.micronaut.http.cookie.Cookie;
import io.micronaut.http.netty.cookies.NettyCookie;
import io.micronaut.http.cookie.ServerCookieEncoder;
import io.micronaut.servlet.http.ServletHttpResponse;
import io.netty.handler.codec.http.cookie.ServerCookieEncoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -84,10 +83,7 @@ public BufferedWriter getWriter() {

@Override
public MutableHttpResponse<B> cookie(Cookie cookie) {
if (cookie instanceof NettyCookie nettyCookie) {
final String encoded = ServerCookieEncoder.STRICT.encode(nettyCookie.getNettyCookie());
header(HttpHeaders.SET_COOKIE, encoded);
}
ServerCookieEncoder.INSTANCE.encode(cookie).forEach(c -> header(HttpHeaders.SET_COOKIE, c));
return this;
}

Expand Down Expand Up @@ -160,12 +156,10 @@ public HttpResponseMessage getNativeResponse() {
responseBuilder.header(s, string);
}
});
if (bodyObject != null) {
if (binaryTypeConfiguration.isMediaTypeBinary(getHeaders().getContentType().orElse(null))) {
responseBuilder.body(body.toByteArray());
} else {
responseBuilder.body(body.toString(getCharacterEncoding()));
}
if (binaryTypeConfiguration.isMediaTypeBinary(getHeaders().getContentType().orElse(null))) {
responseBuilder.body(body.toByteArray());
} else {
responseBuilder.body(body.toString(getCharacterEncoding()));
}
return responseBuilder.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
import io.micronaut.context.ApplicationContext;
import io.micronaut.core.annotation.Internal;
import io.micronaut.servlet.http.ServletExchange;
import io.netty.util.internal.MacAddressUtil;
import io.netty.util.internal.PlatformDependent;

import java.util.Optional;

Expand All @@ -35,18 +33,7 @@
class HttpHandler extends HttpRequestMessageHandler {

public HttpHandler(ApplicationContext applicationContext) {
super(init(applicationContext));
}

private static ApplicationContext init(ApplicationContext applicationContext) {
setIoNettyMachineIdSystemProperty();
return applicationContext;
}

private static void setIoNettyMachineIdSystemProperty() {
byte[] bestMacAddr = new byte[8];
PlatformDependent.threadLocalRandom().nextBytes(bestMacAddr);
System.setProperty("io.netty.machineId", MacAddressUtil.formatAddress(bestMacAddr));
super(applicationContext);
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ system-lambda = "1.2.1"
testcontainers = "1.19.3"

# Micronaut
micronaut = "4.2.3"
micronaut = "4.3.0"
micronaut-logging = "1.1.2"
micronaut-reactor = "3.2.1"
micronaut-serde = "2.7.1"
micronaut-servlet = "4.4.0"
micronaut-servlet = "4.5.0"
micronaut-test = "4.1.1"
micronaut-validation = "4.2.0"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.micronaut.core.convert.ConversionService;
import io.micronaut.core.type.Argument;
import io.micronaut.core.util.StringUtils;
import io.micronaut.http.HttpHeaders;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.client.exceptions.HttpClientResponseException;
Expand Down Expand Up @@ -75,7 +76,8 @@ public void close() throws IOException {

private final static Set<String> HEADERS_USED_IN_TEST_SUITE = Set.of(
"X-Test-Filter",
"X-Captured-Remote-Address"
"X-Captured-Remote-Address",
HttpHeaders.ACCESS_CONTROL_ALLOW_PRIVATE_NETWORK
);

}

0 comments on commit 05dc4b0

Please sign in to comment.