From 5e36269671930f1b8cfbf327ff0a87935541a76c Mon Sep 17 00:00:00 2001 From: JesusPerez Date: Tue, 12 Oct 2021 11:13:51 +0100 Subject: [PATCH] chore: home handle via json request --- src/handlers/h_home.rs | 149 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 src/handlers/h_home.rs diff --git a/src/handlers/h_home.rs b/src/handlers/h_home.rs new file mode 100644 index 0000000..9f24307 --- /dev/null +++ b/src/handlers/h_home.rs @@ -0,0 +1,149 @@ +use std::collections::{HashMap,BTreeMap}; +use warp::{ + // http::{StatusCode}, + http::{method::Method, HeaderMap, HeaderValue}, + Reply, Rejection, +}; +use reqenv::ReqEnv; +// use app_env::profile::Profile; +use app_auth::{UserCtx}; + +// use kloud::{ +// defs::{ +// KloudQueryConfigFilters, +// }, +// }; +use clds::defs::{KloudCheckHome}; +use clds::clouds::defs::{Cloud}; +use crate::defs::{DataDBs}; // ,CollsData}; +use clds::clouds::on_clouds::{get_cloud_check,get_apps_check}; + +pub async fn get_tsks_apps_check(reqenv: &ReqEnv, cld_indx: usize, _auth: UserCtx,_role: &str) -> String { + let result_apps = get_apps_check(&reqenv).await; + // println!("Result apps: {}",&result_apps); + let res_apps: Vec = serde_json::from_str(&result_apps).unwrap_or_else(|e| { + println!("Error serde apps json: {}",e); + Vec::new() + }); + // let mut list_groups = String::from(""); + let mut grp_apps_hash: HashMap> = HashMap::new(); + if let Some(kld) = res_apps.get(cld_indx) { + for grp in &kld.groups { + // if !list_groups.is_empty() { + // list_groups.push(','); + // } + // list_groups.push_str(&grp.name); + let mut m_items = BTreeMap::new(); + for itm in &grp.items { + if let Some(data_liveness) = &itm.liveness { + m_items.insert(format!("{}",&itm.name),data_liveness.to_string()); + } + } + grp_apps_hash.insert(format!("{}",grp.name),m_items); + } + } + let result_cloud = get_cloud_check(&reqenv).await; + // println!("Result cloud: {}",&result_cloud); + let res_cloud: Vec = serde_json::from_str(&result_cloud).unwrap_or_else(|e| { + println!("Error serde apps json: {}",e); + Vec::new() + }); + let mut grp_cloud_hash: HashMap> = HashMap::new(); + if let Some(kld) = res_cloud.get(cld_indx) { + for grp in &kld.groups { + let mut m_items = BTreeMap::new(); + for itm in &grp.items { + if let Some(data_liveness) = &itm.liveness { + m_items.insert(format!("{}",&itm.name),data_liveness.to_string()); + } + } + grp_cloud_hash.insert(format!("{}",grp.name),m_items); + } + } + // ctx.insert("groups_cloud".to_string(),&grp_cloud_hash); + let res_apps_json=serde_json::to_string(&grp_apps_hash).unwrap_or_else(|e|{ + println!("Error serde from value: {}",e); + String::from("") + }); + let res_cloud_json=serde_json::to_string(&grp_cloud_hash).unwrap_or_else(|e|{ + println!("Error serde from value: {}",e); + String::from("") + }); + let result = format!("{}:{}{}:{}{}",r#"{"group_apps""#,&res_apps_json,r#","group_cloud""#,&res_cloud_json,r#"}"#); + result.to_owned() +} +pub async fn home( + header: HeaderMap, + method: Method, +// user: UserCtx, + db: DataDBs, + _cloud: Cloud, + prfx: String, +// headers: warp::http::HeaderMap +// path: warp::path::FullPath, headers: warp::http::HeaderMap +) -> Result { + let reqenv = ReqEnv::new(db.app, db.auth, header, method, "/home", "home", &prfx); + // let allow_origin = reqenv.websrvr().allow_origin; + // let opts = KloudQueryConfigFilters::default(); + // let source = format!("{}/{}","ma",""); + match reqenv.user_authentication().await { + Ok(auth) => { + // dbg!("auth: {}",&auth); + // println!("User: {} | {}",&user.user_id,&user.token); + // if let Some(lang) = reqtasks.params().get("lang") { + // res.render_json_text(&get_lang_items_str("langs",req_lang,"yaml")) + // } else { + // res.render_json_text(&get_lang_items_str("langs",&reqtasks.lang(),"yaml")) + // } + // log::debug!("LANG: {} - {}",language, lang); + // dbg!("LANG: {} - {}",language, lang); + let role = reqenv.req.user_role().await; + // reqenv.is_admin() + let result = get_tsks_apps_check(&reqenv,1,auth,&role).await; + // let mut path = format!("{}/profiles/{}/{}/defs.yaml",reqenv.websrvr().resources_path,&prfx,&auth.user_id); + // if ! std::path::Path::new(&path).exists() { + // path = format!("{}/profiles/{}/defs.yaml",reqenv.websrvr().resources_path,&prfx); + // } + // let content = Profile::load_fs_content(path.into()); + + // let lang = opts.lang.unwrap_or_else(|| String::from("es")); + // let section = opts.section.unwrap_or_else(|| String::from("")); + // let lang_items = LangItems::new("langs/ta",&lang,"yaml"); + // let result = lang_items.get_items_str(§ion); + + // let res = Profile::to_yaml(content); // String::from(""); + // let result = serde_json::to_string(&res).unwrap_or_else(|_| String::from("")); + + + Ok(warp::http::Response::builder() + .body(result.to_string()) + .into_response()) + /* + Ok(warp::reply::with_header( + warp::http::Response::new(result), + "Access-Control-Allow-Origin", + &allow_origin)) + */ + // warp::reply::json(&res), + // Ok(warp::reply::with_header( + // warp::http::Response::new(result), + // "Access-Control-Allow-Origin", + // &allow_origin)) + // Ok(warp::reply::json(&result)) + }, + Err(e) => { + // let result = format!("Error: no credentials found"); + // println!("{}",e); + let result = get_tsks_apps_check(&reqenv,1,UserCtx::default(),"").await; + Ok(warp::http::Response::builder() + .body(result.to_string()) + .into_response()) + /* + Ok(warp::reply::with_header( + warp::http::Response::new(result), + "Access-Control-Allow-Origin", + &allow_origin)) + */ + } + } +}