示例#1
0
 public GetImageUrlResponseWrapper GetImageUrl(GetImageUrlRequestWrapper getImageUrlRequestWrapper)
 {
     return(this.integrationService.GetImageUrl(getImageUrlRequestWrapper));
 }
示例#2
0
        public GetImageUrlResponseWrapper GetImageUrl(GetImageUrlRequestWrapper getImageUrlRequestWrapper)
        {
            var returnResponse = new GetImageUrlResponseWrapper
            {
                GetImageUrlResponse = new List <GetImageUrlResponse>(),
                RepositoryFound     = false
            };

            this._supportedRespository = ReturnSupportedRespository(getImageUrlRequestWrapper.Repository);
            if (getImageUrlRequestWrapper?.GetImageUrlRequest == null || this._supportedRespository == null || !getImageUrlRequestWrapper.GetImageUrlRequest.Any())
            {
                return(returnResponse);
            }
            returnResponse.RepositoryFound = true;

            var amendedRequest = new List <GetImageUrlRequest>();

            getImageUrlRequestWrapper.GetImageUrlRequest = getImageUrlRequestWrapper.GetImageUrlRequest.DistinctBy(x => x.CombinedKey).ToList();
            if (this._progressConfiguration.InforIdmUseCache && !getImageUrlRequestWrapper.IgnoreCache)
            {
                foreach (var request in getImageUrlRequestWrapper.GetImageUrlRequest)
                {
                    var key    = $"{this._supportedRespository.IdmRepository}|{request.CombinedKey}";
                    var appHit = this._appCache.Get <string>(Majorbucket, key);
                    if (appHit != null)
                    {
                        returnResponse.GetImageUrlResponse.Add(new GetImageUrlResponse {
                            Key = request.Key, ImageType = request.ImageType, Url = appHit, ValidMinutes = this._tokenObject.InforIdmCacheExpirationAbsolute / 2
                        });
                    }
                    else
                    {
                        amendedRequest.Add(request);
                    }
                }
            }
            else
            {
                amendedRequest = getImageUrlRequestWrapper.GetImageUrlRequest;
            }

            if (!amendedRequest.Any())
            {
                return(returnResponse);
            }

            var responseFromCall = this.ReturnUrlFromCall(amendedRequest, out var inError);

            if (inError)
            {
                returnResponse.InError = true;
                return(returnResponse);
            }

            foreach (var response in responseFromCall)
            {
                returnResponse.GetImageUrlResponse.Add(response);
                if (!this._progressConfiguration.InforIdmUseCache || getImageUrlRequestWrapper.IgnoreCache)
                {
                    continue;
                }

                var key    = $"{this._supportedRespository.IdmRepository}|{response.CombinedKey}";
                var appHit = this._appCache.Get <string>(Majorbucket, key);
                if (appHit != null)
                {
                    continue;
                }
                if (this._tokenObject.InforIdmCacheExpirationAbsolute == 0)
                {
                    this._tokenObject.InforIdmCacheExpirationAbsolute = 60;
                }
                this._appCache.Add(Majorbucket, key, response.Url, new CacheItemPolicy {
                    AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(this._tokenObject.InforIdmCacheExpirationAbsolute)
                });
            }
            return(returnResponse);
        }