优化代码

This commit is contained in:
李运家 2024-11-06 10:39:37 +08:00
parent 56c5728a74
commit 1c9db648de
8 changed files with 26 additions and 29 deletions

View File

@ -12,7 +12,7 @@ pub struct Context {
impl Context { impl Context {
pub fn get_account(&self) -> Option<Arc<Account>> { pub fn get_account(&self) -> Option<Arc<Account>> {
if let Some(account) = &self.account { if let Some(account) = &self.account {
return Some(account.clone()); Some(account.clone())
} else { } else {
None None
} }
@ -20,7 +20,7 @@ impl Context {
pub fn get_token(&self) -> Option<Arc<String>> { pub fn get_token(&self) -> Option<Arc<String>> {
if let Some(token) = &self.token { if let Some(token) = &self.token {
return Some(token.clone()); Some(token.clone())
} else { } else {
None None
} }

View File

@ -80,6 +80,6 @@ where
return Err(ResErr::params(message!(lang_tag, MessageId::InvalidParams))); return Err(ResErr::params(message!(lang_tag, MessageId::InvalidParams)));
} }
return Err(ResErr::params(message!(lang_tag, MessageId::InvalidParams))); Err(ResErr::params(message!(lang_tag, MessageId::InvalidParams)))
} }
} }

View File

@ -110,7 +110,7 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
tracing::error!("无效的 token, 解析失败"); tracing::error!("无效的 token, 解析失败");
// 解析语言 // 解析语言
let language = request_util::get_lang_tag(req.headers()); let language = request_util::get_lang_tag(req.headers());
return ResErr::auth(message!(&language, MessageId::BadRequest)).into_response(); ResErr::auth(message!(&language, MessageId::BadRequest)).into_response()
} }
} }
} }

View File

@ -56,10 +56,7 @@ fn header_to_string(h: &HeaderMap) -> String {
map.insert(k.to_string(), vals); map.insert(k.to_string(), vals);
} }
match serde_json::to_string(&map) { serde_json::to_string(&map).unwrap_or_else(|_| String::from("<none>"))
Ok(v) => v,
Err(_) => String::from("<none>"),
}
} }
async fn drain_body(request: Request, next: Next) -> Result<(Response, Option<String>), ResErr> { async fn drain_body(request: Request, next: Next) -> Result<(Response, Option<String>), ResErr> {
@ -86,7 +83,7 @@ async fn drain_body(request: Request, next: Next) -> Result<(Response, Option<St
let (parts, body) = request.into_parts(); let (parts, body) = request.into_parts();
// this wont work if the body is an long running stream // this won't work if the body is a long-running stream
let bytes = match body.collect().await { let bytes = match body.collect().await {
Ok(v) => v.to_bytes(), Ok(v) => v.to_bytes(),
Err(err) => { Err(err) => {

View File

@ -282,4 +282,4 @@ impl ResErr {
} }
} }
pub type ResResult<T> = std::result::Result<T, ResErr>; pub type ResResult<T> = Result<T, ResErr>;

View File

@ -47,13 +47,13 @@ pub struct WeChatBaseResult {
/// 微信登录登录 /// 微信登录登录
/// ///
/// 登录成功 /// 登录成功
/// ``` /// ```json
/// { /// {
/// "openid": "odbV75XGs-Lwj0CmOxwIXjdDfVEY", /// "openid": "odbV75XGs-Lwj0CmOxwIXjdDfVEY",
/// "session_key": "iM6cs8nhw0VtAty16RjswQ==", /// "session_key": "iM6cs8nhw0VtAty16RjswQ==",
/// "unionid": null, /// "unionid": null,
/// "errcode": null, /// "errcode": null,
/// "errmsg": null /// "errmsg": null
/// } /// }
/// ``` /// ```
#[derive(Deserialize, Serialize, Debug, Clone, Responsable)] #[derive(Deserialize, Serialize, Debug, Clone, Responsable)]

View File

@ -21,7 +21,7 @@ struct RouteArgs {
// 实现 Parse trait 以支持解析参数 // 实现 Parse trait 以支持解析参数
impl Parse for RouteArgs { impl Parse for RouteArgs {
fn parse(input: ParseStream) -> syn::parse::Result<Self> { fn parse(input: ParseStream) -> Result<Self> {
// 使用Meta解析 begin // 使用Meta解析 begin
// let args = Punctuated::<syn::Meta, syn::Token![,]>::parse_terminated(input)?; // let args = Punctuated::<syn::Meta, syn::Token![,]>::parse_terminated(input)?;
// let mut path = None; // let mut path = None;
@ -46,7 +46,7 @@ impl Parse for RouteArgs {
// let path = path.expect("Expected a path argument"); // let path = path.expect("Expected a path argument");
// 使用Meta解析 end // 使用Meta解析 end
let args = Punctuated::<syn::Expr, syn::Token![,]>::parse_terminated(input)?; let args = Punctuated::<Expr, Token![,]>::parse_terminated(input)?;
let mut path = None; let mut path = None;
let mut methods = Vec::new(); let mut methods = Vec::new();
@ -87,12 +87,12 @@ impl Parse for RouteArgs {
} }
struct Args { struct Args {
vars: Vec<syn::Expr>, vars: Vec<Expr>,
} }
impl Parse for Args { impl Parse for Args {
fn parse(input: ParseStream) -> syn::parse::Result<Self> { fn parse(input: ParseStream) -> Result<Self> {
let vars = Punctuated::<syn::Expr, syn::Token![,]>::parse_terminated(input)?; let vars = Punctuated::<Expr, Token![,]>::parse_terminated(input)?;
Ok(Args { Ok(Args {
vars: vars.into_iter().collect(), vars: vars.into_iter().collect(),
@ -101,18 +101,18 @@ impl Parse for Args {
} }
impl Args { impl Args {
pub fn get_arg(&self, index: usize) -> syn::Result<Option<syn::Expr>> { pub fn get_arg(&self, index: usize) -> Result<Option<Expr>> {
match self.vars.get(index) { match self.vars.get(index) {
Some(var) => Ok(Some(var.to_owned())), Some(var) => Ok(Some(var.to_owned())),
None => { None => {
// 第一个参数使路由url必须存在其他的参数根据实际需求进一步解析 // 第一个参数使路由url必须存在其他的参数根据实际需求进一步解析
if index != 0 { if index != 0 {
return Ok(None); Ok(None)
} else { } else {
return Err(syn::Error::new( Err(Error::new(
Span::call_site().into(), Span::call_site().into(),
"route must have one argument", "route must have one argument",
)); ))
} }
} }
} }
@ -130,13 +130,13 @@ pub fn gen_route(attr: TokenStream, item: TokenStream, method: &str) -> TokenStr
let mut method_routers = Vec::new(); let mut method_routers = Vec::new();
if methods.is_empty() { if methods.is_empty() {
let method_name = syn::Ident::new(&method.to_lowercase(), method.span()); let method_name = Ident::new(&method.to_lowercase(), method.span());
method_routers.push(quote! { method_routers.push(quote! {
(#path, axum::routing::#method_name(#ident::#ident)) (#path, axum::routing::#method_name(#ident::#ident))
}); });
} else { } else {
for method in methods { for method in methods {
let method_name = syn::Ident::new(&method.to_lowercase(), method.span()); let method_name = Ident::new(&method.to_lowercase(), method.span());
method_routers.push(quote! { method_routers.push(quote! {
(#path, axum::routing::#method_name(#ident::#ident)) (#path, axum::routing::#method_name(#ident::#ident))
}); });

View File

@ -23,7 +23,7 @@ struct TaskArgs {
// 实现 Parse trait 以支持解析参数 // 实现 Parse trait 以支持解析参数
impl Parse for TaskArgs { impl Parse for TaskArgs {
fn parse(input: ParseStream) -> Result<Self> { fn parse(input: ParseStream) -> Result<Self> {
let args = Punctuated::<syn::Meta, syn::Token![,]>::parse_terminated(input)?; let args = Punctuated::<Meta, Token![,]>::parse_terminated(input)?;
let mut task_args = TaskArgs { let mut task_args = TaskArgs {
cron: String::from(""), cron: String::from(""),
@ -61,7 +61,7 @@ impl Parse for TaskArgs {
} }
if task_args.cron.is_empty() && task_args.interval <= 0 { if task_args.cron.is_empty() && task_args.interval <= 0 {
return Err(syn::Error::new( return Err(Error::new(
Span::call_site().into(), Span::call_site().into(),
"必须设置有效的cron表达式或者interval参数", "必须设置有效的cron表达式或者interval参数",
)); ));