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"); }
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); }