Esempio n. 1
0
        private int ImageToAlbumBatch(IEnumerable <MyImage> batch)
        {
            var imagecollection = new List <NewMediaItem>();

            foreach (var myImage in batch)
            {
                _logger.LogDebug($"Adding '{myImage.Name}' to album");

                NewMediaItem image = new NewMediaItem();
                image.Description     = myImage.Description;
                image.SimpleMediaItem = new SimpleMediaItem()
                {
                    UploadToken = myImage.UploadToken
                };

                imagecollection.Add(image);
            }


            BatchCreateMediaItemsRequest batchCreateMediaItemsRequest = new BatchCreateMediaItemsRequest
            {
                AlbumId       = album.Id,
                NewMediaItems = imagecollection
            };

            MediaItemsResource.BatchCreateRequest batchCreateRequest = service.MediaItems.BatchCreate(batchCreateMediaItemsRequest);

            BatchCreateMediaItemsResponse batchCreateMediaItemsResponse = batchCreateRequest.Execute();

            return(batchCreateMediaItemsResponse.NewMediaItemResults.Count);
        }
Esempio n. 2
0
        private bool AddPhotosToAlbum()
        {
            if (album == null)
            {
                throw new ArgumentException("Album is NULL - image upload aborted");
            }
            if (album.IsWriteable == null || !album.IsWriteable.Value)
            {
                throw new ArgumentException("Album is not writable - image upload aborted");
            }

            Console.WriteLine($"Adding {myImages.Count} images to Album '{albumTitle}'");

            var imagecollection = new List <NewMediaItem>();

            foreach (var myImage in myImages)
            {
                NewMediaItem image = new NewMediaItem();
                image.Description     = Path.GetFileNameWithoutExtension(myImage.Name);
                image.SimpleMediaItem = new SimpleMediaItem()
                {
                    UploadToken = myImage.UploadToken
                };

                imagecollection.Add(image);
            }


            BatchCreateMediaItemsRequest batchCreateMediaItemsRequest = new BatchCreateMediaItemsRequest
            {
                AlbumId       = album.Id,
                NewMediaItems = imagecollection
            };

            MediaItemsResource.BatchCreateRequest batchCreateRequest = service.MediaItems.BatchCreate(batchCreateMediaItemsRequest);

            BatchCreateMediaItemsResponse batchCreateMediaItemsResponse = batchCreateRequest.Execute();
            int imagesAddedToAlbum = batchCreateMediaItemsResponse.NewMediaItemResults.Count;

            if (myImages.Count != imagesAddedToAlbum)
            {
                throw new Exception($"Images not added to Album. Expected {myImages.Count}, only {imagesAddedToAlbum} added.");
            }

            return(true);
        }
Esempio n. 3
0
        public List <MediaItemCreate> Post(MediaItemRequest mediaItemRequest)
        {
            string token = Request.Headers.Authorization.Parameter;
            List <UploadTokenModel> uploadTokens = new List <UploadTokenModel>();
            string APIURL    = WebConfigurationManager.AppSettings["googleApiURL"];
            int    batchSize = Convert.ToInt32(WebConfigurationManager.AppSettings["batchSize"]);

            MediaItemCreate        response  = new MediaItemCreate();
            List <MediaItemCreate> responses = new List <MediaItemCreate>();

            if (token == string.Empty)
            {
                NewMediaItemResult newMediaItemResult = new NewMediaItemResult()
                {
                    Status = new Status()
                    {
                        Message = "Token Is Empty"
                    }
                };
                response.NewMediaItemResults.Add(newMediaItemResult);
                responses.Add(response);
                return(responses);
            }

            List <Task> task = new List <Task>();

            foreach (MediaItems mediaItem in mediaItemRequest.MediaItems)
            {
                var runningTask = Task.Run(() => {
                    WebClient wc                 = new WebClient();
                    string url                   = mediaItem.BaseUrl + "=w" + mediaItem.MediaMetadata.Width + "-h" + mediaItem.MediaMetadata.Height;
                    byte[] imageBytes            = wc.DownloadData(new Uri(url));
                    UploadTokenModel uploadToken = new UploadTokenModel()
                    {
                        Description = mediaItem.Filename,
                        UploadToken = GetUploadToken("POST", APIURL + "uploads", token, mediaItem.Filename, imageBytes).Content
                    };
                    uploadTokens.Add(uploadToken);
                });
                task.Add(runningTask);
            }
            Task.WaitAll(task.ToArray());

            BatchCreateModel batchCreateModel = new BatchCreateModel()
            {
                AlbumId       = mediaItemRequest.AlbumId,
                NewMediaItems = new List <NewMediaItem>()
            };

            UploadTokenModel lastElement = uploadTokens.Last();

            foreach (UploadTokenModel uploadToken in uploadTokens)
            {
                NewMediaItem newMedia = new NewMediaItem()
                {
                    Description     = uploadToken.Description,
                    SimpleMediaItem = new SimpleMediaItem()
                };
                newMedia.SimpleMediaItem.UploadToken = uploadToken.UploadToken;
                batchCreateModel.NewMediaItems.Add(newMedia);
                if (batchCreateModel.NewMediaItems.Count % 50 == 0 || uploadToken.Equals(lastElement))
                {
                    response = UploadMedia(APIURL + "mediaItems:batchCreate", token, batchCreateModel, mediaItemRequest.AlbumId);
                    responses.Add(response);
                    batchCreateModel.NewMediaItems = new List <NewMediaItem>();
                }
            }
            return(responses);
        }