private void ShowPicturesOnScreeen(ResultMediaItems resultMediaItem)
        {
            pnlPictures.Controls.Clear();

            for (int i = 0; i < resultMediaItem.MediaItems.Count; i++)
            {
                MediaItemData mediaItem = resultMediaItem.MediaItems[i];

                PictureBox pbxMedia = new PictureBox();
                pbxMedia.Height   = 200;
                pbxMedia.Width    = 220;
                pbxMedia.Image    = Utilities.GetBmpFromGoogleUrl(mediaItem.BaseUrl + "=w220-h200-c");
                pbxMedia.SizeMode = PictureBoxSizeMode.CenterImage;
                pnlPictures.Controls.Add(pbxMedia);
            }

            btnPrevious.Visible = false;
            btnNext.Visible     = false;

            if (resultMediaItem.HasPreviousPage)
            {
                btnPrevious.Visible = true;
            }

            if (resultMediaItem.HasNextPage)
            {
                btnNext.Visible = true;
            }
        }
        public ResultMediaItems ListPreviousMediaItems(string albumId = "")
        {
            ResultMediaItems resultListMediaItems = new ResultMediaItems();

            try
            {
                Dictionary <string, string> dictParam = new Dictionary <string, string>();
                dictParam.Add("pageSize", "100");

                if (albumId != string.Empty)
                {
                    dictParam.Add("albumId", albumId);
                    resultListMediaItems = CallListMediaGooglePhotosApi(GoogleConstants.URL_SEARCH_MEDIA_ITEMS, Method.POST, dictParam);
                }
                else
                {
                    if (counterIndexPageToken > 0)
                    {
                        counterIndexPageToken--;
                    }

                    string pageToken = listPageToken.ElementAt(counterIndexPageToken);

                    dictParam.Add("pageToken", pageToken);
                    resultListMediaItems = CallListMediaGooglePhotosApi(GoogleConstants.URL_LIST_MEDIA_ITEMS, Method.GET, dictParam);
                }
            }
            catch (Exception ex)
            {
            }

            return(resultListMediaItems);
        }
        public ResultMediaItems ListMediaItems(string albumId = "")
        {
            ResultMediaItems resultListMediaItems = new ResultMediaItems();

            try
            {
                counterIndexPageToken = 0;

                listPageToken = new List <string>();
                listPageToken.Add(string.Empty);

                Dictionary <string, string> dictParam = new Dictionary <string, string>();
                dictParam.Add("pageSize", "100");

                if (albumId != string.Empty)
                {
                    dictParam.Add("albumId", albumId);
                    resultListMediaItems = CallListMediaGooglePhotosApi(GoogleConstants.URL_SEARCH_MEDIA_ITEMS, Method.POST, dictParam);
                }
                else
                {
                    resultListMediaItems = CallListMediaGooglePhotosApi(GoogleConstants.URL_LIST_MEDIA_ITEMS, Method.GET, dictParam);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Erro: " + ex.Message);
            }

            return(resultListMediaItems);
        }
        private void btnPrevious_Click(object sender, EventArgs e)
        {
            ResultMediaItems result = GooglePhotosInterface.Instance.ListPreviousMediaItems();

            if (result.ResultCode == "OK")
            {
                ShowPicturesOnScreeen(result);
            }
            else
            {
                MessageBox.Show(result.ResultMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void LoadPictures(string albumId)
        {
            ResultMediaItems result = new ResultMediaItems();

            if (albumId != string.Empty)
            {
                result = GooglePhotosInterface.Instance.ListMediaItems(albumId);
            }
            else
            {
                result = GooglePhotosInterface.Instance.ListMediaItems();
            }

            if (result.ResultCode == "OK")
            {
                ShowPicturesOnScreeen(result);
            }
            else
            {
                MessageBox.Show(result.ResultMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private ResultMediaItems CallListMediaGooglePhotosApi(string url, Method method, Dictionary <string, string> dictParam)
        {
            IRestResponse    response             = null;
            ResultMediaItems resultListMediaItems = new ResultMediaItems();

            try
            {
                Uri uri = new Uri(url);

                RestClient  client  = new RestClient(uri);
                RestRequest request = new RestRequest(method);
                request.RequestFormat = DataFormat.Json;
                request.AddHeader("Authorization", "Bearer " + this.accessToken);

                for (int i = 0; i < dictParam.Count; i++)
                {
                    request.AddParameter(dictParam.ElementAt(i).Key, dictParam.ElementAt(i).Value);
                }

                response = client.Execute(request);

                if (response.IsSuccessful)
                {
                    ResultMediaItems resultMediaItems = JsonConvert.DeserializeObject <ResultMediaItems>(response.Content);
                    resultListMediaItems.MediaItems    = resultMediaItems.MediaItems;
                    resultListMediaItems.ResultCode    = response.StatusCode.ToString();
                    resultListMediaItems.ResultMessage = (response.ErrorMessage == "null") ? string.Empty : response.ErrorMessage;

                    if (resultMediaItems.NextPageToken != null &&
                        resultMediaItems.NextPageToken != string.Empty &&
                        !listPageToken.Contains(resultMediaItems.NextPageToken))
                    {
                        resultListMediaItems.HasNextPage = true;
                        listPageToken.Add(resultMediaItems.NextPageToken);
                    }
                    else
                    {
                        resultListMediaItems.HasNextPage = false;
                    }

                    if (counterIndexPageToken == 0)
                    {
                        resultListMediaItems.HasPreviousPage = false;
                    }
                    else
                    {
                        resultListMediaItems.HasPreviousPage = true;
                    }
                }
                else
                {
                    ResultError resultError = JsonConvert.DeserializeObject <ResultError>(response.Content);
                    resultListMediaItems.ResultCode    = response.StatusCode.ToString();
                    resultListMediaItems.ResultMessage = (resultError.Error != null) ? resultError.Error.Message : "Erro";
                }
            }
            catch (Exception ex)
            {
                resultListMediaItems = new ResultMediaItems();
            }

            return(resultListMediaItems);
        }