Exemplo n.º 1
0
 public SwaggerTimeZoneHeaderOperationFilter(IOptions <HeaderClientTimeZoneProviderOptions> headerClientOptions,
                                             IOptions <HeaderTimeZoneProviderOptions> headerOptions,
                                             IOptions <RequestTimeZoneOptions> requestTzOptions)
 {
     _headerClientOptions = headerClientOptions.Value;
     _headerOptions       = headerOptions.Value;
     _requestTzOptions    = requestTzOptions.Value;
 }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 public static RequestTimeZoneOptions AddQuery(this RequestTimeZoneOptions options)
 {
     return(options.AddProvider(new QueryTimeZoneProvider()));
 }
Exemplo n.º 4
0
 public static RequestTimeZoneOptions AddHeaderClient(this RequestTimeZoneOptions options)
 {
     return(options.AddProvider(new HeaderClientTimeZoneProvider()));
 }
Exemplo n.º 5
0
 public static RequestTimeZoneOptions AddCookie(this RequestTimeZoneOptions options)
 {
     return(options.AddProvider(new CookieTimeZoneProvider()));
 }
 public RequestTimeZoneMiddleware(IOptions <RequestTimeZoneOptions> options)
 {
     _options = options.Value;
 }