public static IEndpointConventionBuilder UseSoapEndpoint <T_MESSAGE>(this IEndpointRouteBuilder routes, Type type, string pattern, SoapEncoderOptions[] encoders, SoapSerializer serializer = SoapSerializer.DataContractSerializer, bool caseInsensitivePath = false, ISoapModelBounder soapModelBounder = null, Binding binding = null, WsdlFileOptions wsdlFileOptions = null, bool indentXml = true, bool omitXmlDeclaration = true) where T_MESSAGE : CustomMessage, new() { var options = new SoapOptions { Binding = binding, CaseInsensitivePath = caseInsensitivePath, EncoderOptions = encoders, Path = pattern, ServiceType = type, SoapSerializer = serializer, SoapModelBounder = soapModelBounder, WsdlFileOptions = wsdlFileOptions, IndentXml = indentXml, OmitXmlDeclaration = omitXmlDeclaration }; var pipeline = routes .CreateApplicationBuilder() .UseMiddleware <SoapEndpointMiddleware <T_MESSAGE> >(options) .Build(); return(routes.Map(pattern, pipeline) .WithDisplayName("SoapCore")); }
public static IApplicationBuilder UseSoapEndpoint <T>(this IApplicationBuilder builder, Action <SoapCoreOptions> options) { var opt = new SoapCoreOptions(); options(opt); // Generate encoders from Binding when they are not provided if (opt.MessageEncoders is null && opt.Binding != null) { var elements = opt.Binding.CreateBindingElements().FindAll <MessageEncodingBindingElement>(); var encoders = new MessageEncoder[elements.Count]; for (var i = 0; i < encoders.Length; i++) { var factory = elements[i].CreateMessageEncoderFactory(); encoders[i] = factory.Encoder; } opt.MessageEncoders = encoders; } var soapOptions = new SoapOptions { ServiceType = typeof(T), Path = opt.Path, HttpsGetEnabled = opt.HttpsGetEnabled, HttpGetEnabled = opt.HttpGetEnabled, Binding = opt.Binding, CaseInsensitivePath = opt.CaseInsensitivePath, MessageEncoders = opt.MessageEncoders, SoapModelBounder = opt.SoapModelBounder, SoapSerializer = opt.SoapSerializer }; return(builder.UseMiddleware <SoapEndpointMiddleware>(soapOptions)); }
public static IEndpointConventionBuilder UseSoapEndpoint <T, T_MESSAGE>(this IEndpointRouteBuilder routes, Action <SoapCoreOptions> options) where T_MESSAGE : CustomMessage, new() { var opt = new SoapCoreOptions(); options(opt); // Generate encoders from Binding when they are not provided if (opt.EncoderOptions is null && opt.Binding != null) { var elements = opt.Binding.CreateBindingElements().FindAll <MessageEncodingBindingElement>(); var encoderOptions = new SoapEncoderOptions[elements.Count]; for (var i = 0; i < encoderOptions.Length; i++) { var encoderOption = new SoapEncoderOptions { MessageVersion = elements[i].MessageVersion, WriteEncoding = Encoding.UTF8, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; if (elements[i] is TextMessageEncodingBindingElement textMessageEncodingBindingElement) { encoderOption.WriteEncoding = textMessageEncodingBindingElement.WriteEncoding; encoderOption.ReaderQuotas = textMessageEncodingBindingElement.ReaderQuotas; } encoderOptions[i] = encoderOption; } opt.EncoderOptions = encoderOptions; } var soapOptions = new SoapOptions { ServiceType = typeof(T), Path = opt.Path, HttpsGetEnabled = opt.HttpsGetEnabled, HttpGetEnabled = opt.HttpGetEnabled, Binding = opt.Binding, CaseInsensitivePath = opt.CaseInsensitivePath, EncoderOptions = opt.EncoderOptions, SoapModelBounder = opt.SoapModelBounder, SoapSerializer = opt.SoapSerializer, BufferLimit = opt.BufferLimit, BufferThreshold = opt.BufferThreshold, OmitXmlDeclaration = opt.OmitXmlDeclaration, IndentXml = opt.IndentXml }; var pipeline = routes .CreateApplicationBuilder() .UseMiddleware <SoapEndpointMiddleware <T_MESSAGE> >(soapOptions) .Build(); return(routes.Map(soapOptions.Path, pipeline) .WithDisplayName("SoapCore")); }
public static IApplicationBuilder UseSoapEndpoint <T>(this IApplicationBuilder builder, Action <SoapCoreOptions> options) { var opt = new SoapCoreOptions(); options(opt); // Generate encoders from Binding when they are not provided if (opt.EncoderOptions is null && opt.Binding != null) { var elements = opt.Binding.CreateBindingElements().FindAll <MessageEncodingBindingElement>(); var encoderOptions = new SoapEncoderOptions[elements.Count]; for (var i = 0; i < encoderOptions.Length; i++) { var encoderOption = new SoapEncoderOptions { MessageVersion = elements[i].MessageVersion, WriteEncoding = Encoding.UTF8, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; if (elements[i] is TextMessageEncodingBindingElement textMessageEncodingBindingElement) { encoderOption.WriteEncoding = textMessageEncodingBindingElement.WriteEncoding; encoderOption.ReaderQuotas = textMessageEncodingBindingElement.ReaderQuotas; } encoderOptions[i] = encoderOption; } opt.EncoderOptions = encoderOptions; } var soapOptions = new SoapOptions { ServiceType = typeof(T), Path = opt.Path, HttpsGetEnabled = opt.HttpsGetEnabled, HttpGetEnabled = opt.HttpGetEnabled, Binding = opt.Binding, CaseInsensitivePath = opt.CaseInsensitivePath, EncoderOptions = opt.EncoderOptions, SoapModelBounder = opt.SoapModelBounder, SoapSerializer = opt.SoapSerializer, BufferThreshold = opt.BufferThreshold, BufferLimit = opt.BufferLimit }; return(builder.UseMiddleware <SoapEndpointMiddleware>(soapOptions)); }
public static IApplicationBuilder UseSoapEndpoint(this IApplicationBuilder builder, Type type, string path, MessageEncoder encoder, SoapSerializer serializer = SoapSerializer.DataContractSerializer, bool caseInsensitivePath = false, ISoapModelBounder soapModelBounder = null, Binding binding = null) { var options = new SoapOptions { Binding = binding, CaseInsensitivePath = caseInsensitivePath, MessageEncoder = encoder, Path = path, ServiceType = type, SoapSerializer = serializer, SoapModelBounder = soapModelBounder }; return(builder.UseMiddleware <SoapEndpointMiddleware>(options)); }
public static IApplicationBuilder UseSoapEndpoint <T_MESSAGE>(this IApplicationBuilder builder, Type type, string path, SoapEncoderOptions[] encoderOptions, SoapSerializer serializer = SoapSerializer.DataContractSerializer, bool caseInsensitivePath = false, ISoapModelBounder soapModelBounder = null, Binding binding = null, WsdlFileOptions wsdlFileOptions = null) where T_MESSAGE : CustomMessage, new() { var options = new SoapOptions { Binding = binding, CaseInsensitivePath = caseInsensitivePath, EncoderOptions = encoderOptions, Path = path, ServiceType = type, SoapSerializer = serializer, SoapModelBounder = soapModelBounder, WsdlFileOptions = wsdlFileOptions }; return(builder.UseMiddleware <SoapEndpointMiddleware <T_MESSAGE> >(options)); }
public static IEndpointConventionBuilder UseSoapEndpoint <T, T_MESSAGE>(this IEndpointRouteBuilder routes, Action <SoapCoreOptions> options) where T_MESSAGE : CustomMessage, new() { var opt = new SoapCoreOptions(); options(opt); // Generate encoders from Binding when they are not provided if (opt.EncoderOptions is null && opt.Binding != null) { var elements = opt.Binding.CreateBindingElements().FindAll <MessageEncodingBindingElement>(); var encoderOptions = new SoapEncoderOptions[elements.Count]; for (var i = 0; i < encoderOptions.Length; i++) { var encoderOption = new SoapEncoderOptions { MessageVersion = elements[i].MessageVersion, WriteEncoding = Encoding.UTF8, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; if (elements[i] is TextMessageEncodingBindingElement textMessageEncodingBindingElement) { encoderOption.WriteEncoding = textMessageEncodingBindingElement.WriteEncoding; encoderOption.ReaderQuotas = textMessageEncodingBindingElement.ReaderQuotas; } encoderOptions[i] = encoderOption; } opt.EncoderOptions = encoderOptions; } var soapOptions = SoapOptions.FromSoapCoreOptions <T>(opt); var pipeline = routes .CreateApplicationBuilder() .UseMiddleware <SoapEndpointMiddleware <T_MESSAGE> >(soapOptions) .Build(); return(routes.Map(soapOptions.Path, pipeline) .WithDisplayName("SoapCore")); }
public static IEndpointConventionBuilder UseSoapEndpoint(this IEndpointRouteBuilder routes, Type type, string pattern, SoapEncoderOptions[] encoders, SoapSerializer serializer = SoapSerializer.DataContractSerializer, bool caseInsensitivePath = false, ISoapModelBounder soapModelBounder = null, Binding binding = null) { var options = new SoapOptions { Binding = binding, CaseInsensitivePath = caseInsensitivePath, EncoderOptions = encoders, Path = pattern, ServiceType = type, SoapSerializer = serializer, SoapModelBounder = soapModelBounder }; var pipeline = routes .CreateApplicationBuilder() .UseMiddleware <SoapEndpointMiddleware>(options) .Build(); return(routes.Map(pattern, pipeline) .WithDisplayName("SoapCore")); }
public static SoapOptions FromSoapCoreOptions <T>(SoapCoreOptions opt) { var soapOptions = new SoapOptions { ServiceType = typeof(T), Path = opt.Path, EncoderOptions = opt.EncoderOptions, SoapSerializer = opt.SoapSerializer, CaseInsensitivePath = opt.CaseInsensitivePath, SoapModelBounder = opt.SoapModelBounder, Binding = opt.Binding, BufferThreshold = opt.BufferThreshold, BufferLimit = opt.BufferLimit, HttpsGetEnabled = opt.HttpsGetEnabled, HttpGetEnabled = opt.HttpGetEnabled, OmitXmlDeclaration = opt.OmitXmlDeclaration, IndentXml = opt.IndentXml, XmlNamespacePrefixOverrides = opt.XmlNamespacePrefixOverrides }; return(soapOptions); }
public SoapEndpointMiddleware(ILogger <SoapEndpointMiddleware> logger, RequestDelegate next, SoapOptions options) { _logger = logger; _next = next; _options = options; _endpointPath = options.Path; _serializer = options.SoapSerializer; _serializerHelper = new SerializerHelper(_serializer); _pathComparisonStrategy = options.CaseInsensitivePath ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; _service = new ServiceDescription(options.ServiceType); _soapModelBounder = options.SoapModelBounder; _binding = options.Binding; _httpGetEnabled = options.HttpGetEnabled; _httpsGetEnabled = options.HttpsGetEnabled; _messageEncoders = new SoapMessageEncoder[options.EncoderOptions.Length]; for (var i = 0; i < options.EncoderOptions.Length; i++) { _messageEncoders[i] = new SoapMessageEncoder(options.EncoderOptions[i].MessageVersion, options.EncoderOptions[i].WriteEncoding, options.EncoderOptions[i].ReaderQuotas); } }
public SoapEndpointMiddleware(ILogger <SoapEndpointMiddleware <T_MESSAGE> > logger, RequestDelegate next, SoapOptions options) { _logger = logger; _next = next; _options = options; _endpointPath = options.Path; _serializer = options.SoapSerializer; _serializerHelper = new SerializerHelper(_serializer); _pathComparisonStrategy = options.CaseInsensitivePath ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; _service = new ServiceDescription(options.ServiceType); _soapModelBounder = options.SoapModelBounder; _binding = options.Binding; _httpGetEnabled = options.HttpGetEnabled; _httpsGetEnabled = options.HttpsGetEnabled; _xmlNamespaceManager = options.XmlNamespacePrefixOverrides ?? Namespaces.CreateDefaultXmlNamespaceManager(); Namespaces.AddDefaultNamespaces(_xmlNamespaceManager); _messageEncoders = new SoapMessageEncoder[options.EncoderOptions.Length]; for (var i = 0; i < options.EncoderOptions.Length; i++) { _messageEncoders[i] = new SoapMessageEncoder(options.EncoderOptions[i].MessageVersion, options.EncoderOptions[i].WriteEncoding, options.EncoderOptions[i].ReaderQuotas, options.OmitXmlDeclaration, options.IndentXml); } }
public SoapEndpointMiddleware(ILogger <SoapEndpointMiddleware> logger, RequestDelegate next, SoapOptions options) : this(logger, next, options.ServiceType, options.Path, options.MessageEncoders, options.SoapSerializer, options.CaseInsensitivePath, options.SoapModelBounder, options.Binding) { }