public async Task GetMemeTemplatesAsync()
        {
            IReadOnlyList <string> templates = await MemeGenService.GetMemeTemplatesAsync();

            Assert.IsNotNull(templates);
            CollectionAssert.AllItemsAreNotNull(templates);
            CollectionAssert.AllItemsAreUnique(templates);
            CollectionAssert.IsOrdered(templates);
        }
Пример #2
0
        public Task CreateMemeAsync(CommandContext ctx,
                                    [Description("Template.")] string template,
                                    [Description("Top Text.")] string topText,
                                    [Description("Bottom Text.")] string bottomText)
        {
            string url = MemeGenService.GenerateMeme(template, topText, bottomText);

            return(ctx.RespondAsync(embed: new DiscordEmbedBuilder {
                Title = "The meme you asked me to generate",
                Url = url,
                ImageUrl = url
            }.WithFooter("Powered by memegen.link").Build()));
        }
Пример #3
0
        public Task CreateMemeAsync(CommandContext ctx,
                                    [Description("desc-meme-template")] string template,
                                    [Description("desc-meme-text-top")] string topText,
                                    [Description("desc-meme-text-bot")] string bottomText)
        {
            string url = MemeGenService.GenerateMemeUrl(template, topText, bottomText);

            return(ctx.RespondWithLocalizedEmbedAsync(emb => {
                emb.WithTitle(template);
                emb.WithColor(this.ModuleColor);
                emb.WithUrl(url);
                emb.WithImageUrl(url);
                emb.WithLocalizedFooter("fmt-powered-by", null, MemeGenService.Provider);
            }));
        }
Пример #4
0
        public async Task TemplatesAsync(CommandContext ctx)
        {
            IReadOnlyList <string> templates = await MemeGenService.GetMemeTemplatesAsync();

            if (templates == null)
            {
                throw new CommandFailedException("Failed to retrieve meme templates.");
            }

            await ctx.SendCollectionInPagesAsync(
                "Meme templates",
                templates,
                s => s,
                this.ModuleColor
                ).ConfigureAwait(false);
        }
Пример #5
0
        public async Task TemplatesAsync(CommandContext ctx,
                                         [RemainingText, Description("desc-meme-template")] string?template = null)
        {
            if (string.IsNullOrWhiteSpace(template))
            {
                IReadOnlyList <MemeTemplate> templates = await MemeGenService.GetMemeTemplatesAsync();

                if (templates is null)
                {
                    throw new CommandFailedException(ctx, "cmd-err-meme-template-fail");
                }

                await ctx.PaginateAsync(
                    "str-meme-templates",
                    templates.OrderBy(t => t.Key),
                    t => $"{Formatter.Bold(t.Name)}: {Formatter.MaskedUrl(t.Key, new Uri(t.Url))}",
                    this.ModuleColor
                    );
            }
            else
            {
                MemeTemplate?t = await MemeGenService.GetMemeTemplateAsync(template);

                if (t is null)
                {
                    throw new CommandFailedException(ctx, "cmd-err-meme-template-404");
                }

                await ctx.RespondAsync(embed : new DiscordEmbedBuilder {
                    Title    = $"{t.Name}: {t.Key}",
                    ImageUrl = t.Url,
                    Color    = this.ModuleColor,
                    Url      = t.Url,
                }.Build());
            }
        }
 public void GenerateMemeTest()
 {
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top~q/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top?", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom~q.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom?")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top~p/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top%", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom~p.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom%")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top~h/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top#", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom~h.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom#")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top~s/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top/", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom~s.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom/")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top~q/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top?", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top-text/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top text", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top--/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top-", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom--.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom-")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top__/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top_", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom__.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom_")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top''/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top\"", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/bottom__.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "bottom_")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top____/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top__", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/top/remove-multiple-space.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "top", "remove multiple      space")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/remove-multiple-space/bottom.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "remove multiple      space", "bottom")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/_/_.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", "", null)
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/_/_.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", null, "")
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/_/_.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", " ", null)
         );
     Assert.AreEqual(
         "http://memegen.link/tmp/_/_.jpg?font=impact",
         MemeGenService.GenerateMeme("tmp", null, " ")
         );
 }
Пример #7
0
 public void GenerateMemeTest()
 {
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top?", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top~q/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom?"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom~q.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top%", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top~p/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom%"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom~p.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top#", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top~h/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom#"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom~h.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top/", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top~s/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom/"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom~s.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top?", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top~q/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top text", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top-text/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top-", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top--/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom-"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom--.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top_", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top__/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom_"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom__.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top\"", "bottom"),
         Is.EqualTo($"{ApiUrl}/buzz/top''/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("buzz", "top", "bottom_"),
         Is.EqualTo($"{ApiUrl}/buzz/top/bottom__.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("tmp", "top__", "bottom"),
         Is.EqualTo($"{ApiUrl}/tmp/top____/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("tmp", "top", "remove multiple      space"),
         Is.EqualTo($"{ApiUrl}/tmp/top/remove-multiple-space.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("tmp", "remove multiple      space", "bottom"),
         Is.EqualTo($"{ApiUrl}/tmp/remove-multiple-space/bottom.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("tmp", "", null),
         Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("tmp", null, ""),
         Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("tmp", " ", null),
         Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact")
         );
     Assert.That(
         MemeGenService.GenerateMemeUrl("tmp", null, " "),
         Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact")
         );
 }