From fd70f81c46b9a26bbbb1bc42dc9be1820f44a2f3 Mon Sep 17 00:00:00 2001 From: David Pedersen Date: Wed, 15 Jun 2022 22:42:49 +0200 Subject: [PATCH] More robust asset paths in examples (#1090) * More robust asset paths in examples * Update examples/low-level-rustls/src/main.rs Co-authored-by: Jonas Platte * format Co-authored-by: Jonas Platte --- examples/low-level-rustls/src/main.rs | 19 +++++++++++++++---- examples/sse/src/main.rs | 23 +++++++++++++---------- examples/tls-rustls/src/main.rs | 10 +++++++--- examples/websockets/src/main.rs | 6 ++++-- 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/examples/low-level-rustls/src/main.rs b/examples/low-level-rustls/src/main.rs index 1a077874..6f4a2259 100644 --- a/examples/low-level-rustls/src/main.rs +++ b/examples/low-level-rustls/src/main.rs @@ -11,7 +11,14 @@ use hyper::server::{ conn::{AddrIncoming, Http}, }; use rustls_pemfile::{certs, pkcs8_private_keys}; -use std::{fs::File, io::BufReader, net::SocketAddr, pin::Pin, sync::Arc}; +use std::{ + fs::File, + io::BufReader, + net::SocketAddr, + path::{Path, PathBuf}, + pin::Pin, + sync::Arc, +}; use tokio::net::TcpListener; use tokio_rustls::{ rustls::{Certificate, PrivateKey, ServerConfig}, @@ -30,8 +37,12 @@ async fn main() { .init(); let rustls_config = rustls_server_config( - "examples/tls-rustls/self_signed_certs/key.pem", - "examples/tls-rustls/self_signed_certs/cert.pem", + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("self_signed_certs") + .join("key.pem"), + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("self_signed_certs") + .join("cert.pem"), ); let acceptor = TlsAcceptor::from(rustls_config); @@ -65,7 +76,7 @@ async fn handler(ConnectInfo(addr): ConnectInfo) -> String { addr.to_string() } -fn rustls_server_config(key: &str, cert: &str) -> Arc { +fn rustls_server_config(key: impl AsRef, cert: impl AsRef) -> Arc { let mut key_reader = BufReader::new(File::open(key).unwrap()); let mut cert_reader = BufReader::new(File::open(cert).unwrap()); diff --git a/examples/sse/src/main.rs b/examples/sse/src/main.rs index d80f6685..4dbfcb46 100644 --- a/examples/sse/src/main.rs +++ b/examples/sse/src/main.rs @@ -12,7 +12,7 @@ use axum::{ Router, }; use futures::stream::{self, Stream}; -use std::{convert::Infallible, net::SocketAddr, time::Duration}; +use std::{convert::Infallible, net::SocketAddr, path::PathBuf, time::Duration}; use tokio_stream::StreamExt as _; use tower_http::{services::ServeDir, trace::TraceLayer}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; @@ -27,14 +27,17 @@ async fn main() { .with(tracing_subscriber::fmt::layer()) .init(); - let static_files_service = - get_service(ServeDir::new("examples/sse/assets").append_index_html_on_directories(true)) - .handle_error(|error: std::io::Error| async move { - ( - StatusCode::INTERNAL_SERVER_ERROR, - format!("Unhandled internal error: {}", error), - ) - }); + let assets_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("assets"); + + let static_files_service = get_service( + ServeDir::new(assets_dir).append_index_html_on_directories(true), + ) + .handle_error(|error: std::io::Error| async move { + ( + StatusCode::INTERNAL_SERVER_ERROR, + format!("Unhandled internal error: {}", error), + ) + }); // build our application with a route let app = Router::new() @@ -59,7 +62,7 @@ async fn sse_handler( // A `Stream` that repeats an event every second let stream = stream::repeat_with(|| Event::default().data("hi!")) .map(Ok) - .throttle(Duration::from_secs(10)); + .throttle(Duration::from_secs(1)); Sse::new(stream).keep_alive( axum::response::sse::KeepAlive::new() diff --git a/examples/tls-rustls/src/main.rs b/examples/tls-rustls/src/main.rs index 18f74cb3..b3110675 100644 --- a/examples/tls-rustls/src/main.rs +++ b/examples/tls-rustls/src/main.rs @@ -6,7 +6,7 @@ use axum::{routing::get, Router}; use axum_server::tls_rustls::RustlsConfig; -use std::net::SocketAddr; +use std::{net::SocketAddr, path::PathBuf}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; #[tokio::main] @@ -19,8 +19,12 @@ async fn main() { .init(); let config = RustlsConfig::from_pem_file( - "examples/tls-rustls/self_signed_certs/cert.pem", - "examples/tls-rustls/self_signed_certs/key.pem", + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("self_signed_certs") + .join("cert.pem"), + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("self_signed_certs") + .join("key.pem"), ) .await .unwrap(); diff --git a/examples/websockets/src/main.rs b/examples/websockets/src/main.rs index b221810c..bbdcaa08 100644 --- a/examples/websockets/src/main.rs +++ b/examples/websockets/src/main.rs @@ -16,7 +16,7 @@ use axum::{ routing::{get, get_service}, Router, }; -use std::net::SocketAddr; +use std::{net::SocketAddr, path::PathBuf}; use tower_http::{ services::ServeDir, trace::{DefaultMakeSpan, TraceLayer}, @@ -32,7 +32,9 @@ async fn main() { )) .with(tracing_subscriber::fmt::layer()) .init(); - let assets_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("assets"); + + let assets_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("assets"); + // build our application with some routes let app = Router::new() .fallback(