Exemplo n.º 1
0
        private string makeDetailQuerySuffic(ImageDetailRequest meta)
        {
            var baseQuery = $"services/rest/?method=flickr.photos.getInfo&api_key={this.api_key}";

            baseQuery += "&format=json&nojsoncallback=1";
            baseQuery += $"&photo_id={meta.ImageId}";

            return(baseQuery);
        }
        public void getImageDetail_Test1()
        {
            var imageDetailRequest = new ImageDetailRequest();

            imageDetailRequest.ImageId = "32524464838";
            var result       = _searchController.getImageDetail(imageDetailRequest) as ObjectResult;
            var responseData = result.Value as ImageDetailResponse;

            Assert.AreEqual(responseData.Owner.ToLower(), "swanson.matt");
        }
Exemplo n.º 3
0
        public IActionResult getImageDetail([FromBody] ImageDetailRequest meta)
        {
            var imageDetailResponse = new ImageDetailResponse();

            if (string.IsNullOrWhiteSpace(meta.ImageId))
            {
                imageDetailResponse.HasError     = true;
                imageDetailResponse.ErrorMessage = "imageId must be supplied.";
                var errorResponse = new ObjectResult(imageDetailResponse);
                errorResponse.StatusCode = 200;
                return(errorResponse);
            }

            var cacheKey = GetMD5Hash(meta.ImageId);

            string cacheResult = "";

            if (EnableCaching)
            {
                cacheResult = _distributedCache.GetString(cacheKey);
            }

            if (!string.IsNullOrEmpty(cacheResult))
            {
                ProceesDetailResponse(cacheResult, imageDetailResponse);
            }
            else
            {
                using (HttpClient client = new HttpClient())
                {
                    client.BaseAddress = new Uri("https://api.flickr.com/");

                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(
                        new MediaTypeWithQualityHeaderValue("application/json"));

                    var querySuffix = makeDetailQuerySuffic(meta);

                    HttpResponseMessage flickrResponse = client.GetAsync(querySuffix).Result;
                    if (flickrResponse.IsSuccessStatusCode)
                    {
                        string jsonResult = flickrResponse.Content.ReadAsStringAsync().Result;

                        ProceesDetailResponse(jsonResult, imageDetailResponse);
                        if (!imageDetailResponse.HasError)
                        {
                            if (EnableCaching)
                            {
                                var options = new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(CacheSeconds));
                                _distributedCache.SetString(cacheKey, jsonResult, options);
                            }
                        }
                    }
                    else
                    {
                        imageDetailResponse.HasError     = true;
                        imageDetailResponse.ErrorMessage = $"request Failed with statusCode: { flickrResponse.StatusCode.ToString() }, reason: { flickrResponse.ReasonPhrase }";
                    }
                }
            }

            var response = new ObjectResult(imageDetailResponse);

            response.StatusCode = 200;
            return(response);
        }