Exemplo n.º 1
0
        public static string GetUrlTemplate(HttpCommunicatorSettings settings)
        {
            var url = settings.Url;

            if (string.IsNullOrEmpty(url))
            {
                var address = settings.Address;
                if (string.IsNullOrEmpty(address))
                {
                    var scheme = settings.Https == true ? "https" : "http";
                    var host   = !string.IsNullOrEmpty(settings.Host) ? settings.Host : "{serviceName}";
                    address = scheme + "://" + host;
                    if (settings.Port != null)
                    {
                        address += ":" + settings.Port;
                    }
                }

                if (address.EndsWith("/"))
                {
                    address = address.Substring(0, address.Length - 1);
                }

                var path = settings.Path;
                if (string.IsNullOrEmpty(path))
                {
                    var apiSegment = !string.IsNullOrEmpty(settings.ApiSegment) ? settings.ApiSegment : "/api";
                    if (!apiSegment.StartsWith("/"))
                    {
                        apiSegment = "/" + apiSegment;
                    }

                    var methodPath = !string.IsNullOrEmpty(settings.MethodPath) ? settings.MethodPath : "/{serviceName}/{methodName}";
                    if (!methodPath.StartsWith("/"))
                    {
                        methodPath = "/" + methodPath;
                    }

                    path = apiSegment + methodPath;
                }

                if (!path.StartsWith("/"))
                {
                    path = "/" + path;
                }

                url = address + path;
            }
            return(url);
        }
Exemplo n.º 2
0
        public ICommunicator CreateCommunicator(IConfiguration configuration)
        {
            var settings = new HttpCommunicatorSettings();

            configuration.Bind(settings);

            var serializer = string.IsNullOrEmpty(settings.Serializer)
                ? _defaultSerializer
                : _serializerProvider.GetSerializer(settings.Serializer);
            var compressPayload = settings.Compress ?? false;
            var urlTemplate     = GetUrlTemplate(settings);

            return(new HttpCommunicator(serializer, urlTemplate, compressPayload));
        }