♻️ Move the web reader to insight completely
This commit is contained in:
36
DysonNetwork.Shared/Registry/RemoteWebArticleService.cs
Normal file
36
DysonNetwork.Shared/Registry/RemoteWebArticleService.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using DysonNetwork.Shared.Models;
|
||||
using DysonNetwork.Shared.Proto;
|
||||
|
||||
namespace DysonNetwork.Shared.Registry;
|
||||
|
||||
public class RemoteWebArticleService(WebArticleService.WebArticleServiceClient webArticles)
|
||||
{
|
||||
public async Task<SnWebArticle> GetWebArticle(Guid id)
|
||||
{
|
||||
var request = new GetWebArticleRequest { Id = id.ToString() };
|
||||
var response = await webArticles.GetWebArticleAsync(request);
|
||||
return response.Article != null ? SnWebArticle.FromProtoValue(response.Article) : null!;
|
||||
}
|
||||
|
||||
public async Task<List<SnWebArticle>> GetWebArticleBatch(List<Guid> ids)
|
||||
{
|
||||
var request = new GetWebArticleBatchRequest();
|
||||
request.Ids.AddRange(ids.Select(id => id.ToString()));
|
||||
var response = await webArticles.GetWebArticleBatchAsync(request);
|
||||
return response.Articles.Select(SnWebArticle.FromProtoValue).ToList();
|
||||
}
|
||||
|
||||
public async Task<List<SnWebArticle>> ListWebArticles(Guid feedId)
|
||||
{
|
||||
var request = new ListWebArticlesRequest { FeedId = feedId.ToString() };
|
||||
var response = await webArticles.ListWebArticlesAsync(request);
|
||||
return response.Articles.Select(SnWebArticle.FromProtoValue).ToList();
|
||||
}
|
||||
|
||||
public async Task<List<SnWebArticle>> GetRecentArticles(int limit = 20)
|
||||
{
|
||||
var request = new GetRecentArticlesRequest { Limit = limit };
|
||||
var response = await webArticles.GetRecentArticlesAsync(request);
|
||||
return response.Articles.Select(SnWebArticle.FromProtoValue).ToList();
|
||||
}
|
||||
}
|
||||
28
DysonNetwork.Shared/Registry/RemoteWebFeedService.cs
Normal file
28
DysonNetwork.Shared/Registry/RemoteWebFeedService.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using DysonNetwork.Shared.Models;
|
||||
using DysonNetwork.Shared.Proto;
|
||||
|
||||
namespace DysonNetwork.Shared.Registry;
|
||||
|
||||
public class RemoteWebFeedService(WebFeedService.WebFeedServiceClient webFeeds)
|
||||
{
|
||||
public async Task<SnWebFeed> GetWebFeed(Guid id)
|
||||
{
|
||||
var request = new GetWebFeedRequest { Id = id.ToString() };
|
||||
var response = await webFeeds.GetWebFeedAsync(request);
|
||||
return response.Feed != null ? SnWebFeed.FromProtoValue(response.Feed) : null!;
|
||||
}
|
||||
|
||||
public async Task<SnWebFeed> GetWebFeedByUrl(string url)
|
||||
{
|
||||
var request = new GetWebFeedRequest { Url = url };
|
||||
var response = await webFeeds.GetWebFeedAsync(request);
|
||||
return response.Feed != null ? SnWebFeed.FromProtoValue(response.Feed) : null!;
|
||||
}
|
||||
|
||||
public async Task<List<SnWebFeed>> ListWebFeeds(Guid publisherId)
|
||||
{
|
||||
var request = new ListWebFeedsRequest { PublisherId = publisherId.ToString() };
|
||||
var response = await webFeeds.ListWebFeedsAsync(request);
|
||||
return response.Feeds.Select(SnWebFeed.FromProtoValue).ToList();
|
||||
}
|
||||
}
|
||||
34
DysonNetwork.Shared/Registry/RemoteWebReaderService.cs
Normal file
34
DysonNetwork.Shared/Registry/RemoteWebReaderService.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using DysonNetwork.Shared.Models;
|
||||
using DysonNetwork.Shared.Models.Embed;
|
||||
using DysonNetwork.Shared.Proto;
|
||||
using ProtoLinkEmbed = DysonNetwork.Shared.Proto.LinkEmbed;
|
||||
using ModelsLinkEmbed = DysonNetwork.Shared.Models.Embed.LinkEmbed;
|
||||
|
||||
namespace DysonNetwork.Shared.Registry;
|
||||
|
||||
public class RemoteWebReaderService(WebReaderService.WebReaderServiceClient webReader)
|
||||
{
|
||||
public async Task<(ModelsLinkEmbed LinkEmbed, string? Content)> ScrapeArticle(string url)
|
||||
{
|
||||
var request = new ScrapeArticleRequest { Url = url };
|
||||
var response = await webReader.ScrapeArticleAsync(request);
|
||||
return (
|
||||
LinkEmbed: response.Article?.LinkEmbed != null ? ModelsLinkEmbed.FromProtoValue(response.Article.LinkEmbed) : null!,
|
||||
Content: response.Article?.Content == "" ? null : response.Article?.Content
|
||||
);
|
||||
}
|
||||
|
||||
public async Task<ModelsLinkEmbed> GetLinkPreview(string url, bool bypassCache = false)
|
||||
{
|
||||
var request = new GetLinkPreviewRequest { Url = url, BypassCache = bypassCache };
|
||||
var response = await webReader.GetLinkPreviewAsync(request);
|
||||
return response.Preview != null ? ModelsLinkEmbed.FromProtoValue(response.Preview) : null!;
|
||||
}
|
||||
|
||||
public async Task<bool> InvalidateLinkPreviewCache(string url)
|
||||
{
|
||||
var request = new InvalidateLinkPreviewCacheRequest { Url = url };
|
||||
var response = await webReader.InvalidateLinkPreviewCacheAsync(request);
|
||||
return response.Success;
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,6 @@ public static class ServiceInjectionHelper
|
||||
services.AddGrpcClientWithSharedChannel<AuthService.AuthServiceClient>(
|
||||
"https://_grpc.pass",
|
||||
"AuthService");
|
||||
|
||||
services.AddGrpcClientWithSharedChannel<PermissionService.PermissionServiceClient>(
|
||||
"https://_grpc.pass",
|
||||
"PermissionService");
|
||||
@@ -39,19 +38,15 @@ public static class ServiceInjectionHelper
|
||||
services.AddGrpcClientWithSharedChannel<BotAccountReceiverService.BotAccountReceiverServiceClient>(
|
||||
"https://_grpc.pass",
|
||||
"BotAccountReceiverService");
|
||||
|
||||
services.AddGrpcClientWithSharedChannel<ActionLogService.ActionLogServiceClient>(
|
||||
"https://_grpc.pass",
|
||||
"ActionLogService");
|
||||
|
||||
services.AddGrpcClientWithSharedChannel<PaymentService.PaymentServiceClient>(
|
||||
"https://_grpc.pass",
|
||||
"PaymentService");
|
||||
|
||||
services.AddGrpcClientWithSharedChannel<WalletService.WalletServiceClient>(
|
||||
"https://_grpc.pass",
|
||||
"WalletService");
|
||||
|
||||
services.AddGrpcClientWithSharedChannel<RealmService.RealmServiceClient>(
|
||||
"https://_grpc.pass",
|
||||
"RealmService");
|
||||
@@ -107,5 +102,24 @@ public static class ServiceInjectionHelper
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public IServiceCollection AddInsightService()
|
||||
{
|
||||
services.AddGrpcClientWithSharedChannel<WebFeedService.WebFeedServiceClient>(
|
||||
"https://_grpc.insight",
|
||||
"WebFeedServiceClient");
|
||||
services.AddGrpcClientWithSharedChannel<WebArticleService.WebArticleServiceClient>(
|
||||
"https://_grpc.insight",
|
||||
"WebArticleService");
|
||||
services.AddGrpcClientWithSharedChannel<WebReaderService.WebReaderServiceClient>(
|
||||
"https://_grpc.insight",
|
||||
"WebReaderServiceClient");
|
||||
|
||||
services.AddSingleton<RemoteWebFeedService>();
|
||||
services.AddSingleton<RemoteWebReaderService>();
|
||||
services.AddSingleton<RemoteWebArticleService>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user