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 GetProcessor().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 GetProcessor().SaveSnapshotAsync(request.DataId, request.Group, request.Tenant, config); return(config); } config = await GetProcessor().GetSnapshotAync(request.DataId, request.Group, request.Tenant); return(config); }
private async Task <string> DoGetConfigAsync(GetConfigRequest request) { var responseMessage = await GetAgent().GetAsync(RequestPathValue.CONFIGS, null, request.ToDict()); switch (responseMessage.StatusCode) { case System.Net.HttpStatusCode.OK: var result = await responseMessage.Content.ReadAsStringAsync(); return(result); case System.Net.HttpStatusCode.NotFound: await GetProcessor().SaveSnapshotAsync(GetAgent().GetName(), request.DataId, request.Group, request.Tenant, null); return(null); case System.Net.HttpStatusCode.Forbidden: throw new NacosException(ConstValue.NO_RIGHT, $"Insufficient privilege."); default: throw new NacosException((int)responseMessage.StatusCode, responseMessage.StatusCode.ToString()); } }
private async Task <string> DoGetConfigAsync(GetConfigRequest request) { var responseMessage = await _clientFactory.DoRequestAsync(HttpMethod.Get, $"{GetBaseUrl()}{RequestPathValue.CONFIGS}", request.ToQueryString(), _options.DefaultTimeOut); switch (responseMessage.StatusCode) { case System.Net.HttpStatusCode.OK: var result = await responseMessage.Content.ReadAsStringAsync(); return(result); 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: throw new NacosException((int)responseMessage.StatusCode, responseMessage.StatusCode.ToString()); } }