initial frontend
This commit is contained in:
@@ -19,6 +19,7 @@ tokio-util = "0.7.12"
|
||||
serde = { version = "1.0.210", features = ["derive"] }
|
||||
serde_json = "1.0.132"
|
||||
derive_more = { version = "1.0.0", features = ["full"] }
|
||||
hex = "0.4.3"
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build = "0.12.3"
|
||||
|
||||
@@ -15,7 +15,7 @@ message TelemetryValue {
|
||||
}
|
||||
|
||||
message UUID {
|
||||
bytes value = 1;
|
||||
string value = 1;
|
||||
}
|
||||
|
||||
// UTC since UNIX
|
||||
|
||||
@@ -102,6 +102,7 @@ pub fn setup(token: CancellationToken, telemetry_definitions: Arc<Mutex<HashMap<
|
||||
cancellation_token: token.clone()
|
||||
};
|
||||
|
||||
trace!("Starting gRPC Server");
|
||||
let result = Server::builder()
|
||||
.add_service(TelemetryServiceServer::new(tlm_service))
|
||||
// .serve(addr)
|
||||
|
||||
@@ -5,6 +5,7 @@ use actix_web::{error, get, web, App, HttpResponse, HttpServer, Responder};
|
||||
use derive_more::{Display, Error};
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
use log::trace;
|
||||
use tokio::sync::Mutex;
|
||||
|
||||
#[derive(Debug, Display, Error)]
|
||||
@@ -29,8 +30,10 @@ impl error::ResponseError for UserError {
|
||||
#[get("/tlm/{name:[\\w\\d/_-]+}")]
|
||||
async fn get_tlm_definition(data: web::Data<Arc<Mutex<HashMap<String, TelemetryDefinition>>>>, name: web::Path<String>) -> Result<impl Responder, UserError> {
|
||||
let string = name.to_string();
|
||||
trace!("get_tlm_definition {}", string);
|
||||
let data = data.lock().await;
|
||||
let tlm_def = data.get(&string);
|
||||
trace!("tlm_def {:?}", tlm_def.clone());
|
||||
|
||||
if let Some(tlm_def) = tlm_def {
|
||||
Ok(web::Json(tlm_def.clone()))
|
||||
@@ -39,13 +42,19 @@ async fn get_tlm_definition(data: web::Data<Arc<Mutex<HashMap<String, TelemetryD
|
||||
}
|
||||
}
|
||||
|
||||
fn setup_api(cfg: &mut web::ServiceConfig) {
|
||||
cfg
|
||||
.service(get_tlm_definition);
|
||||
}
|
||||
|
||||
pub async fn setup(telemetry_definitions: Arc<Mutex<HashMap<String, TelemetryDefinition>>>) -> Result<(), Box<dyn Error>> {
|
||||
let data = web::Data::new(telemetry_definitions);
|
||||
|
||||
trace!("Starting HTTP Server");
|
||||
HttpServer::new(move || {
|
||||
App::new()
|
||||
.app_data(data.clone())
|
||||
.service(get_tlm_definition)
|
||||
.service(web::scope("/api").configure(setup_api))
|
||||
})
|
||||
.bind("localhost:8080")?
|
||||
.run().await?;
|
||||
|
||||
@@ -43,7 +43,7 @@ fn tlm_data_type_deserialzier<'de, D>(deserializer: D) -> Result<TelemetryDataTy
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
struct TelemetryDefinition {
|
||||
uuid: Vec<u8>,
|
||||
uuid: String,
|
||||
name: String,
|
||||
#[serde(serialize_with = "tlm_data_type_serialzier")]
|
||||
#[serde(deserialize_with = "tlm_data_type_deserialzier")]
|
||||
|
||||
@@ -20,7 +20,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
message
|
||||
))
|
||||
})
|
||||
.level(log_level)
|
||||
.level(log::LevelFilter::Warn)
|
||||
.level_for("server", log_level)
|
||||
.chain(std::io::stdout());
|
||||
if let Ok(log_file) = log_file {
|
||||
log_config = log_config.chain(fern::log_file(log_file)?)
|
||||
|
||||
@@ -3,10 +3,10 @@ use crate::core::{Uuid};
|
||||
|
||||
impl Uuid {
|
||||
pub fn random() -> Self {
|
||||
let mut uuid = vec![0u8; 16];
|
||||
let mut uuid =[0u8; 16];
|
||||
rand::thread_rng().fill_bytes(&mut uuid);
|
||||
Self {
|
||||
value: uuid,
|
||||
value: hex::encode(uuid),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user