internal GetConfigResponse GetConfig(GetConfigRequest request)
        {
            var marshaller   = new GetConfigRequestMarshaller();
            var unmarshaller = GetConfigResponseUnmarshaller.Instance;

            return(Invoke <GetConfigRequest, GetConfigResponse>(request, marshaller, unmarshaller));
        }
示例#2
0
        private async Task LoadConfig()
        {
            try
            {
                var request = new GetConfigRequest
                {
                    DataId = _application
                };
                if (!string.IsNullOrWhiteSpace(_config.Group))
                {
                    request.Group = _config.Group;
                }
                if (!string.IsNullOrWhiteSpace(_config.Tenant))
                {
                    request.Tenant = _config.Tenant;
                }
                var config = await _client.GetConfigAsync(request);

                _listenerHelper.UpdateCache(request, config);
                Data.Clear();
                if (!string.IsNullOrWhiteSpace(config))
                {
                    LoadJson(config);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"加载配置[{_application}]异常:{ex.Message}");
            }
        }
示例#3
0
        public static string Get(string env, string dataId, string group, string tenant)
        {
            GetConfigRequest getConfigRequest = new GetConfigRequest();

            getConfigRequest.DataId = dataId;
            getConfigRequest.Group  = group;
            getConfigRequest.Tenant = tenant;

            string config;

            try
            {
                var response = getConfigRequest.DoRequest();
                config = response.Content;
                LocalConfigInfoProcessor.SaveSnapshot(env, dataId, group, tenant, config);
            }
            catch (Exception e)
            {
                LogUtil.Error("获取配置异常,开始从本地获取配置, message: " + e.Message);
                config = LocalConfigInfoProcessor.GetFailover(env, dataId, group, tenant);
                config = string.IsNullOrEmpty(config) ? LocalConfigInfoProcessor.GetSnapshot(env, dataId, group, tenant) : config;
            }

            return(config);
        }
        /// <summary>
        /// Initiates the asynchronous execution of the GetConfig operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetConfig operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public Task <GetConfigResponse> GetConfigAsync(GetConfigRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new GetConfigRequestMarshaller();
            var unmarshaller = GetConfigResponseUnmarshaller.Instance;

            return(InvokeAsync <GetConfigRequest, GetConfigResponse>(request, marshaller,
                                                                     unmarshaller, cancellationToken));
        }
示例#5
0
        public async Task GetTest()
        {
            var request = new GetConfigRequest
            {
                DataId = "redis"
            };
            var config = await _client.GetConfigAsync(request);

            Print(config);
        }
        public void DoRequestTest()
        {
            GetConfigRequest getConfigRequest = new GetConfigRequest();

            getConfigRequest.DataId = "LARAVEL";
            getConfigRequest.Group  = "DEFAULT_GROUP";
            getConfigRequest.Tenant = "";

            var response = getConfigRequest.DoRequest();

            Assert.IsInstanceOfType(response, typeof(IRestResponse));
            Console.WriteLine(response.Content);
        }
        public async Task GetConfig_Should_Succeed()
        {
            var request = new GetConfigRequest
            {
                DataId = "dataId",
                Group  = "DEFAULT_GROUP",
                //Tenant = "tenant"
            };

            var res = await _configClient.GetConfigAsync(request);

            Assert.NotNull(res);
            Assert.Equal("test", res);
        }
        protected internal async Task <string> RemoteLoadAsync(string dataId, string group, bool isRefreable)
        {
            // Get client if not already set
            if (_client == null)
            {
                _client = GetNacosClient(_settings, _clientFactory, _processor, _loggerFactory);
            }

            GetConfigRequest request = new GetConfigRequest()
            {
                DataId = dataId,
                Group  = group,
            };

            if (isRefreable)
            {
                AddListenerRequest addListenerRequest = new AddListenerRequest()
                {
                    DataId = dataId, Group = group, Callbacks = new List <Action <string> > {
                        x => { AddPropertySource(Deserialize(dataId, x)); }
                    }
                };

                _client.AddListenerAsync(addListenerRequest);
            }

            Exception error = null;

            try
            {
                var result = await _client.GetConfigAsync(request);

                return(result);
            }
            catch (Exception e)
            {
                error = e;
            }


            if (error != null)
            {
                throw error;
            }

            return(string.Empty);
        }
示例#9
0
        public async Task <string> GetConfigAsync(GetConfigRequest request)
        {
            if (request == null)
            {
                throw new NacosException(ConstValue.CLIENT_INVALID_PARAM, "request param invalid");
            }

            request.Tenant = string.IsNullOrWhiteSpace(request.Tenant) ? _options.Namespace : request.Tenant;
            request.Group  = string.IsNullOrWhiteSpace(request.Group) ? ConstValue.DefaultGroup : request.Group;

            request.CheckParam();

            // read from local cache at first
            var config = await _processor.GetFailoverAsync(request.DataId, request.Group, request.Tenant);

            if (!string.IsNullOrWhiteSpace(config))
            {
                _logger.LogInformation($"[get-config] get failover ok, dataId={request.DataId}, group={request.Group}, tenant={request.Tenant}, config ={config}");
                return(config);
            }

            try
            {
                config = await DoGetConfigAsync(request);
            }
            catch (NacosException ex)
            {
                if (ConstValue.NO_RIGHT == ex.ErrorCode)
                {
                    throw;
                }

                _logger.LogWarning($"[get-config] get from server error, dataId={request.DataId}, group={request.Group}, tenant={request.Tenant}, msg={ex.Message}");
            }

            if (!string.IsNullOrWhiteSpace(config))
            {
                _logger.LogInformation($"[get-config] content from server {config}, dataId={request.DataId}, group={request.Group}, tenant={request.Tenant}");
                await _processor.SaveSnapshotAsync(request.DataId, request.Group, request.Tenant, config);

                return(config);
            }

            config = await _processor.GetSnapshotAync(request.DataId, request.Group, request.Tenant);

            return(config);
        }
示例#10
0
        public GetConfigResponse Execute(GetConfigRequest request)
        {
            var response = new GetConfigResponse();

            var configSettings = new Models.ConfigSettings
            {
                AvailableColor = getAvailableColor(),
                BusyColor = getBusyColor(),
                CompanyLogoImage = getCompanyLogoImage(),
                PollingIntervalSeconds = getPollingIntervalSeconds(),
                AvailableRoomText = getAvailableRoomText(),
                BusyRoomText = getBusyRoomText(),
                AdminMenuPassword = getAdminMenuPassword()
            };
            response.ConfigSettings = configSettings;
            response.Success = true;

            return response;
        }
示例#11
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            GetConfigRequest request;

            try
            {
                request = new GetConfigRequest
                {
                    ApmDomainId  = ApmDomainId,
                    ConfigId     = ConfigId,
                    OpcRequestId = OpcRequestId
                };

                response = client.GetConfig(request).GetAwaiter().GetResult();
                WriteOutput(response, response.Config);
                FinishProcessing(response);
            }
            catch (Exception ex)
            {
                TerminatingErrorDuringExecution(ex);
            }
        }
示例#12
0
        private async Task <string> DoGetConfigAsync(GetConfigRequest request)
        {
            var item = 0;
            var urls = GetBaseUrls();

            foreach (var url in urls)
            {
                var responseMessage = await _clientFactory.DoRequestAsync(HttpMethod.Get, $"{url}/nacos/v1/cs/configs", request.ToQueryString(), _options.DefaultTimeOut);

                switch (responseMessage.StatusCode)
                {
                case System.Net.HttpStatusCode.OK:
                    //var stream = await responseMessage.Content.ReadAsStreamAsync();
                    //var result = await responseMessage.Content.ReadAsStringAsync();
                    return(await responseMessage.Content.ReadAsStringAsync());

                //return ConvertJsonString(stream);
                case System.Net.HttpStatusCode.NotFound:
                    await _processor.SaveSnapshotAsync(request.DataId, request.Group, request.Tenant, null);

                    return(null);

                case System.Net.HttpStatusCode.Forbidden:
                    throw new NacosException(ConstValue.NO_RIGHT, $"Insufficient privilege.");

                default:
                    if (item == urls.Count - 1)
                    {
                        throw new NacosException((int)responseMessage.StatusCode, responseMessage.StatusCode.ToString());
                    }
                    break;
                    //
                }
                item++;
            }
            return(null);
        }
示例#13
0
 /// <summary>
 /// Gets the configuration for the user generated content catalog.
 /// </summary>
 public static void GetUgcConfig(GetConfigRequest request, Action <GetConfigResult> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
 {
     PlayFabHttp.MakeApiCall("/UserGeneratedContent/GetUgcConfig", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders);
 }
示例#14
0
 public GetConfigResult Get(GetConfigRequest key) =>
 this.CreateService <IGetConfigSvc, GetConfigRequest, GetConfigResult>(this._getConfigSvc, key);
示例#15
0
 public Task <IResponse <GetConfigResult> > GetConfigAsync(GetConfigRequest request)
 {
     return(SendRequestAsync <GetConfigResult>(
                new HttpRequestMessageBuilder(HttpMethod.Get, $"/configs/{request.ConfigName}"),
                project: request.ProjectName));
 }