Exemplo n.º 1
0
        private ProjectResponse GetSr(MyProjectEntity project)
        {
            var uri   = new Uri(project.InterfaceUrl);
            var query = uri.Query;

            if (string.IsNullOrEmpty(query))
            {
                Log.Error("没有设置TA,project name:{0}", project.ProjectName);
                return(null);
            }

            var key    = string.Format(CachePreFixFormat, project.Id);
            var result = _cacheManager.Get(key);

            if (result != null)
            {
                var cached = (ProjectResponse)result;
                if (cached.LastUpdateTime < project.UpdatedDate.GetValueOrDefault())
                {
                    _cacheManager.Remove(key);
                }
                else
                {
                    return(cached);
                }
            }

            var view = new ProjectView {
                appId = project.AppId, appSignKey = project.SignKey, BUList = query.Split('=')[1]
            };

            var signString = view.GetSignQueryString();

            Log.Debug("need to sign {0}.", signString);

            view.sign = EncryptionHelper.Encryption(signString);

            var client = new HttpClient();

            try
            {
                var parameter = view.GetQueryString();

                var url = new UriBuilder(uri)
                {
                    Query = parameter
                };

                var responseString = client.GetStringAsync(url.ToString()).Result;

                var response = JsonConvert.DeserializeObject <ProjectResponse>(responseString);

                if (response.success)
                {
                    response.LastUpdateTime = project.UpdatedDate.GetValueOrDefault();
                    _cacheManager.Get(key, () => response);
                    return(response);
                }

                Log.Debug("获取sr返回失败,project name:{0}message:{1}", project.ProjectName, response.message);
            }
            catch (Exception e)
            {
                Log.Error(e, "get response error.");
            }

            return(null);
        }