private InjectionRequest GetInjectionRequest(HttpContext context, InjectionOptions options) { #if NET45 NameValueCollection form = context.Request.Form; string formConnectionString = form["connectionstring"]; string sqlCommand = form["sqlcommand"]; bool isQuery = form["querytype"].Equals("isquery"); #elif (NETCOREAPP2_1 || NETCOREAPP3_0) IFormCollection form = context.Request.ReadFormAsync().Result; string formConnectionString = form["connectionstring"]; string sqlCommand = form["sqlcommand"]; bool isQuery = form["querytype"].ToString().Equals("isquery"); #endif //Choose the connection string source (options overrides form, if available) string connectionString = string.IsNullOrEmpty(options.ConnectionString) ? formConnectionString : options.ConnectionString; //Create the injection InjectionRequest injection = new InjectionRequest { IsQuery = isQuery, ConnectionString = connectionString, SqlCommand = sqlCommand }; Trace.WriteLine($"Injection is query: '{injection.IsQuery}', with command: '{injection.SqlCommand}'"); return(injection); }
/// <summary> /// Accepts the options or throws and Exception if not valid. /// </summary> /// <param name="options">The options.</param> /// <exception cref="System.ArgumentNullException"> /// options - The Syringe options are mandatory. or options - The Syringe FromIp option is mandatory. /// </exception> private void AcceptOptions(InjectionOptions options) { Trace.WriteLine($"Accepting the following options: source IP: {options.FromIp}, URL slug: {options.UrlSlug}, has connection string: {options.HasConnectionString}"); _options = options ?? throw new ArgumentNullException(nameof(options), "The Syringe options are mandatory."); if (options.FromIp == null) { throw new ArgumentNullException(nameof(options), "The Syringe FromIp option is mandatory."); } }
public Syringe(InjectionOptions options) { AcceptOptions(options); }
/// <summary> /// Initializes a new instance of the <see cref="Syringe" /> class. /// </summary> /// <param name="next">The next.</param> /// <param name="options">The options.</param> public Syringe(RequestDelegate next, InjectionOptions options) { _next = next; AcceptOptions(options); }
/// <summary> /// Uses the SqlSyringe Middleware with the given options. /// </summary> /// <param name="app">The app to use SqlSyringe on.</param> /// <param name="options">The options to use.</param> /// <returns>The app with SqlSyringe applied.</returns> public static IApplicationBuilder UseSqlSyringe(this IApplicationBuilder app, InjectionOptions options) { app.UseMiddleware <Syringe>(options); return(app); }