Exemplo n.º 1
0
        /// <summary>
        /// Adds OData model-based authorization services
        /// </summary>
        /// <param name="odataBuilder"></param>
        /// <param name="configureODataAuth">Action to configure the authorization options</param>
        /// <returns></returns>
        public static IODataBuilder AddAuthorization(this IODataBuilder odataBuilder, Action <ODataAuthorizationOptions> configureODataAuth)
        {
            Contract.Assert(odataBuilder != null);

            odataBuilder.Services.AddODataAuthorization(configureODataAuth);
            return(odataBuilder);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Adds OData model-based authorization services
        /// </summary>
        /// <param name="odataBuilder"></param>
        /// <returns></returns>
        public static IODataBuilder AddAuthorization(this IODataBuilder odataBuilder)
        {
            Contract.Assert(odataBuilder != null);

            odataBuilder.Services.AddODataAuthorization();
            return(odataBuilder);
        }
        /// <summary>
        /// Configures Newtonsoft.Json using OData Json converter.
        /// </summary>
        /// <param name="builder">The OData builder.</param>
        /// <param name="setupAction">Callback to configure <see cref="MvcNewtonsoftJsonOptions"/>.</param>
        /// <param name="mapperProvider">The property mapper provider.</param>
        /// <returns>The <see cref="IODataBuilder"/>.</returns>
        public static IODataBuilder AddNewtonsoftJson(this IODataBuilder builder, Action <MvcNewtonsoftJsonOptions> setupAction,
                                                      Func <IEdmModel, IEdmStructuredType, IPropertyMapper> mapperProvider)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (setupAction is null)
            {
                throw new ArgumentNullException(nameof(setupAction));
            }

            Action <MvcNewtonsoftJsonOptions> odataSetupAction = opt =>
            {
                setupAction(opt);

                if (mapperProvider is null)
                {
                    opt.SerializerSettings.Converters.Add(new JSelectExpandWrapperConverter());
                }
                else
                {
                    opt.SerializerSettings.Converters.Add(new JSelectExpandWrapperConverter(mapperProvider));
                }

                opt.SerializerSettings.Converters.Add(new JDynamicTypeWrapperConverter());
                opt.SerializerSettings.Converters.Add(new JPageResultValueConverter());
                opt.SerializerSettings.Converters.Add(new JSingleResultValueConverter());
            };

            builder.Services.AddControllers().AddNewtonsoftJson(odataSetupAction);
            return(builder);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Enables service API versioning for the specified OData configuration.
        /// </summary>
        /// <param name="builder">The <see cref="IODataBuilder">OData builder</see> available in the application.</param>
        /// <returns>The original <paramref name="builder"/> object.</returns>
        public static IODataBuilder EnableApiVersioning(this IODataBuilder builder)
        {
            Arg.NotNull(builder, nameof(builder));
            Contract.Ensures(Contract.Result <IODataBuilder>() != null);

            AddODataServices(builder.Services);

            return(builder);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Enables service API versioning for the specified OData configuration.
        /// </summary>
        /// <param name="builder">The <see cref="IODataBuilder">OData builder</see> available in the application.</param>
        /// <returns>The original <paramref name="builder"/> object.</returns>
        public static IODataBuilder EnableApiVersioning(this IODataBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            AddODataServices(builder.Services);
            return(builder);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Adds the odata formatter related services.
        /// </summary>
        /// <param name="builder">The OData builder.</param>
        /// <returns>The IODataBuilder itself.</returns>
        public static IODataBuilder AddODataFormatter(this IODataBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            AddODataFormatterServices(builder.Services);
            return(builder);
        }
Exemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="setupAction"></param>
        /// <returns></returns>
        public static IODataBuilder AddODataRouting(this IODataBuilder builder, Action <ODataRoutingOptions> setupAction)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            AddODataRoutingServices(builder.Services);
            builder.Services.Configure(setupAction);
            return(builder);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Enables service API versioning for the specified OData configuration.
        /// </summary>
        /// <param name="builder">The <see cref="IODataBuilder">OData builder</see> available in the application.</param>
        /// <param name="setupAction">An <see cref="Action{T}">action</see> used to configure the provided options.</param>
        /// <returns>The original <paramref name="builder"/> object.</returns>
        public static IODataBuilder EnableApiVersioning(this IODataBuilder builder, Action <ODataApiVersioningOptions> setupAction)
        {
            Arg.NotNull(builder, nameof(builder));
            Arg.NotNull(setupAction, nameof(setupAction));
            Contract.Ensures(Contract.Result <IODataBuilder>() != null);

            var services = builder.Services;

            AddODataServices(services);
            services.Configure(setupAction);

            return(builder);
        }
        /// <summary>
        /// Adds OData routing convention.
        /// </summary>
        /// <typeparam name="T">The routing convention type.</typeparam>
        /// <param name="builder">The OData service builder.</param>
        /// <returns>The <see cref="IODataBuilder"/> so that additional calls can be chained.</returns>
        public static IODataBuilder AddConvention <T>(this IODataBuilder builder)
            where T : class, IODataControllerActionConvention
        {
            if (builder == null)
            {
                throw Error.ArgumentNull(nameof(builder));
            }

            builder.Services.TryAddEnumerable(
                ServiceDescriptor.Transient <IODataControllerActionConvention, T>());

            return(builder);
        }
        /// <summary>
        /// Adds services required for OData requests.
        /// </summary>
        /// <param name="services">The <see cref="IServiceCollection"/> to add the services to.</param>
        /// <param name="setupAction">The OData options to configure the services with.</param>
        /// <returns>The <see cref="IODataBuilder"/> so that additional calls can be chained.</returns>
        public static IODataBuilder AddOData(this IServiceCollection services, Action <ODataOptions> setupAction)
        {
            if (setupAction == null)
            {
                throw Error.ArgumentNull(nameof(setupAction));
            }

            IODataBuilder builder = services.AddODataCore();

            services.Configure(setupAction);

            return(builder);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Enables service API versioning for the specified OData configuration.
        /// </summary>
        /// <param name="builder">The <see cref="IODataBuilder">OData builder</see> available in the application.</param>
        /// <param name="setupAction">An <see cref="Action{T}">action</see> used to configure the provided options.</param>
        /// <returns>The original <paramref name="builder"/> object.</returns>
        public static IODataBuilder EnableApiVersioning(this IODataBuilder builder, Action <ODataApiVersioningOptions> setupAction)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var services = builder.Services;

            AddODataServices(services);
            services.Configure(setupAction);

            return(builder);
        }
 /// <summary>
 /// Configures Newtonsoft.Json using OData Json converter.
 /// </summary>
 /// <param name="builder">The OData builder.</param>
 /// <param name="setupAction">Callback to configure <see cref="MvcNewtonsoftJsonOptions"/>.</param>
 /// <returns>The <see cref="IODataBuilder"/>.</returns>
 public static IODataBuilder AddNewtonsoftJson(this IODataBuilder builder, Action <MvcNewtonsoftJsonOptions> setupAction)
 {
     return(builder.AddNewtonsoftJson(setupAction, null));
 }
 /// <summary>
 /// Configures Newtonsoft.Json using OData Json converter.
 /// </summary>
 /// <param name="builder">The OData builder.</param>
 /// <returns>The <see cref="IODataBuilder"/>.</returns>
 public static IODataBuilder AddNewtonsoftJson(this IODataBuilder builder)
 {
     return(builder.AddNewtonsoftJson(opt => { }));
 }