feat(api): retrieve stored export authorization requests by extra-segment GET - #457
Conversation
…ment GET
GAP-003A unique slice: GET /v1/exports/{export_id}/request returns the
accepted naruon authorization request on AnalysisRunLiveService so operators
do not replay POST. NaruonLiveService stays POST-only. LineageWeave refused.
Metric-free. ADR 0089. Stacked on #411. Does not re-open cancel lineages.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| require_nonempty(export_id)?; | ||
| if export_id.contains('/') || export_id.contains('\0') { | ||
| return Err(ApiError::InvalidWirePayload); | ||
| } |
There was a problem hiding this comment.
🟡 Control-character IDs create unusable requests
When an export ID contains a non-NUL control character, naruon_export_stored_request_exchange accepts and encodes it. The paired server rejects that URL.
| require_nonempty(export_id)?; | |
| if export_id.contains('/') || export_id.contains('\0') { | |
| return Err(ApiError::InvalidWirePayload); | |
| } | |
| require_nonempty(export_id)?; | |
| if export_id.contains('/') || export_id.chars().any(char::is_control) { | |
| return Err(ApiError::InvalidWirePayload); | |
| } |
Was this helpful? React with 👍 or 👎 to provide feedback.
| /// Whether `path` is the stored-request extra-segment resource. | ||
| #[must_use] | ||
| pub fn is_export_stored_request_path(path: &str) -> bool { | ||
| export_stored_request_path_id(path).is_ok() | ||
| } |
Folded into #459
Closed as
superseded_by_fold, not discarded. #459's head contains this PR as its direct ancestor and has been retargeted to this PR's former base, so the stored-request GET implementation/tests and this review history remain intact while queue WIP is reduced.Canonical landing vehicle: #459 (
feat(api): consolidate export stored-request GET and CLI).Do not reopen unless the folded head demonstrably loses unique behavior or evidence.