Browse Source

[viz] Improve JSON response (#9721)

Fangdun Tsai 5 months ago
parent
commit
0ec720774d

+ 4 - 2
frameworks/Rust/viz/Cargo.toml

@@ -25,14 +25,14 @@ required-features = ["diesel", "diesel-async", "sailfish"]
 
 [dependencies]
 viz = "0.10"
-hyper = "1.5"
+hyper = "1.0"
 hyper-util = "0.1"
 http-body-util = "0.1"
 atoi = "2.0"
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1"
 mime = "0.3"
-rand = { version = "0.8", features = ["small_rng"] }
+rand = { version = "0.9", features = ["small_rng"] }
 thiserror = "2.0"
 futures-util = "0.3"
 
@@ -66,3 +66,5 @@ sailfish = { version = "0.9", optional = true }
 [profile.release]
 lto = true
 codegen-units = 1
+strip = true
+opt-level = 3

+ 8 - 8
frameworks/Rust/viz/src/db_pg.rs

@@ -1,7 +1,7 @@
 use std::{collections::HashMap, fmt::Write, io, sync::Arc};
 
 use futures_util::{stream::FuturesUnordered, StreamExt, TryFutureExt, TryStreamExt};
-use rand::{rngs::SmallRng, thread_rng, Rng, SeedableRng};
+use rand::{rng, rngs::SmallRng, Rng, SeedableRng};
 use tokio::pin;
 use tokio_postgres::{connect, types::ToSql, Client, NoTls, Statement};
 use viz::{Error, IntoResponse, Response, StatusCode};
@@ -105,19 +105,19 @@ impl PgConnection {
     }
 
     pub async fn get_world(&self) -> Result<World, PgError> {
-        let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
-        let random_id = (rng.gen::<u32>() % 10_000 + 1) as i32;
+        let mut rng = SmallRng::from_rng(&mut rng());
+        let random_id = (rng.random::<u32>() % 10_000 + 1) as i32;
 
         self.query_one_world(random_id).await
     }
 
     pub async fn get_worlds(&self, num: u16) -> Result<Vec<World>, PgError> {
-        let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
+        let mut rng = SmallRng::from_rng(&mut rng());
 
         let worlds = FuturesUnordered::new();
 
         for _ in 0..num {
-            let id = (rng.gen::<u32>() % 10_000 + 1) as i32;
+            let id = (rng.random::<u32>() % 10_000 + 1) as i32;
             worlds.push(self.query_one_world(id));
         }
 
@@ -125,13 +125,13 @@ impl PgConnection {
     }
 
     pub async fn update(&self, num: u16) -> Result<Vec<World>, PgError> {
-        let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
+        let mut rng = SmallRng::from_rng(&mut rng());
 
         let worlds = FuturesUnordered::new();
 
         for _ in 0..num {
-            let id = (rng.gen::<u32>() % 10_000 + 1) as i32;
-            let rid = (rng.gen::<u32>() % 10_000 + 1) as i32;
+            let id = (rng.random::<u32>() % 10_000 + 1) as i32;
+            let rid = (rng.random::<u32>() % 10_000 + 1) as i32;
 
             worlds.push(self.query_one_world(id).map_ok(move |mut world| {
                 world.randomnumber = rid;

+ 18 - 12
frameworks/Rust/viz/src/main.rs

@@ -2,7 +2,7 @@
 
 use serde::Serialize;
 use viz::{
-    header::{HeaderValue, SERVER},
+    header::{HeaderValue, CONTENT_TYPE, SERVER},
     Bytes, Error, Request, Response, ResponseExt, Result, Router,
 };
 
@@ -22,18 +22,24 @@ async fn plaintext(_: Request) -> Result<Response> {
 }
 
 async fn json(_: Request) -> Result<Response> {
-    let mut res = Response::with(
-        http_body_util::Full::new(Bytes::from(
-            serde_json::to_vec(&Message {
-                message: "Hello, World!",
-            })
-            .unwrap(),
-        )),
-        mime::APPLICATION_JSON.as_ref(),
+    let mut resp = Response::builder()
+        .body(
+            http_body_util::Full::new(Bytes::from(
+                serde_json::to_vec(&Message {
+                    message: "Hello, World!",
+                })
+                .unwrap(),
+            ))
+            .into(),
+        )
+        .unwrap();
+    let headers = resp.headers_mut();
+    headers.insert(SERVER, HeaderValue::from_static("Viz"));
+    headers.insert(
+        CONTENT_TYPE,
+        HeaderValue::from_static(mime::APPLICATION_JSON.as_ref()),
     );
-    res.headers_mut()
-        .insert(SERVER, HeaderValue::from_static("Viz"));
-    Ok(res)
+    Ok(resp)
 }
 
 #[tokio::main]

+ 1 - 1
frameworks/Rust/viz/viz-diesel.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.83
+FROM rust:1.85
 
 ADD ./ /viz
 WORKDIR /viz

+ 1 - 1
frameworks/Rust/viz/viz-pg.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.83
+FROM rust:1.85
 
 ADD ./ /viz
 WORKDIR /viz

+ 1 - 1
frameworks/Rust/viz/viz-sqlx.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.83
+FROM rust:1.85
 
 ADD ./ /viz
 WORKDIR /viz

+ 1 - 1
frameworks/Rust/viz/viz.dockerfile

@@ -1,4 +1,4 @@
-FROM rust:1.83
+FROM rust:1.85
 
 ADD ./ /viz
 WORKDIR /viz