private async void BeginSearch() { _flickrSearchRequest.Tags = txtSearchBox.Text.Trim(); FlickrSearchResponse response = await _flickrSearchService.GetServiceResponse(); bwDownloadImages.RunWorkerAsync(response); if (response != null) { if (response.stat == Constants.SEARCH_OK) { if (response.photos != null && response.photos.total == 0) { lblImageResult.Text = "No record found!"; } else { lblImageResult.Text = "Images for " + _flickrSearchRequest.Tags; } } else { lblErrorMessage.Text = response.message; lblImageResult.Text = string.Empty; } } }
/* * Deserialize the response received as JSON or XML */ private FlickrSearchResponse DeserializeResponse(string responseString) { FlickrSearchResponse photoResults = null; try { if (_request.Format == eSupportedFormat.JSON) { photoResults = JsonConvert.DeserializeObject <FlickrSearchResponse>(responseString); } else if (_request.Format == eSupportedFormat.REST) { XmlSerializer serializer = new XmlSerializer(typeof(FlickrSearchResponse)); using (var stringreader = new StringReader(responseString)) { photoResults = (FlickrSearchResponse)serializer.Deserialize(stringreader); } } } catch (Exception ex) { Logger.WriteLog("Exception in function DeserializeResponse"); Logger.WriteLog(ex.Message); } return(photoResults); }
/* * Function to download the image and resize it to the given size */ private int BackgroundProcessPhotoDownload(BackgroundWorker bw, FlickrSearchResponse flickrSearchResponse) { int result = 0; if (flickrSearchResponse != null && flickrSearchResponse.photos != null && flickrSearchResponse.photos.photo != null) { foreach (var photo in flickrSearchResponse.photos.photo) { if (bw.CancellationPending) { break; } string baseFlickrUrl = string.Format(Constants.PHOTO_URL, photo.farm, photo.server, photo.id, photo.secret); PictureBox eachPictureBox = new PictureBox(); eachPictureBox.Image = Util.DownloadImageFromUrl(baseFlickrUrl); eachPictureBox.Image = Util.ResizeImage(eachPictureBox.Image, Constants.IMAGE_RESIZE_WIDTH, Constants.IMAGE_RESIZE_HEIGHT); eachPictureBox.SizeMode = PictureBoxSizeMode.AutoSize; eachPictureBox.Anchor = AnchorStyles.Top | AnchorStyles.Left; //Display image in the UI this.Invoke(new Action(() => this.panelSearchResult.Controls.Add(eachPictureBox))); } } return(result); }
private void bwDownloadImages_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker helperBW = sender as BackgroundWorker; FlickrSearchResponse arg = (FlickrSearchResponse)e.Argument; //Clear all pictures before adding new this.Invoke(new Action(() => { panelSearchResult.Controls.Clear(); })); e.Result = BackgroundProcessPhotoDownload(helperBW, arg); if (helperBW.CancellationPending) { e.Cancel = true; } }
public async Task <FlickrSearchResponse> GetServiceResponse() { FlickrSearchResponse response = null; try { if (_httpResponse != null) { var searchResults = await _httpResponse.GetAsync(_request.URI); if (!string.IsNullOrEmpty(searchResults)) { response = DeserializeResponse(searchResults); } } } catch (Exception ex) { Logger.WriteLog("Exception in function GetServiceResponse"); Logger.WriteLog(ex.Message); } return(response); }