WIP: get_progress
This commit is contained in:
parent
c8be7cdeee
commit
5664d933a5
1 changed files with 35 additions and 6 deletions
41
src/main.rs
41
src/main.rs
|
@ -6,6 +6,9 @@ use axum::{
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use redis::Commands;
|
use redis::Commands;
|
||||||
|
use serde::Serialize;
|
||||||
|
use serde_json::json;
|
||||||
|
use serde_json::Value;
|
||||||
|
|
||||||
use std::time::{SystemTime, UNIX_EPOCH};
|
use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
|
@ -16,7 +19,7 @@ pub struct User {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
pub struct Progress {
|
pub struct UpdateProgress {
|
||||||
document: String,
|
document: String,
|
||||||
progress: String,
|
progress: String,
|
||||||
percentage: f32,
|
percentage: f32,
|
||||||
|
@ -24,6 +27,16 @@ pub struct Progress {
|
||||||
device_id: String,
|
device_id: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Serialize)]
|
||||||
|
pub struct GetProgress {
|
||||||
|
document: String,
|
||||||
|
progress: String,
|
||||||
|
percentage: f32,
|
||||||
|
device: String,
|
||||||
|
device_id: String,
|
||||||
|
timestamp: u64,
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
// build our application with a single route
|
// build our application with a single route
|
||||||
|
@ -99,7 +112,7 @@ async fn auth_user(headers: HeaderMap) -> StatusCode {
|
||||||
StatusCode::OK
|
StatusCode::OK
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_progress(headers: HeaderMap, Json(payload): Json<Progress>) -> StatusCode {
|
async fn update_progress(headers: HeaderMap, Json(payload): Json<UpdateProgress>) -> StatusCode {
|
||||||
let username = headers["x-auth-user"].to_str().unwrap_or("");
|
let username = headers["x-auth-user"].to_str().unwrap_or("");
|
||||||
let password = headers["x-auth-key"].to_str().unwrap_or("");
|
let password = headers["x-auth-key"].to_str().unwrap_or("");
|
||||||
|
|
||||||
|
@ -133,12 +146,15 @@ async fn update_progress(headers: HeaderMap, Json(payload): Json<Progress>) -> S
|
||||||
StatusCode::OK
|
StatusCode::OK
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_progress(headers: HeaderMap, Path(document): Path<String>) -> StatusCode {
|
async fn get_progress(
|
||||||
|
headers: HeaderMap,
|
||||||
|
Path(document): Path<String>,
|
||||||
|
) -> (StatusCode, Json<Value>) {
|
||||||
let username = headers["x-auth-user"].to_str().unwrap_or("");
|
let username = headers["x-auth-user"].to_str().unwrap_or("");
|
||||||
let password = headers["x-auth-key"].to_str().unwrap_or("");
|
let password = headers["x-auth-key"].to_str().unwrap_or("");
|
||||||
|
|
||||||
if authorize(username, password) == false {
|
if authorize(username, password) == false {
|
||||||
return StatusCode::UNAUTHORIZED;
|
return (StatusCode::UNAUTHORIZED, Json(json!("")));
|
||||||
}
|
}
|
||||||
|
|
||||||
let client = redis::Client::open("redis://127.0.0.1/").unwrap();
|
let client = redis::Client::open("redis://127.0.0.1/").unwrap();
|
||||||
|
@ -146,11 +162,24 @@ async fn get_progress(headers: HeaderMap, Path(document): Path<String>) -> Statu
|
||||||
|
|
||||||
let doc_key = format!("user:{username}:document:{document}");
|
let doc_key = format!("user:{username}:document:{document}");
|
||||||
|
|
||||||
let values : Vec<String> = con.hget(doc_key, &["progress", "percentage"]).unwrap();
|
let values: Vec<String> = con
|
||||||
|
.hget(
|
||||||
|
doc_key,
|
||||||
|
&["percentage", "progress", "device", "device_id", "timestamp"],
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
println!("{values:?}");
|
println!("{values:?}");
|
||||||
|
let res = GetProgress {
|
||||||
|
percentage: values[0].parse().unwrap(),
|
||||||
|
progress: values[1].clone(),
|
||||||
|
device: values[2].clone(),
|
||||||
|
device_id: values[3].clone(),
|
||||||
|
timestamp: values[4].parse().unwrap(),
|
||||||
|
document,
|
||||||
|
};
|
||||||
|
|
||||||
StatusCode::OK
|
(StatusCode::OK, Json(json!(res)))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn healthcheck() -> (StatusCode, String) {
|
async fn healthcheck() -> (StatusCode, String) {
|
||||||
|
|
Loading…
Reference in a new issue