private async Task ProcessAnnotations()

in functions/image-analysis/csharp/Function.cs [79:118]


        private async Task ProcessAnnotations(string filename, AnnotateImageResponse response)
        {
            var labels = response.LabelAnnotations
                .OrderBy(annotation => annotation.Score)
                .Select(annotation => annotation.Description);
            _logger.LogInformation($"Labels: {string.Join(",", labels)}");

            var color = response.ImagePropertiesAnnotation.DominantColors.Colors
                .OrderByDescending(c => c.Score)
                .Select(c => c.Color)
                .First();

            var colorHex = $"#{((int)color.Red):X2}{((int)color.Green):X2}{((int)color.Blue):X2}";
            _logger.LogInformation($"Colors: {colorHex}");

            var safeSearch = response.SafeSearchAnnotation;
            var isSafe = safeSearch.Adult < Likelihood.Possible
                && safeSearch.Medical < Likelihood.Possible
                && safeSearch.Racy < Likelihood.Possible
                && safeSearch.Spoof < Likelihood.Possible
                && safeSearch.Violence < Likelihood.Possible;
            _logger.LogInformation($"Safe? {isSafe}");

            if (isSafe)
            {
                var pictureStore = _firestoreDb.Collection("pictures");

                var doc = pictureStore.Document(filename);
                var metadata = new Dictionary<string, object>()
                {
                    {"labels", labels.ToList()},
                    {"color", colorHex},
                    {"created", Timestamp.GetCurrentTimestamp()}
                };
                await doc.SetAsync(metadata, SetOptions.MergeAll);

                 _logger.LogInformation("Stored metadata in Firestore");
            }

        }