/// <summary> /// Adds json support using supplied settings /// <para>Can create a deserializer for application/json, text/json, and text/javascript</para> /// </summary> /// <param name="builder">The builder</param> /// <param name="settings">Supplied JsonSerializerSettings</param> /// <returns>ISolidHttpCoreBuilder</returns> public static ISolidHttpCoreBuilder AddJson(this ISolidHttpCoreBuilder builder, JsonSerializerSettings settings) { var provider = new JsonSerializerSettingsProvider(settings); builder.Services.AddSingleton <IJsonSerializerSettingsProvider>(provider); builder.AddDeserializer <JsonResponseDeserializerFactory>("application/json", "text/json", "text/javascript"); return(builder .OnRequestCreated((services, request) => { var p = services.GetRequiredService <IJsonSerializerSettingsProvider>(); request.BaseRequest.Properties.Add("JsonSerializerSettings", p.GetJsonSerializerSettings()); })); }
/// <summary> /// Add a global handler to be run when every Solid.Http request object is created. /// </summary> /// <param name="builder">The extended ISolidHttpBuilder</param> /// <param name="action">The handler to be run</param> /// <returns>The builder</returns> public static ISolidHttpCoreBuilder OnRequestCreated(this ISolidHttpCoreBuilder builder, Action <ISolidHttpRequest> action) => builder.OnRequestCreated((_, c) => action(c));