Skip to content

Commit

Permalink
refactor(client): Simplify Headers Frame priority settings
Browse files Browse the repository at this point in the history
  • Loading branch information
0x676e67 committed Aug 16, 2024
1 parent 7f97d3b commit 81ec341
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 14 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ An fast asynchronous Rust `Http`/`WebSocket` Client with `TLS`/`JA3`/`JA4`/`HTTP
- `Https`/`WebSocket` via BoringSSL
- Preconfigured `TLS`/`HTTP2` settings
- `Chrome`/`Safari`/`Edge`/`OkHttp` Fingerprint
[Changelog](https://github.com/0x676e67/rquest/blob/main/CHANGELOG.md)
- [Changelog](https://github.com/0x676e67/rquest/blob/main/CHANGELOG.md)

Additional learning resources include:

Expand Down
4 changes: 2 additions & 2 deletions examples/pre_configured_tls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use rquest::{
tls::{Http2FrameSettings, TlsExtensionSettings, TlsSettings},
HttpVersionPref,
};
use rquest::{PseudoOrder, SettingsOrder, StreamDependency, StreamId};
use rquest::{PseudoOrder, SettingsOrder};
use std::error::Error;

#[tokio::main]
Expand All @@ -30,7 +30,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
.max_header_list_size(262144)
.header_table_size(65536)
.enable_push(None)
.headers_priority(StreamDependency::new(StreamId::zero(), 255, true))
.headers_priority((0, 255, true))
.headers_pseudo_order([
PseudoOrder::Method,
PseudoOrder::Scheme,
Expand Down
9 changes: 7 additions & 2 deletions src/client/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use http::uri::Scheme;
use http::{HeaderName, Uri};
use hyper::client::{HttpConnector, ResponseFuture as HyperResponseFuture};
#[cfg(feature = "boring-tls")]
use hyper::{PseudoOrder, SettingsOrder, StreamDependency};
use hyper::{PseudoOrder, SettingsOrder, StreamDependency, StreamId};
use pin_project_lite::pin_project;
use std::future::Future;
use std::pin::Pin;
Expand Down Expand Up @@ -297,7 +297,12 @@ impl ClientBuilder {
.http2_max_header_list_size(settings.http2.max_header_list_size)
.http2_header_table_size(settings.http2.header_table_size)
.http2_enable_push(settings.http2.enable_push)
.http2_headers_priority(settings.http2.headers_priority)
.http2_headers_priority(
settings
.http2
.headers_priority
.map(|(a, b, c)| StreamDependency::new(StreamId::from(a), b, c)),
)
.http2_headers_pseudo_order(settings.http2.headers_pseudo_order)
.http2_settings_order(settings.http2.settings_order)
}
Expand Down
6 changes: 3 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
//! tls::{Http2FrameSettings, TlsExtensionSettings, TlsSettings},
//! HttpVersionPref,
//! };
//! use rquest::{PseudoOrder, SettingsOrder, StreamDependency, StreamId};
//! use rquest::{PseudoOrder, SettingsOrder};
//! use std::error::Error;
//!
//! #[tokio::main]
Expand All @@ -130,7 +130,7 @@
//! .max_header_list_size(262144)
//! .header_table_size(65536)
//! .enable_push(None)
//! .headers_priority(StreamDependency::new(StreamId::zero(), 255, true))
//! .headers_priority((0, 255, true))
//! .headers_pseudo_order([
//! PseudoOrder::Method,
//! PseudoOrder::Scheme,
Expand Down Expand Up @@ -427,7 +427,7 @@ pub use self::client::{
pub use self::proxy::{NoProxy, Proxy};

#[cfg(feature = "boring-tls")]
pub use hyper::{PseudoOrder, SettingsOrder, StreamDependency, StreamId};
pub use hyper::{PseudoOrder, SettingsOrder};

mod client;
mod connect;
Expand Down
10 changes: 4 additions & 6 deletions src/tls/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
use super::{impersonate::Impersonate, Version};
use crate::client::client::HttpVersionPref;
use boring::ssl::SslConnectorBuilder;
use hyper::{PseudoOrder, SettingsOrder, StreamDependency, StreamId};
use hyper::{PseudoOrder, SettingsOrder};
use std::path::PathBuf;
use typed_builder::TypedBuilder;
use Impersonate::*;
Expand Down Expand Up @@ -101,7 +101,7 @@ pub struct Http2FrameSettings {

/// The priority of the headers.
#[builder(default, setter(strip_option))]
pub(crate) headers_priority: Option<StreamDependency>,
pub(crate) headers_priority: Option<(u32, u8, bool)>,

/// The pseudo header order.
#[builder(default, setter(strip_option))]
Expand All @@ -118,7 +118,7 @@ pub struct ImpersonateSettings {
pub(crate) extension: TlsExtensionSettings,

/// Headers frame priority.
pub(crate) headers_priority: Option<StreamDependency>,
pub(crate) headers_priority: Option<(u32, u8, bool)>,

/// Headers frame pseudo order.
pub(crate) headers_pseudo_order: Option<[PseudoOrder; 4]>,
Expand Down Expand Up @@ -197,9 +197,7 @@ impl From<Impersonate> for ImpersonateSettings {
_ => None,
};

set.map(|(weight, exclusive)| {
StreamDependency::new(StreamId::zero(), weight, exclusive)
})
set.map(|(stream_id, exclusive)| (0, stream_id, exclusive))
};

// The headers frame pseudo order.
Expand Down

0 comments on commit 81ec341

Please sign in to comment.