Esempio n. 1
0
        public async Task Test_AllRandom()
        {
            var generatorFactory = new GalleryGeneratorFactory(new TagRepositoryMock(), new PictureRepositoryMock(), new GalleryRepositoryMock());

            var galleryDescriptor = GalleryDescriptor.Create(10);

            var generator = generatorFactory.GetGalleryGenerator(galleryDescriptor);
            var gallery   = await generator.GenerateGallery();

            Assert.IsTrue(gallery.GalleryItems.Count == 10);
        }
Esempio n. 2
0
        public async Task TestOnlyGifs()
        {
            var generatorFactory = new GalleryGeneratorFactory(new TagRepositoryMock(), new PictureRepositoryMock(), new GalleryRepositoryMock());

            var galleryDescriptor = GalleryDescriptor.Create(1, "onlygifs");

            var generator = generatorFactory.GetGalleryGenerator(galleryDescriptor);
            var gallery   = await generator.GenerateGallery();

            Assert.IsTrue(gallery.GalleryItems.Count > 0);
        }
        public AllRandomGenerator(GalleryDescriptor galleryDescriptor, IGalleryRepository galleryRepository)
            : base(galleryDescriptor)
        {
            if (galleryDescriptor.TagFilter.Mode != TagFilterMode.Undefined)
            {
                throw new NotSupportedException($"The '{nameof(AllRandomGenerator)}' does not support the current tag mode: {galleryDescriptor.TagFilter.Mode}");
            }
            if (galleryDescriptor.MediaFilterMode == MediaFilterMode.OnlyGifs || galleryDescriptor.MediaFilterMode == MediaFilterMode.OnlyVideos)
            {
                throw new NotSupportedException($"The '{nameof(AllRandomGenerator)}' does not support the current media filter mode '{galleryDescriptor.MediaFilterMode}'.");
            }

            _galleryRepository = galleryRepository;
        }
Esempio n. 4
0
        public OnlyGifsGenerator(GalleryDescriptor galleryDescriptor, IGalleryRepository galleryRepository)
            : base(galleryDescriptor)
        {
            if (galleryDescriptor.TagFilter.Mode != TagFilterMode.Undefined)
            {
                throw new NotSupportedException($"The '{nameof(OnlyGifsGenerator)}' does not support the current tag mode: {galleryDescriptor.TagFilter.Mode}");
            }
            if (galleryDescriptor.MediaFilterMode == MediaFilterMode.ExcludeGifs)
            {
                throw new NotSupportedException($"The '{nameof(OnlyGifsGenerator)}' does not support the current gif mode '{MediaFilterMode.ExcludeGifs.Name}'.");
            }

            _galleryRepository = galleryRepository;
        }
Esempio n. 5
0
        public async Task <GalleryResponse> GetCustomizedRandom(int itemsInGallery, string tags, string tagFilteringMode, string mediaFilterMode)
        {
            GalleryDescriptor descriptor = GalleryDescriptor.Create(itemsInGallery, mediaFilterMode);

            if (!string.IsNullOrWhiteSpace(tagFilteringMode))
            {
                descriptor.SetTagFilter(tags, tagFilteringMode);
            }

            var galleryGenerator = _galleryGeneratorFactory.GetGalleryGenerator(descriptor);

            var aggregate = await galleryGenerator.GenerateGallery();

            return(_mapper.Map <GalleryResponse>(aggregate));
        }
        public CustomExclusiveGenerator(GalleryDescriptor galleryDescriptor, IGalleryRepository galleryRepository, ITagRepository tagRepository)
            : base(galleryDescriptor)
        {
            if (galleryDescriptor.TagFilter.Mode != TagFilterMode.CustomExclusive)
            {
                throw new NotSupportedException($"The '{nameof(CustomExclusiveGenerator)}' does not support the current tag mode: {galleryDescriptor.TagFilter.Mode}");
            }
            if (galleryDescriptor.MediaFilterMode == MediaFilterMode.OnlyGifs)
            {
                throw new NotSupportedException($"The '{nameof(CustomExclusiveGenerator)}' does not support the current gif mode '{MediaFilterMode.OnlyGifs.Name}'.");
            }

            _galleryRepository = galleryRepository;
            _tagRepository     = tagRepository;
        }
Esempio n. 7
0
        public OnlyTaggedGenerator(GalleryDescriptor galleryDescriptor, ITagRepository tagRepository, IPictureRepository pictureRepository)
            : base(galleryDescriptor)
        {
            if (galleryDescriptor.TagFilter.Mode != TagFilterMode.OnlyTagged)
            {
                throw new NotSupportedException($"The '{nameof(OnlyTaggedGenerator)}' does not support the current tag mode: {galleryDescriptor.TagFilter.Mode}");
            }
            if (galleryDescriptor.MediaFilterMode == MediaFilterMode.OnlyGifs)
            {
                throw new NotSupportedException($"The '{nameof(OnlyTaggedGenerator)}' does not support the current gif mode '{MediaFilterMode.OnlyGifs.Name}'.");
            }

            _tagRepository     = tagRepository;
            _pictureRepository = pictureRepository;
        }
Esempio n. 8
0
        public void AddLocation()
        {
            var name     = NameTextBox.Text ?? string.Empty;
            var location = LocationTextBox.Text ?? string.Empty;

            var repository = new GalleryDescriptor(name, location);

            var listBoxItem = GetListBoxItem(repository);

            List.SelectedIndex = List.Items.Add(listBoxItem);

            NameTextBox.Text     = string.Empty;
            LocationTextBox.Text = string.Empty;

            EnableButtons();
        }
Esempio n. 9
0
        public IGalleryGenerator GetGalleryGenerator(GalleryDescriptor galleryDescriptor)
        {
            var mediaFilterMode = galleryDescriptor.MediaFilterMode;
            var tagMode         = galleryDescriptor.TagFilter.Mode;

            if (mediaFilterMode == MediaFilterMode.OnlyGifs)
            {
                if (tagMode == TagFilterMode.CustomInclusive || tagMode == TagFilterMode.OnlyTagged)
                {
                    return(new OnlyTaggedGifsGenerator(galleryDescriptor, _tagRepository, _pictureRepository));
                }

                return(new OnlyGifsGenerator(galleryDescriptor, _galleryRepository));
            }
            else if (mediaFilterMode == MediaFilterMode.OnlyVideos)
            {
                return(new OnlyVideoGenerator(galleryDescriptor, _galleryRepository));
            }
            else
            {
                if (tagMode == TagFilterMode.CustomExclusive)
                {
                    return(new CustomExclusiveGenerator(galleryDescriptor, _galleryRepository, _tagRepository));
                }
                else if (tagMode == TagFilterMode.CustomInclusive)
                {
                    return(new CustomInclusiveGenerator(galleryDescriptor, _tagRepository, _pictureRepository));
                }
                else if (tagMode == TagFilterMode.OnlyTagged)
                {
                    return(new OnlyTaggedGenerator(galleryDescriptor, _tagRepository, _pictureRepository));
                }
                else if (tagMode == TagFilterMode.OnlyUntagged)
                {
                    return(new OnlyUntaggedGenerator(galleryDescriptor, _galleryRepository, _tagRepository));
                }
            }

            return(new AllRandomGenerator(galleryDescriptor, _galleryRepository));
        }
Esempio n. 10
0
        private ListBoxItem GetListBoxItem([NotNull] GalleryDescriptor descriptor)
        {
            Debug.ArgumentNotNull(descriptor, nameof(descriptor));

            var stackPanel = new StackPanel();

            stackPanel.Children.Add(new TextBlock
            {
                Text = descriptor.Name
            });

            stackPanel.Children.Add(new TextBlock(new Italic(new Run(descriptor.Location)))
            {
                Margin = new Thickness(16, 0, 0, 0)
            });

            var listBoxItem = new ListBoxItem
            {
                Content = stackPanel,
                Tag     = descriptor
            };

            return(listBoxItem);
        }
Esempio n. 11
0
 public GalleryGenerator(GalleryDescriptor galleryDescriptor)
 {
     _galleryDescriptor = galleryDescriptor;
 }