public List Resolve()

in aliyun-net-sdk-core/Regions/Endpoints/EndpointResolve.cs [26:93]


        public List<Endpoint> Resolve(string product, string regionId, string serviceCode, string endpointType,
            Credential credential, LocationConfig locationConfig)
        {
            try
            {
                if (product == null)
                {
                    return _endpoints;
                }

                if (_endpoints.FirstOrDefault(x => x.Name == product) != null)
                {
                    var endpoint = internalEndpointProvider.GetEndpoint(regionId, product);

                    if (serviceCode != null && endpoint == null)
                    {
                        endpoint = remoteEndpointProvider.GetEndpoint(regionId, product, serviceCode, endpointType,
                            credential, locationConfig);
                    }

                    if (endpoint != null)
                    {
                        foreach (var region in endpoint.RegionIds)
                        {
                            foreach (var productDomain in endpoint.ProductDomains.ToList())
                            {
                                AddEndpoint(endpoint.Name, region, product, productDomain.DomainName);
                                CacheTimeHelper.AddLastClearTimePerProduct(product, region, DateTime.UtcNow);
                            }
                        }
                    }
                    else
                    {
                        throw new ClientException("SDK.InvalidRegionId", "Can not find endpoint to access.");
                    }
                }
                else if (Endpoint.FindProductDomain(regionId, product, _endpoints) == null ||
                    CacheTimeHelper.CheckCacheIsExpire(product, regionId))
                {
                    var endpoint = internalEndpointProvider.GetEndpoint(regionId, product);

                    if (serviceCode != null && endpoint == null)
                    {
                        endpoint = remoteEndpointProvider.GetEndpoint(regionId, product, serviceCode, endpointType,
                            credential, locationConfig);
                    }

                    if (endpoint != null)
                    {
                        foreach (var region in endpoint.RegionIds)
                        {
                            foreach (var productDomain in endpoint.ProductDomains.ToList())
                            {
                                AddEndpoint(endpoint.Name, region, product, productDomain.DomainName);
                                CacheTimeHelper.AddLastClearTimePerProduct(product, region, DateTime.UtcNow);
                            }
                        }
                    }
                }
            }
            catch (ClientException ex)
            {
                CommonLog.LogException(ex, ex.ErrorCode, ex.ErrorMessage);
                throw new ClientException(ex.ErrorCode, ex.ErrorMessage);
            }

            return _endpoints;
        }