-
Notifications
You must be signed in to change notification settings - Fork 53
[bitreq] Bitreq client builder #502
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
46 commits
Select commit
Hold shift + click to select a range
13e0cfd
update test_https to use local http server
APonce911 e879020
add test_https_with_client
APonce911 182e5fb
WIP: add ClientBuilder for configuring Client instances
APonce911 92ca975
WIP: pass ClientConfig struct to tls layer
APonce911 5af7539
WIP: include feature on ClientConfig import
APonce911 b6650ba
WIP append custom cert
APonce911 bf1735d
WIP: update tests
APonce911 da22cf9
rename TlsConfig cert attribute
APonce911 a01979a
remove comment
APonce911 d89f559
style adjustment
APonce911 04a1c3a
add example
APonce911 7011045
Code review adjustment: Use AsyncConnection::new instead of new_with_…
APonce911 deb5397
WIP: include certificates on TlsConfig struct
APonce911 5a97e80
style adjustment
APonce911 a61b1ec
make rustls_stream mod public temporarily
APonce911 8000c6c
WIP: create Certificates wrapper on rustls_stream mod
APonce911 9b4a839
WIP use custom error when appending a certificate
APonce911 8d7ff6c
WIP remove moved code
APonce911 0538906
WIP remove unused field from TlsConfig
APonce911 5fc031b
add Certificates module
APonce911 9c11211
adjust privacy on structs
APonce911 22c2b2f
add new docs
APonce911 97b5d56
update doc and example
APonce911 4a08c7d
remove comment
APonce911 2cf40aa
Adjust custom_cert example feature
APonce911 937e3ba
fix: correct feature flag for CustomClientConfig import
APonce911 e682f92
List adjustments
APonce911 fd47ea1
fix Cargo fmt adjustments
APonce911 728ceb4
Rename `certificate` to `cert_der`
APonce911 c9d941d
take ownership of cert_der on append_certificate
APonce911 0f67697
rename parameter cert_der on Doc for with_root_certificate
APonce911 65e7c41
Reuse existing TLSConfig if possible - allows for multiple certificat…
APonce911 ecf4d12
Update TlsConfig::new and ClientBuilder::with_root_certificate to ret…
APonce911 c11c920
Update custom_cert example with new return from with_root_certificate…
APonce911 cc84c5c
Fix test flags
APonce911 abf89cf
warnings fix
APonce911 e8f47b6
fix: unresolved import - Refactor client mod to allow cleaner conditi…
APonce911 97124a9
Gate tls modules declarations
APonce911 8382cc1
Fix doctest
APonce911 05f8e5d
remove connector caching with client_config - always create new conne…
APonce911 2ef687e
Improve code organization: Move Client and ClientImpl declarations be…
APonce911 bfe2763
wrap ClientConfig with Arc smart pointer to reduce memory usage
APonce911 b2fe156
Merge branch 'master' into bitreq-client-builder
APonce911 f3851fb
use Arc clone instead of option clone
APonce911 6ac03d7
Wrap Certificates with arc and inject from Client - load root_certs o…
APonce911 bf3a952
bump default Client default connection pool(capacity) to 10
APonce911 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| //! This example demonstrates the client builder with custom DER certificate. | ||
| //! to run: cargo run --example custom_cert --features async-https-rustls | ||
|
|
||
| #[cfg(not(feature = "async-https-rustls"))] | ||
| fn main() { | ||
| println!("This example requires the 'async-https-rustls' feature."); | ||
| } | ||
|
|
||
| #[cfg(feature = "async-https-rustls")] | ||
| fn main() -> Result<(), bitreq::Error> { | ||
| let runtime = tokio::runtime::Builder::new_current_thread() | ||
| .enable_io() | ||
| .build() | ||
| .expect("failed to build Tokio runtime"); | ||
|
|
||
| runtime.block_on(request_with_client()) | ||
| } | ||
|
|
||
| #[cfg(feature = "async-https-rustls")] | ||
| async fn request_with_client() -> Result<(), bitreq::Error> { | ||
| let url = "https://example.com"; | ||
| let cert_der = include_bytes!("../tests/test_cert.der"); | ||
| let client = bitreq::Client::builder().with_root_certificate(cert_der.as_slice())?.build(); | ||
| // OR | ||
| // let cert_der: &[u8] = include_bytes!("../tests/test_cert.der"); | ||
| // let client = bitreq::Client::builder().with_root_certificate(cert_der)?.build(); | ||
| // OR | ||
| // let cert_vec: Vec<u8> = include_bytes!("../tests/test_cert.der").to_vec(); | ||
| // let client = bitreq::Client::builder().with_root_certificate(cert_vec.as_slice())?.build(); | ||
|
|
||
| let response = client.send_async(bitreq::get(url)).await.unwrap(); | ||
|
|
||
| println!("Status: {}", response.status_code); | ||
| println!("Body: {}", response.as_str()?); | ||
|
|
||
| Ok(()) | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Huh? We need to implement custom root cert support for native-tls as well, not just blindly ignore what the downstream code gives us.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see where we're blindly ignoring. Can you please point out? Will gladly adjust it.
Tls currrently depends on Async, rustls and tokio-rustls. Since many functions are depending on ClientConfig we have to have it defined even when some of those features are off. Otherwise Rust won't compile due to missing types.
about native-tls I've answed here