Пример #1
0
        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;
                }
            }
        }
Пример #2
0
        /*
         * 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);
        }
Пример #3
0
        /*
         * 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);
        }
Пример #4
0
        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;
            }
        }
Пример #5
0
        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);
        }