Changes to support axum 0.8 (#3820)
* changes to support axum 0.8 * fixing ci/cd failures. I would like advice on the change to cli/server * putting back in something I took out because I am retarded * update server function revision * remove playwright test results * clippy --------- Co-authored-by: Evan Almloff <evanalmloff@gmail.com> Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
14 files changed
+297
-315
No files matched your search
@@ -73,7 +73,7 @@ pub(crate) fn add_proxy(mut router: Router, proxy: &WebProxyConfig) -> Result<Ro
|
||||
|
||||
// api/*path
|
||||
router = router.route(
|
||||
&format!("/{}/*path", trimmed_path.trim_end_matches('/')),
|
||||
&format!("/{}/{{*path}}", trimmed_path.trim_end_matches('/')),
|
||||
method_router.clone(),
|
||||
);
|
||||
|
||||
@@ -190,7 +190,7 @@ mod test {
|
||||
async fn setup_servers(mut config: WebProxyConfig) -> String {
|
||||
let backend_router =
|
||||
Router::new().route(
|
||||
"/*path",
|
||||
"/{*path}",
|
||||
any(|request: axum::extract::Request| async move {
|
||||
format!("backend: {}", request.uri())
|
||||
}),
|
||||
|
||||
@@ -211,8 +211,8 @@ impl WebServer {
|
||||
}
|
||||
|
||||
self.send_shutdown().await;
|
||||
for socket in self.hot_reload_sockets.drain(..) {
|
||||
_ = socket.close().await;
|
||||
for mut socket in self.hot_reload_sockets.drain(..) {
|
||||
_ = socket.send(Message::Close(None)).await;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +302,11 @@ impl WebServer {
|
||||
let mut i = 0;
|
||||
while i < self.hot_reload_sockets.len() {
|
||||
let socket = &mut self.hot_reload_sockets[i];
|
||||
if socket.send(Message::Text(msg.clone())).await.is_err() {
|
||||
if socket
|
||||
.send(Message::Text(msg.clone().into()))
|
||||
.await
|
||||
.is_err()
|
||||
{
|
||||
self.hot_reload_sockets.remove(i);
|
||||
} else {
|
||||
i += 1;
|
||||
@@ -343,7 +347,7 @@ impl WebServer {
|
||||
async fn send_devserver_message(&mut self, msg: DevserverMsg) {
|
||||
for socket in self.hot_reload_sockets.iter_mut() {
|
||||
_ = socket
|
||||
.send(Message::Text(serde_json::to_string(&msg).unwrap()))
|
||||
.send(Message::Text(serde_json::to_string(&msg).unwrap().into()))
|
||||
.await;
|
||||
}
|
||||
}
|
||||
@@ -393,7 +397,11 @@ async fn devserver_mainloop(
|
||||
|
||||
// If we're not using rustls, just use regular axum
|
||||
if https_cfg.enabled != Some(true) {
|
||||
axum::serve(listener.try_into().unwrap(), router.into_make_service()).await?;
|
||||
axum::serve(
|
||||
tokio::net::TcpListener::from_std(listener).unwrap(),
|
||||
router.into_make_service(),
|
||||
)
|
||||
.await?;
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
@@ -434,7 +442,7 @@ fn build_devserver_router(
|
||||
// For fullstack, liveview, and server, forward all requests to the inner server
|
||||
let address = fullstack_address.unwrap();
|
||||
tracing::debug!("Proxying requests to fullstack server at {address}");
|
||||
router = router.nest_service("/",super::proxy::proxy_to(
|
||||
router = router.fallback_service(super::proxy::proxy_to(
|
||||
format!("http://{address}").parse().unwrap(),
|
||||
true,
|
||||
|error| {
|
||||
@@ -461,8 +469,11 @@ fn build_devserver_router(
|
||||
.unwrap_or_default()
|
||||
.trim_matches('/')
|
||||
);
|
||||
|
||||
router = router.nest_service(&base_path, build_serve_dir(args, krate));
|
||||
if base_path == "/" {
|
||||
router = router.fallback_service(build_serve_dir(args, krate));
|
||||
} else {
|
||||
router = router.nest_service(&base_path, build_serve_dir(args, krate));
|
||||
}
|
||||
}
|
||||
|
||||
// Setup middleware to intercept html requests if the build status is "Building"
|
||||
@@ -755,6 +766,6 @@ impl SharedStatus {
|
||||
|
||||
async fn send_to(&self, socket: &mut WebSocket) -> Result<(), axum::Error> {
|
||||
let msg = serde_json::to_string(&self.get()).unwrap();
|
||||
socket.send(Message::Text(msg)).await
|
||||
socket.send(Message::Text(msg.into())).await
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user