/// <summary>Initializes a new instance of the <see cref="MvcHalJsonMvcOptionsSetup"/> class.</summary> /// <param name="jsonOptions">The application's MVC JSON configuration.</param> /// <param name="charPool">A pool of <see cref="char"/>.</param> /// <param name="halRepository">The application's HAL+JSON repository.</param> public MvcHalJsonMvcOptionsSetup( IOptions <MvcNewtonsoftJsonOptions> jsonOptions, ArrayPool <char> charPool, IHalRepository halRepository) { _jsonOptions = jsonOptions.Value; _charPool = charPool; _halRepository = halRepository; }
/// <summary>Configures the options.</summary> /// <param name="options">The application's MVC JSON configuration.</param> /// <param name="serializerSettings">The application's JSON serialization settings.</param> /// <param name="charPool">A pool of <see cref="char"/>.</param> /// <param name="halRepository">The application's HAL+JSON repository.</param> static void ConfigureMvc( [NotNull] MvcOptions options, [NotNull] JsonSerializerSettings serializerSettings, [NotNull] ArrayPool <char> charPool, [NotNull] IHalRepository halRepository) { var outputFormatter = new HalJsonOutputFormatter(serializerSettings, charPool, halRepository); options.OutputFormatters.Add(outputFormatter); }
/// <summary>Initializes a new instance of the <see cref="HalJsonOutputFormatter"/> class.</summary> /// <param name="serializerSettings"> /// The <see cref="JsonSerializerSettings"/>. Should be either the application-wide settings /// (<see cref="MvcJsonOptions.SerializerSettings"/>) or an instance /// <see cref="JsonSerializerSettingsProvider.CreateSerializerSettings"/> initially returned. /// </param> /// <param name="charPool">The <see cref="ArrayPool{T}"/>.</param> /// <param name="halRepository">The application's HAL+JSON repository.</param> /// <exception cref="ArgumentNullException"><paramref name="serializerSettings"/> is <see langword="null"/>.</exception> /// <exception cref="ArgumentNullException"><paramref name="charPool"/> is <see langword="null"/>.</exception> /// <exception cref="ArgumentNullException"><paramref name="halRepository"/> is <see langword="null"/>.</exception> public HalJsonOutputFormatter( [NotNull] JsonSerializerSettings serializerSettings, [NotNull] ArrayPool <char> charPool, [NotNull] IHalRepository halRepository) : base(serializerSettings, charPool) { _halRepository = halRepository ?? throw new ArgumentNullException(nameof(halRepository)); SupportedMediaTypes.Clear(); SupportedMediaTypes.Add("application/hal+json"); }
/// <summary>Initializes a new instance of the <see cref="MvcHalJsonMvcOptionsSetup"/> class.</summary> /// <param name="jsonOptions">The application's MVC JSON configuration.</param> /// <param name="charPool">A pool of <see cref="char"/>.</param> /// <param name="halRepository">The application's HAL+JSON repository.</param> public MvcHalJsonMvcOptionsSetup( IOptions <MvcJsonOptions> jsonOptions, ArrayPool <char> charPool, IHalRepository halRepository) : base(options => ConfigureMvc( options, jsonOptions.Value.SerializerSettings, charPool, halRepository)) { }
/// <summary>Initializes a new instance of the <see cref="HalJsonOutputFormatter"/> class.</summary> /// <param name="serializerSettings"> /// The <see cref="JsonSerializerSettings"/>. Should be either the application-wide settings /// (<see cref="MvcNewtonsoftJsonOptions.SerializerSettings"/>) or an instance /// <see cref="JsonSerializerSettingsProvider.CreateSerializerSettings"/> initially returned. /// </param> /// <param name="charPool">The <see cref="ArrayPool{T}"/>.</param> /// <param name="mvcOptions">The application's option for configuring MVC.</param> /// <param name="halRepository">The application's HAL+JSON repository.</param> public HalJsonOutputFormatter( JsonSerializerSettings serializerSettings, ArrayPool <char> charPool, MvcOptions mvcOptions, IHalRepository halRepository) : base(serializerSettings, charPool, mvcOptions) { _halRepository = halRepository; SupportedMediaTypes.Clear(); SupportedMediaTypes.Add("application/hal+json"); }