huan233usc opened a new pull request, #2692:
URL: https://github.com/apache/iceberg-rust/pull/2692
## Which issue does this PR close?
Related to #1690 (server-side scan planning), which relies on endpoint
negotiation. This PR lands the negotiation piece on its own so it can be
reviewed independently.
## What changes are included in this PR?
The REST spec lets a server advertise the routes it supports in the
`endpoints`
field of its `GET /v1/config` response, so clients can negotiate optional
capabilities instead of assuming every server implements every operation. The
Rust client currently ignores this field.
This PR:
- Adds a typed `Endpoint` (an HTTP method + path template), de/serialized
from
the `"{method} {path}"` wire form used in the `endpoints` array.
- Parses the `endpoints` field of the config response and stores the
advertised
set on the catalog's runtime context.
- Exposes `RestCatalog::supports_endpoint(&Endpoint)` to query it. Servers
that
omit the list are treated as advertising nothing, so a caller gating an
optional feature falls back to its default behaviour.
No existing behaviour changes — the new field defaults to empty when the
server
does not send it.
## Are these changes tested?
Yes:
- Unit tests for `Endpoint` serde (`"{method} {path}"` round-trip and
rejection
of malformed input).
- `mockito` catalog tests: one server that advertises `endpoints` (asserting
`supports_endpoint` is true/false for listed/unlisted routes), and one that
omits the list (asserting nothing is reported as supported).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]