Files
pushy/Pushy/Pushy/LinkGenerator.cs
2024-11-13 17:37:32 +01:00

32 lines
809 B
C#

using System.Security.Cryptography;
using System.Text;
using Pushy.Grains;
namespace Pushy;
public sealed class LinkGenerator
{
private readonly ILogger<LinkGenerator> _logger;
private readonly IClusterClient _clusterClient;
public LinkGenerator(
IClusterClient clusterClient,
ILogger<LinkGenerator> logger)
{
_clusterClient = clusterClient;
_logger = logger;
}
public async Task<ITextItem> GenerateTextShare(string text)
{
string item = $"{Guid.CreateVersion7():N}"[6..];
var sharedGrain = _clusterClient.GetGrain<ITextItem>(item);
if (await sharedGrain.IsAvailable())
{
await sharedGrain.SetText(text);
return sharedGrain;
}
return await GenerateTextShare(text);
}
}