Beispiel #1
0
        private async IAsyncEnumerable <string> GetMediaItemIdsAsync(string albumId)
        {
            var request = new Dictionary <string, object>
            {
                { "albumId", albumId },
                { "pageSize", 100 },
            };

            while (true)
            {
                var content = new StringContent(
                    JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"
                    );
                var url      = "https://photoslibrary.googleapis.com/v1/mediaItems:search";
                var response = await googleHttpClient.PostAsync(url, content);

                response.EnsureSuccessStatusCode();
                var json         = JObject.Parse(await response.Content.ReadAsStringAsync());
                var mediaItemIds = json
                                   .Value <JArray>("mediaItems")
                                   ?.Select(o => o.Value <string>("id"))
                                   ?? new string[0];
                foreach (var id in mediaItemIds)
                {
                    yield return(id);
                }

                var nextPageToken = json.Value <string>("nextPageToken");
                if (string.IsNullOrEmpty(nextPageToken))
                {
                    break;
                }
                request["pageToken"] = nextPageToken;
            }
        }
Beispiel #2
0
        public async Task <Album> CreateAlbumAsync()
        {
            const string title = "Ambient Fuckery";

            var request  = new { album = new { title } };
            var content  = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            var response = await googleHttpClient.PostAsync(
                "https://photoslibrary.googleapis.com/v1/albums", content
                );

            response.EnsureSuccessStatusCode();

            var id = JsonConvert.DeserializeObject <JObject>(await response.Content.ReadAsStringAsync())
                     .Value <string>("id");

            return(new Album
            {
                Id = id,
                Name = title,
            });
        }