Files
mixtape/zero.Core/Routing/Links/RawLinkProvider.cs
T

59 lines
1.1 KiB
C#
Raw Normal View History

2021-11-19 16:11:12 +01:00
using Raven.Client.Documents.Session;
namespace zero.Routing;
public class RawLinkProvider : ILinkProvider
{
public const string AREA = "zero.url";
/// <summary>
/// Creates a new link object from an url
/// </summary>
public Link Create(string url, LinkTarget target = LinkTarget.Default, string title = null)
{
return new Link()
{
Area = AREA,
Target = target,
Title = title,
Values = new()
{
{ "url", url }
}
};
}
/// <inheritdoc />
public bool CanProcess(Link link) => link.Area is AREA or "zero.raw";
/// <inheritdoc />
public Task<string> Resolve(Link link)
{
2022-01-12 17:15:05 +01:00
link.Url = link.Values.GetValueOrDefault("url");
2021-11-19 16:11:12 +01:00
return Task.FromResult(link.Url);
}
/// <inheritdoc />
public Task<LinkPreview> Preview(IAsyncDocumentSession session, Link link)
{
2022-01-12 17:15:05 +01:00
string url = link.Values.GetValueOrDefault("url");
2021-11-19 16:11:12 +01:00
if (url.IsNullOrEmpty())
{
return Task.FromResult<LinkPreview>(default);
}
return Task.FromResult(new LinkPreview()
{
Id = url,
Icon = "fth-link",
Name = link.Title.Or("@ui.link"),
Text = url
});
}
}