1+ use crate :: http:: is_http_method;
2+
13pub struct RouteArgs {
24 pub method : Option < syn:: Ident > ,
35 pub path : Option < syn:: LitStr > ,
@@ -22,33 +24,26 @@ impl syn::parse::Parse for RouteArgs {
2224 // Try to parse as method identifier (get, post, etc.)
2325 let ident: syn:: Ident = input. parse ( ) ?;
2426 let ident_str = ident. to_string ( ) . to_lowercase ( ) ;
25- match ident_str. as_str ( ) {
26- "get" | "post" | "put" | "patch" | "delete" | "head" | "options" => {
27- method = Some ( ident) ;
28- }
29- "path" => {
30- input. parse :: < syn:: Token ![ =] > ( ) ?;
31- let lit: syn:: LitStr = input. parse ( ) ?;
32- path = Some ( lit) ;
33- }
34- "error_status" => {
35- input. parse :: < syn:: Token ![ =] > ( ) ?;
36- let array: syn:: ExprArray = input. parse ( ) ?;
37- error_status = Some ( array) ;
38- }
39- "tags" => {
40- input. parse :: < syn:: Token ![ =] > ( ) ?;
41- let array: syn:: ExprArray = input. parse ( ) ?;
42- tags = Some ( array) ;
43- }
44- "description" => {
45- input. parse :: < syn:: Token ![ =] > ( ) ?;
46- let lit: syn:: LitStr = input. parse ( ) ?;
47- description = Some ( lit) ;
48- }
49- _ => {
50- return Err ( lookahead. error ( ) ) ;
51- }
27+ if is_http_method ( & ident_str) {
28+ method = Some ( ident) ;
29+ } else if ident_str == "path" {
30+ input. parse :: < syn:: Token ![ =] > ( ) ?;
31+ let lit: syn:: LitStr = input. parse ( ) ?;
32+ path = Some ( lit) ;
33+ } else if ident_str == "error_status" {
34+ input. parse :: < syn:: Token ![ =] > ( ) ?;
35+ let array: syn:: ExprArray = input. parse ( ) ?;
36+ error_status = Some ( array) ;
37+ } else if ident_str == "tags" {
38+ input. parse :: < syn:: Token ![ =] > ( ) ?;
39+ let array: syn:: ExprArray = input. parse ( ) ?;
40+ tags = Some ( array) ;
41+ } else if ident_str == "description" {
42+ input. parse :: < syn:: Token ![ =] > ( ) ?;
43+ let lit: syn:: LitStr = input. parse ( ) ?;
44+ description = Some ( lit) ;
45+ } else {
46+ return Err ( lookahead. error ( ) ) ;
5247 }
5348
5449 // Check if there's a comma
@@ -74,9 +69,10 @@ impl syn::parse::Parse for RouteArgs {
7469
7570#[ cfg( test) ]
7671mod tests {
77- use super :: * ;
7872 use rstest:: rstest;
7973
74+ use super :: * ;
75+
8076 #[ rstest]
8177 // Method only
8278 #[ case( "get" , true , Some ( "get" ) , None , None ) ]
0 commit comments