add simple.rs example
This commit is contained in:
parent
dbbcf322c3
commit
4f52475f2c
2 changed files with 58 additions and 0 deletions
|
@ -20,6 +20,10 @@ tokio-rustls = { version = "0.26.0", default-features = false, features = ["ring
|
|||
url = "2.5.2"
|
||||
webpki-roots = "0.26.3"
|
||||
|
||||
[[example]]
|
||||
name = "simple"
|
||||
path = "examples/simple.rs"
|
||||
|
||||
[[example]]
|
||||
name = "main"
|
||||
path = "examples/main.rs"
|
||||
|
|
54
examples/simple.rs
Normal file
54
examples/simple.rs
Normal file
|
@ -0,0 +1,54 @@
|
|||
use tokio_gemini::{
|
||||
certs::{
|
||||
fingerprint::{generate_fingerprint, Algorithm},
|
||||
verifier::SelfsignedCertVerifier,
|
||||
},
|
||||
Client, LibError,
|
||||
};
|
||||
|
||||
// Much simpler than examples/main.rs
|
||||
// Hardcoded URL, no cert check, always write to stdout
|
||||
//
|
||||
// cargo add tokio-gemini
|
||||
// cargo add tokio -F macros,rt-multi-thread
|
||||
//
|
||||
|
||||
const URL: &str = "gemini://geminiprotocol.net/docs/protocol-specification.gmi";
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), LibError> {
|
||||
let client = Client::builder()
|
||||
.with_selfsigned_cert_verifier(CertVerifier)
|
||||
.build();
|
||||
|
||||
match client.request(URL).await?.ensure_ok() {
|
||||
Ok(mut resp) => {
|
||||
println!("{}", resp.text().await?);
|
||||
}
|
||||
Err(resp) => {
|
||||
println!("{} {}", resp.status().num(), resp.message());
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
struct CertVerifier;
|
||||
|
||||
impl SelfsignedCertVerifier for CertVerifier {
|
||||
fn verify(
|
||||
&self,
|
||||
cert: &tokio_gemini::certs::verifier::CertificateDer,
|
||||
host: &str,
|
||||
_now: tokio_gemini::certs::verifier::UnixTime,
|
||||
) -> Result<bool, tokio_rustls::rustls::Error> {
|
||||
// For real verification example with known_hosts file
|
||||
// see examples/main.rs
|
||||
eprintln!(
|
||||
"Host = {}\nFingerprint = {}",
|
||||
host,
|
||||
generate_fingerprint(cert, Algorithm::Sha512),
|
||||
);
|
||||
Ok(true)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue