Skip to content

Utilities for reading and writing cookies with the JDK's built-in HTTP server.

License

Notifications You must be signed in to change notification settings

bowbahdoe/jdk-httpserver-cookies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cookie reading and writing for the JDK Http Server

javadoc Tests

Utilities for reading and writing cookies with the JDK's built-in HTTP server.

Requires Java 21+

Dependency Information

Maven

<dependency>
    <groupId>dev.mccue</groupId>
    <artifactId>jdk-httpserver-cookies</artifactId>
    <version>2024.05.08</version>
</dependency>

Gradle

dependencies {
    implementation("dev.mccue:jdk-httpserver-cookies:2024.05.08")
}

Usage

Read Cookie Values

var cookies = Cookies.parse(exchange);
var name = cookies.get("name").orElse("Bob");

Make a Set-Cookie header

String header = SetCookieHeader.of("name", "value");
String otherHeader = SetCookieHeader.builder("name2", "value2")
        .sameSite(SameSite.STRICT)
        .secure(true)
        .build();

Full Example

import com.sun.net.httpserver.HttpServer;
import dev.mccue.jdk.httpserver.Body;
import dev.mccue.jdk.httpserver.HttpExchangeUtils;
import dev.mccue.jdk.httpserver.cookies.Cookies;
import dev.mccue.jdk.httpserver.cookies.SetCookieHeader;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.List;

void main() throws IOException {
    var server = HttpServer.create(new InetSocketAddress(8000), 0);
    server.createContext("/", exchange -> {
        var cookies = Cookies.parse(exchange);
        var name = cookies.get("name").orElse("Bob");

        exchange.getResponseHeaders().put("Set-Cookie", List.of(
                SetCookieHeader.of("name", "Joe")
        ));

        HttpExchangeUtils.sendResponse(exchange, 200, Body.of(
                "Hello " + name
        ));
    });
    
    server.start();
}

About

Utilities for reading and writing cookies with the JDK's built-in HTTP server.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages