Skip to content

Port HTTP transport from ponylang/http to ponylang/courier#91

Merged
SeanTAllen merged 1 commit intomainfrom
port-to-courier
Mar 2, 2026
Merged

Port HTTP transport from ponylang/http to ponylang/courier#91
SeanTAllen merged 1 commit intomainfrom
port-to-courier

Conversation

@SeanTAllen
Copy link
Copy Markdown
Member

Replace the HTTP handler factory pattern (25 types: 8 requesters + 8 handler factories + 8 handlers + RequestFactory) with courier's actor-based connection model (6 types: 4 request actors + 1 SSL factory + 1 shared interface).

Each API call creates a short-lived actor owning an HTTPClientConnection. Consolidation by response pattern: POST+PATCH share JsonRequester (differ by method/expected status), DELETE+PUT share NoContentRequester, paginated+search share LinkedJsonRequester via a LinkedResultReceiver interface.

Breaking change: Credentials.auth changes from net.TCPConnectAuth to lori.TCPConnectAuth. Authorization header moves from legacy token format to Bearer format (GitHub accepts both).

Public API is otherwise preserved — all operation primitives, model classes, OO convenience methods, and pagination work the same way.

@SeanTAllen SeanTAllen added the changelog - changed Automatically add "Changed" CHANGELOG entry on merge label Mar 2, 2026
@ponylang-main ponylang-main added the discuss during sync Should be discussed during an upcoming sync label Mar 2, 2026
Replace the HTTP handler factory pattern (25 types: 8 requesters +
8 handler factories + 8 handlers + RequestFactory) with courier's
actor-based connection model (6 types: 4 request actors + 1 SSL
factory + 1 shared interface).

Each API call creates a short-lived actor owning an
HTTPClientConnection. Consolidation by response pattern: POST+PATCH
share JsonRequester (differ by method/expected status), DELETE+PUT
share NoContentRequester, paginated+search share LinkedJsonRequester
via a LinkedResultReceiver interface. All actors close their
connection in on_response_complete so the runtime exits promptly.

SSLContextFactory tries the system CA store for verified HTTPS; when
unavailable it falls back to unverified SSL, matching the old
HTTPClient behavior.

Breaking change: Credentials.auth changes from net.TCPConnectAuth
to lori.TCPConnectAuth. Authorization header moves from legacy
"token" format to "Bearer" format (GitHub accepts both).

Public API is otherwise preserved — all operation primitives, model
classes, OO convenience methods, and pagination work the same way.
@SeanTAllen SeanTAllen merged commit c615cfa into main Mar 2, 2026
3 checks passed
@SeanTAllen SeanTAllen deleted the port-to-courier branch March 2, 2026 15:43
@ponylang-main ponylang-main removed the discuss during sync Should be discussed during an upcoming sync label Mar 2, 2026
github-actions bot pushed a commit that referenced this pull request Mar 2, 2026
github-actions bot pushed a commit that referenced this pull request Mar 2, 2026
github-actions bot pushed a commit that referenced this pull request Mar 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog - changed Automatically add "Changed" CHANGELOG entry on merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants