File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed
Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -110,6 +110,30 @@ impl Action {
110110 }
111111 }
112112
113+ pub fn get_target ( route : & Route < Rule > , request : & Request ) -> Option < String > {
114+ let markers_captured = route. capture ( request) ;
115+ let variables = route. handler ( ) . variables ( & markers_captured, request) ;
116+ let rule = route. handler ( ) ;
117+
118+ let target = rule. target . as_ref ( ) . map ( |t| {
119+ let mut value = StaticOrDynamic :: replace ( t. clone ( ) , & variables) ;
120+
121+ if let Some ( skipped_query_params) = request. path_and_query_skipped . skipped_query_params . as_ref ( ) {
122+ if value. contains ( '?' ) {
123+ value. push ( '&' ) ;
124+ } else {
125+ value. push ( '?' ) ;
126+ }
127+
128+ value. push_str ( skipped_query_params. as_str ( ) ) ;
129+ }
130+
131+ value
132+ } ) ;
133+
134+ target
135+ }
136+
113137 pub fn from_route_rule ( route : & Route < Rule > , request : & Request ) -> ( Option < Action > , bool , bool ) {
114138 let markers_captured = route. capture ( request) ;
115139 let variables = route. handler ( ) . variables ( & markers_captured, request) ;
You can’t perform that action at this time.
0 commit comments