public ProtobufInputFormatter(ProtobufFormatterOptions protobufFormatterOptions) { _options = protobufFormatterOptions ?? throw new ArgumentNullException(nameof(protobufFormatterOptions)); foreach (var contentType in protobufFormatterOptions.SupportedContentTypes) { SupportedMediaTypes.Add(new MediaTypeHeaderValue(contentType)); } foreach (var surrogate in protobufFormatterOptions.Surrogates) { model.Value.Add(surrogate.Key, false).SetSurrogate(surrogate.Value); } }
public static IMvcCoreBuilder AddProtobufFormatters(this IMvcCoreBuilder builder, Action <ProtobufFormatterOptions> protobufFormatterOptionsConfiguration) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var protobufFormatterOptions = new ProtobufFormatterOptions(); protobufFormatterOptionsConfiguration?.Invoke(protobufFormatterOptions); foreach (var extension in protobufFormatterOptions.SupportedExtensions) { foreach (var contentType in protobufFormatterOptions.SupportedContentTypes) { builder.AddFormatterMappings(m => m.SetMediaTypeMappingForFormat(extension, new MediaTypeHeaderValue(contentType))); } } builder.AddMvcOptions(options => options.InputFormatters.Add(new ProtobufInputFormatter(protobufFormatterOptions))); builder.AddMvcOptions(options => options.OutputFormatters.Add(new ProtobufOutputFormatter(protobufFormatterOptions))); return(builder); }