Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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"));
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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"));
        }
Exemplo n.º 8
0
        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"));
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
 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)
 {
 }