Skip to content

Add protocol HTTP application boundary. - #57

Open
samuel-williams-shopify wants to merge 7 commits into
mainfrom
v3-protocol-application
Open

Add protocol HTTP application boundary.#57
samuel-williams-shopify wants to merge 7 commits into
mainfrom
v3-protocol-application

Conversation

@samuel-williams-shopify

@samuel-williams-shopify samuel-williams-shopify commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add Utopia::Application as a protocol-facing boundary that wraps Protocol::HTTP::Request into Utopia::Request and normalizes responses.
  • Add lightweight Utopia::Request and Utopia::Response helpers.
  • Rewrite Utopia middleware around protocol HTTP requests and responses.
  • Parse query and form data with the released protocol-url and protocol-multipart parsers, including configurable endpoint limits and streamed uploads.
  • Stream static responses with Protocol::HTTP::Body::File and resolve byte ranges with Protocol::HTTP::Header::Range.
  • Use Protocol::HTTP::Status for standard status descriptions and remove the obsolete Rack-body interface from Utopia::HTTP::Status.

Follow-up

  • Add request-level parser dispatch for additional structured body formats where needed.
  • Define and validate the complete set of supported session cookie options.
  • Define duplicate and malformed request-cookie handling explicitly.

Tests

  • bundle exec sus
  • 292 tests, 702 assertions.
  • Decode coverage: 497/497 public definitions.

@samuel-williams-shopify samuel-williams-shopify changed the title Add protocol HTTP application boundary Add protocol HTTP application boundary. Jul 28, 2026
@samuel-williams-shopify
samuel-williams-shopify force-pushed the v3-protocol-application branch 15 times, most recently from 49aeefb to 1d4e4e5 Compare August 2, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant