private async Task ParseParamFromBody(Parameter param)
        {
            if (body == null)
            {
                var content = await Request.GetBodyAsync();

                if (Request.ContentType.StartsWith("application/json"))
                {
                    if (!string.IsNullOrEmpty(content))
                    {
                        body = JObject.Parse(content);
                    }
                }
                else if (Request.ContentType.StartsWith("multipart/form-data"))
                {
                    body = Request.Form.ToJObject();
                }
                else
                {
                    body = content;
                }
            }
            var value = new ReferenceValueType {
                Value = body
            };

            info.Options.ApplyParameterValue?.Invoke(value, param.ParamName, info, this);
            var actual = value.Value is JObject jObject?jObject.ToString(Formatting.None) : value.Value;

            npngParameters.Add(new NpgsqlParameter(param.ParamName, actual));
        }
        private void ParseCustomParam(Parameter param)
        {
            var value      = new ReferenceValueType();
            var routeValue = this.ControllerContext.RouteData?.Values?[param.ParamName];

            if (routeValue != null)
            {
                value.Value = routeValue;
            }
            info.Options.ApplyParameterValue?.Invoke(value, param.ParamName, info, this);
            npngParameters.Add(new NpgsqlParameter(param.ParamName, value.Value));
        }
        private void ParseParamFromQueryString(Parameter param)
        {
            if (query == null)
            {
                query = Request.Query.ToJObject();
            }
            var value = new ReferenceValueType {
                Value = query
            };

            info.Options.ApplyParameterValue?.Invoke(value, param.ParamName, info, this);
            npngParameters.Add(new NpgsqlParameter(param.ParamName, ((JObject)value.Value).ToString(Formatting.None)));
        }
 private void ParseMatchParamsByBFormKeyName(Parameter param)
 {
     if (Request.Form[param.ParamName] == StringValues.Empty)
     {
         ParseCustomParam(param);
     }
     else
     {
         var value = new ReferenceValueType {
             Value = string.Join("", Request.Form[param.ParamName].ToArray())
         };
         info.Options.ApplyParameterValue?.Invoke(value, param.ParamName, info, this);
         npngParameters.Add(new NpgsqlParameter(param.ParamName, value.Value));
     }
 }