public SwaggerTimeZoneHeaderOperationFilter(IOptions <HeaderClientTimeZoneProviderOptions> headerClientOptions, IOptions <HeaderTimeZoneProviderOptions> headerOptions, IOptions <RequestTimeZoneOptions> requestTzOptions) { _headerClientOptions = headerClientOptions.Value; _headerOptions = headerOptions.Value; _requestTzOptions = requestTzOptions.Value; }
/// <summary> /// Adds services to the <see cref="IServiceCollection"/>, required for request timezone support /// </summary> /// <param name="services">The <see cref="IServiceCollection"/>.</param> /// <param name="optionsAction">The action returning <see cref="RequestTimeZoneOptions"/>.</param> /// <returns>The <see cref="IServiceCollection"/>.</returns> public static IServiceCollection AddRequestTimeZone(this IServiceCollection services, Action <RequestTimeZoneOptions> optionsAction) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var options = new RequestTimeZoneOptions(); optionsAction.Invoke(options); services .AddSingleton(x => options) .AddScoped <RequestTimeZone>() .AddSingleton <RequestTimeZoneMiddleware>(); if (options.EnableRequestToUtc) { services .AddMvc(x => { x.AddDateTimeModelBinderProvider(); }); } if (options.EnableResponseToLocal) { switch (options.JsonSerializerType) { case JsonSerializerType.Microsoft: services .AddMvc() .AddJsonOptions(x => { x.AddDateTimeConverter(); }); break; case JsonSerializerType.Newtonsoft: services .AddMvc() .AddNewtonsoftJson(x => { x.AddDateTimeConverter(); }); break; default: throw new InvalidOperationException(); } } return(services); }
public static RequestTimeZoneOptions AddQuery(this RequestTimeZoneOptions options) { return(options.AddProvider(new QueryTimeZoneProvider())); }
public static RequestTimeZoneOptions AddHeaderClient(this RequestTimeZoneOptions options) { return(options.AddProvider(new HeaderClientTimeZoneProvider())); }
public static RequestTimeZoneOptions AddCookie(this RequestTimeZoneOptions options) { return(options.AddProvider(new CookieTimeZoneProvider())); }
public RequestTimeZoneMiddleware(IOptions <RequestTimeZoneOptions> options) { _options = options.Value; }