@@ -24,7 +24,8 @@ module Connect {
2424 * but support for other kinds of route handlers can be added by implementing
2525 * additional subclasses of this class.
2626 */
27- abstract class RouteHandler extends HTTP:: Servers:: StandardRouteHandler , DataFlow:: ValueNode {
27+ abstract class RouteHandler extends HTTP:: Servers:: StandardRouteHandler , NodeJSLib:: RouteHandler ,
28+ DataFlow:: ValueNode {
2829 /**
2930 * Gets the parameter of kind `kind` of this route handler.
3031 *
@@ -35,12 +36,12 @@ module Connect {
3536 /**
3637 * Gets the parameter of the route handler that contains the request object.
3738 */
38- Parameter getRequestParameter ( ) { result = getRouteHandlerParameter ( "request" ) }
39+ override Parameter getRequestParameter ( ) { result = getRouteHandlerParameter ( "request" ) }
3940
4041 /**
4142 * Gets the parameter of the route handler that contains the response object.
4243 */
43- Parameter getResponseParameter ( ) { result = getRouteHandlerParameter ( "response" ) }
44+ override Parameter getResponseParameter ( ) { result = getRouteHandlerParameter ( "response" ) }
4445 }
4546
4647 /**
@@ -56,50 +57,6 @@ module Connect {
5657 }
5758 }
5859
59- /**
60- * A Connect response source, that is, the response parameter of a
61- * route handler.
62- */
63- private class ResponseSource extends HTTP:: Servers:: ResponseSource {
64- RouteHandler rh ;
65-
66- ResponseSource ( ) { this = DataFlow:: parameterNode ( rh .getResponseParameter ( ) ) }
67-
68- /**
69- * Gets the route handler that provides this response.
70- */
71- override RouteHandler getRouteHandler ( ) { result = rh }
72- }
73-
74- /**
75- * A Connect request source, that is, the request parameter of a
76- * route handler.
77- */
78- private class RequestSource extends HTTP:: Servers:: RequestSource {
79- RouteHandler rh ;
80-
81- RequestSource ( ) { this = DataFlow:: parameterNode ( rh .getRequestParameter ( ) ) }
82-
83- /**
84- * Gets the route handler that handles this request.
85- */
86- override RouteHandler getRouteHandler ( ) { result = rh }
87- }
88-
89- /**
90- * A Node.js HTTP response provided by Connect.
91- */
92- class ResponseExpr extends NodeJSLib:: ResponseExpr {
93- ResponseExpr ( ) { src instanceof ResponseSource }
94- }
95-
96- /**
97- * A Node.js HTTP request provided by Connect.
98- */
99- class RequestExpr extends NodeJSLib:: RequestExpr {
100- RequestExpr ( ) { src instanceof RequestSource }
101- }
102-
10360 /**
10461 * A call to a Connect method that sets up a route.
10562 */
@@ -156,10 +113,11 @@ module Connect {
156113 * An access to a user-controlled Connect request input.
157114 */
158115 private class RequestInputAccess extends HTTP:: RequestInputAccess {
159- RequestExpr request ;
116+ NodeJSLib :: RequestExpr request ;
160117 string kind ;
161118
162119 RequestInputAccess ( ) {
120+ request .getRouteHandler ( ) instanceof StandardRouteHandler and
163121 exists ( PropAccess cookies |
164122 // `req.cookies.get(<name>)`
165123 kind = "cookie" and
@@ -172,33 +130,4 @@ module Connect {
172130
173131 override string getKind ( ) { result = kind }
174132 }
175-
176- /**
177- * A function that flows to a route setup.
178- */
179- private class TrackedRouteHandlerCandidateWithSetup extends RouteHandler ,
180- HTTP:: Servers:: StandardRouteHandler , DataFlow:: FunctionNode {
181- TrackedRouteHandlerCandidateWithSetup ( ) { this = any ( RouteSetup s ) .getARouteHandler ( ) }
182-
183- override Parameter getRouteHandlerParameter ( string kind ) {
184- result = getRouteHandlerParameter ( astNode , kind )
185- }
186- }
187-
188- /**
189- * A call that looks like a route setup on a Connect server.
190- *
191- * For example, this could be the call `router.use(handler)` where
192- * it is unknown if `router` is a Connect router.
193- */
194- class RouteSetupCandidate extends HTTP:: RouteSetupCandidate , DataFlow:: MethodCallNode {
195- DataFlow:: ValueNode routeHandlerArg ;
196-
197- RouteSetupCandidate ( ) {
198- getMethodName ( ) = "use" and
199- routeHandlerArg = getAnArgument ( )
200- }
201-
202- override DataFlow:: ValueNode getARouteHandlerArg ( ) { result = routeHandlerArg }
203- }
204133}
0 commit comments