Exemplo n.º 1
0
        public UrlTemplate GetUrlTemplate(MethodInfo methodInfo)
        {
            var serviceAttribute = methodInfo.DeclaringType.GetCustomAttribute <ConsulServiceAttribute>();

            if (serviceAttribute != null)
            {
                var serviceName   = serviceAttribute.ServiceName;
                var pathAttribute = methodInfo.GetCustomAttribute <ConsulPathAttribute>();
                if (pathAttribute != null)
                {
                    var urlPath     = pathAttribute.Path;
                    var httpMethod  = pathAttribute.HttpMethod;
                    var loadBalance = LoadBalanceRepository.GetLoadBalance(methodInfo.DeclaringType.FullName);
                    var serviceInfo = _consulInfoProvider.GetServiceInfo(serviceName, loadBalance);
                    if (serviceInfo == null)
                    {
                        throw new Exception($"Can't find {serviceName} in Consul");
                    }
                    var host = serviceInfo.Address.StartsWith("http") ? serviceInfo.Address : $"http://{serviceInfo.Address}";
                    return(new UrlTemplate
                    {
                        Host = $"{host}:{serviceInfo.ServicePort}",
                        HttpMethod = httpMethod,
                        Url = urlPath
                    });
                }
            }

            return(HttpRequestUtil.BuildUrlTemplate(methodInfo));
        }
 public UrlTemplate GetUrlTemplate(MethodInfo methodInfo)
 => HttpRequestUtil.BuildUrlTemplate(methodInfo);