Skip to content

Commit

Permalink
fix pic data
Browse files Browse the repository at this point in the history
  • Loading branch information
super1207 committed Aug 25, 2024
1 parent c4a0d8e commit af6abdd
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 34 deletions.
65 changes: 32 additions & 33 deletions src/redlang/exfun.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,36 @@ use ab_glyph::{FontRef, PxScale};
const BASE64_CUSTOM_ENGINE: engine::GeneralPurpose = engine::GeneralPurpose::new(&alphabet::STANDARD, general_purpose::PAD);


pub fn get_raw_data(self_t:&mut RedLang,input:String) -> Result<String, Box<dyn std::error::Error>>{
let raw_data;
let tp = self_t.get_type(&input)?;
if tp == "文本" {
raw_data = input;
}else if tp == "字节集" {
let temp = RedLang::parse_bin(&self_t.bin_pool, &input)?;
raw_data = self_t.build_bin(temp);
} else if tp == "数组" {
let mut retarr = vec![];
let arr = RedLang::parse_arr(&input)?;
for it in arr {
retarr.push(get_raw_data(self_t, it.to_owned())?);
}
let bind = retarr.iter().map(|x|x.as_ref()).collect();
raw_data = self_t.build_arr(bind);
} else if tp == "对象" {
let mut retobj = BTreeMap::new();
let obj = RedLang::parse_obj(&input)?;
for (k,v) in obj {
retobj.insert(get_raw_data(self_t, k)?, get_raw_data(self_t, v)?);
}
raw_data = self_t.build_obj(retobj);
}
else {
return Err(RedLang::make_err(&format!("不支持的参数类型:{tp}")));
}
Ok(raw_data)
}

pub async fn http_post(url:&str,data:Vec<u8>,headers:&BTreeMap<String, String>,proxy_str:&str,method:&str) -> Result<(Vec<u8>,String), Box<dyn std::error::Error + Send + Sync>> {
let client;
let uri = reqwest::Url::from_str(url)?;
Expand Down Expand Up @@ -2941,38 +2971,6 @@ pub fn init_ex_fun_map() {
}
});

fn get_raw_data(self_t:&mut RedLang,input:String) -> Result<String, Box<dyn std::error::Error>>{
let raw_data;
let tp = self_t.get_type(&input)?;
if tp == "文本" {
raw_data = input;
}else if tp == "字节集" {
let temp = RedLang::parse_bin(&self_t.bin_pool, &input)?;
raw_data = self_t.build_bin(temp);
} else if tp == "数组" {
let mut retarr = vec![];
let arr = RedLang::parse_arr(&input)?;
for it in arr {
retarr.push(get_raw_data(self_t, it.to_owned())?);
}
let bind = retarr.iter().map(|x|x.as_ref()).collect();
raw_data = self_t.build_arr(bind);
} else if tp == "对象" {
let mut retobj = BTreeMap::new();
let obj = RedLang::parse_obj(&input)?;
for (k,v) in obj {
retobj.insert(get_raw_data(self_t, k)?, get_raw_data(self_t, v)?);
}
raw_data = self_t.build_obj(retobj);
}
else {
return Err(RedLang::make_err(&format!("不支持的参数类型:{tp}")));
}
Ok(raw_data)
}



add_fun(vec!["运行PY"],|self_t,params|{
let code = r#"
import os
Expand Down Expand Up @@ -3598,6 +3596,7 @@ def red_out(sw):
let keyword = self_t.get_param(params, 0)?;
let mut tm = self_t.get_param(params, 1)?.parse::<i64>()?;
let subdata = self_t.get_param(params, 2)?;
let subdata = get_raw_data(self_t, subdata)?;
let now_time = SystemTime::now().duration_since(std::time::UNIX_EPOCH)?.as_millis() as i64;
tm += now_time;
let mut lk = G_ONE_TIME_RUN.lock().unwrap();
Expand All @@ -3606,7 +3605,7 @@ def red_out(sw):
pkg_name: self_t.pkg_name.to_owned(),
flag: keyword,
sub_data: subdata,
data: (*self_t.exmap).borrow().clone() });
data: (*self_t.exmap).borrow().clone() });
Ok(Some("".to_string()))
});
}
Expand Down
3 changes: 2 additions & 1 deletion src/redlang/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1495,7 +1495,8 @@ pub fn init_core_fun_map() {
}
let ret_str;
ret_str = rl.parse(&code)?;
return Ok(Some(ret_str));
let raw_data = exfun::get_raw_data(&mut rl,ret_str)?;
return Ok(Some(raw_data));
});
add_fun(vec!["反射执行"],|self_t,params|{
let code = self_t.get_param(params, 0)?;
Expand Down

0 comments on commit af6abdd

Please sign in to comment.