From 6b6e4320eaf86d2b6f8f5e138bd60a02d2a1f748 Mon Sep 17 00:00:00 2001 From: Tim Stone Date: Sun, 8 Jan 2023 17:41:05 -0500 Subject: [PATCH] Source ParsedQuery key/value pairs from QueryString + Form instead of all Request.Params --- .../Controllers/QueryController.cs | 10 ++++---- .../Controllers/QuerySetController.cs | 2 +- .../Controllers/StackOverflowController.cs | 24 +++++++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/App/StackExchange.DataExplorer/Controllers/QueryController.cs b/App/StackExchange.DataExplorer/Controllers/QueryController.cs index 0378667a..f5ee77be 100644 --- a/App/StackExchange.DataExplorer/Controllers/QueryController.cs +++ b/App/StackExchange.DataExplorer/Controllers/QueryController.cs @@ -87,7 +87,7 @@ public async Task Save(string sql, string title, string descriptio var parsedQuery = new ParsedQuery( sql, - Request.Params, + UserParams, withExecutionPlan == true, targetSites ?? TargetSites.Current ); @@ -307,7 +307,7 @@ public async Task Execute(int querySetId, int revisionId, int site var query = Current.DB.Queries.Get(revision.QueryId); var parsedQuery = new ParsedQuery( query.QueryBody, - Request.Params, + UserParams, withExecutionPlan == true, targetSites ?? TargetSites.Current ); @@ -371,7 +371,7 @@ public ActionResult ShowSingleSiteCsv(string sitename, int revisionId, string sl : RedirectPermanent($"/{site.TinyName.ToLower()}/csv/{revisionId}{(slug.HasValue() ? "/" + slug : "")}{Request.Url.Query}"); } - var parsedQuery = new ParsedQuery(query.QueryBody, Request.Params); + var parsedQuery = new ParsedQuery(query.QueryBody, UserParams); if (!parsedQuery.IsExecutionReady) { return PageBadRequest(); @@ -433,7 +433,7 @@ private ActionResult GetCsv(string sitename, int revisionId, TargetSites targetS } var results = QueryRunner.GetResults( - new ParsedQuery(query.QueryBody, Request.Params, executionPlan: false, targetSites: targetSites), + new ParsedQuery(query.QueryBody, UserParams, executionPlan: false, targetSites: targetSites), null, CurrentUser ); @@ -511,7 +511,7 @@ public ActionResult ShowPlan(string sitename, int revisionId, string slug) : RedirectPermanent($"/{site.TinyName.ToLower()}/plan/{revisionId}{(slug.HasValue() ? "/" + slug : "")}{Request.Url.Query}"); } - var parsedQuery = new ParsedQuery(query.QueryBody, Request.Params); + var parsedQuery = new ParsedQuery(query.QueryBody, UserParams); if (!parsedQuery.IsExecutionReady) { return PageBadRequest(); diff --git a/App/StackExchange.DataExplorer/Controllers/QuerySetController.cs b/App/StackExchange.DataExplorer/Controllers/QuerySetController.cs index a65f8184..4737495b 100644 --- a/App/StackExchange.DataExplorer/Controllers/QuerySetController.cs +++ b/App/StackExchange.DataExplorer/Controllers/QuerySetController.cs @@ -158,7 +158,7 @@ private ActionResult ShowCommon(Revision revision, string slug, bool latest) } CachedResult cachedResults = QueryUtil.GetCachedResults( - new ParsedQuery(revision.Query.QueryBody, Request.Params), + new ParsedQuery(revision.Query.QueryBody, UserParams), Site.Id ); diff --git a/App/StackExchange.DataExplorer/Controllers/StackOverflowController.cs b/App/StackExchange.DataExplorer/Controllers/StackOverflowController.cs index eae714e0..0fa2fe76 100644 --- a/App/StackExchange.DataExplorer/Controllers/StackOverflowController.cs +++ b/App/StackExchange.DataExplorer/Controllers/StackOverflowController.cs @@ -199,6 +199,30 @@ protected override void OnActionExecuted(ActionExecutedContext filterContext) base.OnActionExecuted(filterContext); } #endif + + private NameValueCollection _userParams; + + public NameValueCollection UserParams + { + get + { + if (_userParams == null) InitUserParams(); + return _userParams; + } + } + + protected void InitUserParams() + { + var combinedParams = new NameValueCollection(Request.QueryString); + + foreach (string key in Request.Form) + { + combinedParams[key] = Request.Form[key]; + } + + _userParams = combinedParams; + } + private User _currentUser; /// /// Gets a User object representing the current request's client.