protected override async Task Handle(SearchGlosbeRequest request, CancellationToken cancellationToken) { var ctx = request.Ctx; var query = request.Query; var orignalLanguage = request.OriginalLanguage; var targetLanguage = request.TargetLanguage; var translationResult = await _glosbeClient.GetTranslation(orignalLanguage, targetLanguage, query); var model = _glosbeModelMapper.MapTranslationResult(translationResult); var textTemplateSource = await _templateLoader.LoadTemplate("GlosbeArticle", ScribanTemplateType.Text); var textTemplate = Template.Parse(textTemplateSource); var textTemplateResult = textTemplate.Render(new { model.Article }); var trimmedResult = textTemplateResult.Trim(); var truncatedContent = trimmedResult.Substring(0, Math.Min(trimmedResult.Length, DiscordConstants.MaxEmbedContentLength)); var eb = new DiscordEmbedBuilder() .WithTitle("Glosbe") .WithUrl(model.QueryUrl) .WithDescription(truncatedContent) .WithFooter("Glosbe.com") .WithColor(DiscordConstants.EmbedColor); await ctx.RespondAsync(eb.Build()); }
public async Task TestGlosbe() { try { var puppeteerFactory = new PuppeteerFactory(); var glosbeClient = new GlosbeClient(puppeteerFactory); var translationResult = await glosbeClient.GetTranslation("nn", "en", "hus"); var glosbeModelMapper = new GlosbeModelMapper(); var model = glosbeModelMapper.MapTranslationResult(translationResult); var textTemplateSource = await File.ReadAllTextAsync($"TestFiles/TestGlosbeArticle.sbntxt"); var textTemplate = Template.Parse(textTemplateSource); var textTemplateResult = textTemplate.Render(new { model.Article, model.QueryUrl }); var trimmedResult = textTemplateResult.Trim(); } catch (Exception ex) { Assert.Fail(ex.ToString()); } }