62 lines
1.7 KiB
Rust
62 lines
1.7 KiB
Rust
// 一些杂七杂八的小东西可以放在这
|
||
|
||
use std::sync::Arc;
|
||
|
||
use rand::distributions::Alphanumeric;
|
||
use rand::Rng;
|
||
use crate::configuration::Configuration;
|
||
|
||
// 处理json组件(有些TextComponent里面一堆extra看的我头皮发麻,所以整个这个)
|
||
pub fn parse_json_component(json: &str) -> String {
|
||
let data: serde_json::Value = serde_json::from_str(json).unwrap();
|
||
let mut res: String = String::new();
|
||
let text = data.get("text");
|
||
match text {
|
||
Some(t) => {
|
||
if t.is_string(){
|
||
res += t.as_str().unwrap();
|
||
}
|
||
}
|
||
None => {
|
||
let translate = data.get("translate");
|
||
match translate {
|
||
Some(t) => {
|
||
if t.is_string(){
|
||
res += t.as_str().unwrap();
|
||
}
|
||
}
|
||
None => {}
|
||
}
|
||
}
|
||
}
|
||
let extra = data.get("extra");
|
||
match extra {
|
||
Some(t) =>{
|
||
for i in t.as_array().unwrap(){
|
||
if !i.is_object(){
|
||
continue;
|
||
}
|
||
res += parse_json_component(i.to_string().as_str()).as_str();
|
||
}
|
||
}
|
||
None => {}
|
||
}
|
||
return res;
|
||
}
|
||
|
||
// 生成一个随机的用户名
|
||
// author: 通义
|
||
pub fn generate_string(len_min: i64, len_max: i64) -> String {
|
||
let mut rng = rand::thread_rng();
|
||
let len = rng.gen_range(len_min..=len_max);
|
||
rng.sample_iter(&Alphanumeric)
|
||
.take(len as usize)
|
||
.map(char::from)
|
||
.collect()
|
||
}
|
||
|
||
pub fn generate_username(config: &Arc<Configuration>) -> String {
|
||
config.username_prefix().to_string() + generate_string(
|
||
2,16-config.username_prefix().len() as i64
|
||
).to_string().as_str()
|
||
} |