diff --git a/crates/rttp-client/src/lib.rs b/crates/rttp-client/src/lib.rs index e89deab2..af5cd003 100644 --- a/crates/rttp-client/src/lib.rs +++ b/crates/rttp-client/src/lib.rs @@ -150,6 +150,7 @@ pub use rttp_protocol::lock_token::{LockToken, LockTokenParseError}; pub use rttp_protocol::negotiate::{Negotiate, NegotiateDirective, NegotiateParseError}; pub use rttp_protocol::overwrite::{Overwrite, OverwriteParseError}; pub use rttp_protocol::referer::{Referer, RefererParseError}; +pub use rttp_protocol::save_data::{SaveData, SaveDataParseError}; pub use rttp_protocol::schedule_tag::{ScheduleTag, ScheduleTagParseError}; pub use rttp_protocol::sec_gpc::{SecGpc, SecGpcParseError}; pub use rttp_protocol::sec_required_document_policy::{ diff --git a/crates/rttp-client/tests/metadata_facade.rs b/crates/rttp-client/tests/metadata_facade.rs index b94628ca..91a506ba 100644 --- a/crates/rttp-client/tests/metadata_facade.rs +++ b/crates/rttp-client/tests/metadata_facade.rs @@ -49,15 +49,16 @@ use rttp_client::{ DestinationParseError, Dnt, DntParseError, Expect, ExpectParseError, From, FromParseError, HttpClient, If, IfCondition, IfList, IfParseError, IfPredicate, IfResourceTag, IfScheduleTagMatch, IfScheduleTagMatchParseError, IfStateToken, Negotiate, NegotiateDirective, - NegotiateParseError, Overwrite, OverwriteParseError, SecFetchDest, SecFetchMode, SecFetchSite, - SecFetchUser, SecGpc, SecGpcParseError, SecPurpose, SecRequiredDocumentPolicy, - SecRequiredDocumentPolicyDirective, SecRequiredDocumentPolicyParseError, - SecRequiredDocumentPolicyValue, SecWebSocketKey, SecWebSocketKeyParseError, Tcn, TcnDirective, - TcnParseError, Timeout, TimeoutParseError, TimeoutType, TraceParent, TraceParentParseError, - TraceState, TraceStateMember, TraceStateParseError, UpgradeInsecureRequests, - UpgradeInsecureRequestsParseError, UserAgent, UserAgentMember, UserAgentParseError, - Via as ClientVia, ViaParseError as ClientViaParseError, XForwardedFor, XForwardedForParseError, - XForwardedHost, XForwardedHostParseError, XForwardedProto, XForwardedProtoParseError, + NegotiateParseError, Overwrite, OverwriteParseError, SaveData, SaveDataParseError, SecFetchDest, + SecFetchMode, SecFetchSite, SecFetchUser, SecGpc, SecGpcParseError, SecPurpose, + SecRequiredDocumentPolicy, SecRequiredDocumentPolicyDirective, + SecRequiredDocumentPolicyParseError, SecRequiredDocumentPolicyValue, SecWebSocketKey, + SecWebSocketKeyParseError, Tcn, TcnDirective, TcnParseError, Timeout, TimeoutParseError, + TimeoutType, TraceParent, TraceParentParseError, TraceState, TraceStateMember, + TraceStateParseError, UpgradeInsecureRequests, UpgradeInsecureRequestsParseError, UserAgent, + UserAgentMember, UserAgentParseError, Via as ClientVia, ViaParseError as ClientViaParseError, + XForwardedFor, XForwardedForParseError, XForwardedHost, XForwardedHostParseError, + XForwardedProto, XForwardedProtoParseError, }; use rttp_test_support as support; @@ -400,6 +401,10 @@ fn response_facade_exports_representative_bounded_metadata_types() { let fetch_user = SecFetchUser::parse("?1").expect("Sec-Fetch-User should parse"); let dnt = Dnt::parse("1").expect("DNT should parse"); let _: DntParseError = Dnt::parse("on").expect_err("invalid DNT should be rejected"); + let save_data = SaveData::parse("on").expect("Save-Data should parse"); + assert_eq!("on", save_data.header_value()); + let _: SaveDataParseError = + SaveData::parse("?1").expect_err("structured boolean Save-Data should be rejected"); let sec_gpc = SecGpc::parse("1").expect("Sec-GPC should parse"); let _: SecGpcParseError = SecGpc::parse("0").expect_err("invalid Sec-GPC should be rejected"); let sec_required_document_policy = diff --git a/crates/rttp/src/lib.rs b/crates/rttp/src/lib.rs index ed983881..20428c48 100644 --- a/crates/rttp/src/lib.rs +++ b/crates/rttp/src/lib.rs @@ -61,8 +61,8 @@ pub use rttp_client::{ IfCondition, IfList, IfParseError, IfPredicate, IfResourceTag, IfScheduleTagMatch, IfScheduleTagMatchParseError, IfStateToken, LockToken, LockTokenParseError, Negotiate, NegotiateDirective, NegotiateParseError, Overwrite, OverwriteParseError, Referer, - RefererParseError, SecFetchDest, SecFetchMode, SecFetchSite, SecFetchUser, SecPurpose, - SecRequiredDocumentPolicy, SecRequiredDocumentPolicyDirective, + RefererParseError, SaveData, SaveDataParseError, SecFetchDest, SecFetchMode, SecFetchSite, + SecFetchUser, SecPurpose, SecRequiredDocumentPolicy, SecRequiredDocumentPolicyDirective, SecRequiredDocumentPolicyParseError, SecRequiredDocumentPolicyValue, SecWebSocketKey, SecWebSocketKeyParseError, Timeout, TimeoutParseError, TimeoutType, TraceParent, TraceParentParseError, TraceState, TraceStateMember, TraceStateParseError, UserAgent, diff --git a/crates/rttp/tests/metadata_facade.rs b/crates/rttp/tests/metadata_facade.rs index dfb27ac8..94f31a27 100644 --- a/crates/rttp/tests/metadata_facade.rs +++ b/crates/rttp/tests/metadata_facade.rs @@ -527,6 +527,10 @@ fn compatibility_facade_exports_client_metadata_types() { let dnt: rttp::Dnt = rttp_client::Dnt::parse("1").expect("DNT should parse"); let _: rttp::DntParseError = rttp_client::Dnt::parse("on").expect_err("invalid DNT should be rejected"); + let save_data: rttp::SaveData = rttp::SaveData::parse("on").expect("Save-Data should parse"); + assert_eq!("on", save_data.header_value()); + let _: rttp::SaveDataParseError = + rttp::SaveData::parse("?1").expect_err("structured boolean Save-Data should fail"); let sec_required_document_policy: rttp::SecRequiredDocumentPolicy = rttp_client::SecRequiredDocumentPolicy::parse( "oversized-images=2.0, unsized-media=?0, *;report-to=default",