2024-07-26 08:39:27 +02:00
|
|
|
|
using CodexPlugin.Hooks;
|
|
|
|
|
|
using Core;
|
2023-09-12 11:43:46 +02:00
|
|
|
|
|
2023-09-11 11:59:33 +02:00
|
|
|
|
namespace CodexPlugin
|
|
|
|
|
|
{
|
|
|
|
|
|
public interface ICodexNodeFactory
|
|
|
|
|
|
{
|
2025-01-15 15:43:50 +01:00
|
|
|
|
CodexNode CreateOnlineCodexNode(CodexAccess access);
|
2023-09-11 11:59:33 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public class CodexNodeFactory : ICodexNodeFactory
|
|
|
|
|
|
{
|
2023-09-12 11:43:46 +02:00
|
|
|
|
private readonly IPluginTools tools;
|
2024-07-26 08:39:27 +02:00
|
|
|
|
private readonly CodexHooksFactory codexHooksFactory;
|
2023-09-12 11:43:46 +02:00
|
|
|
|
|
2024-07-26 08:39:27 +02:00
|
|
|
|
public CodexNodeFactory(IPluginTools tools, CodexHooksFactory codexHooksFactory)
|
2023-09-12 11:43:46 +02:00
|
|
|
|
{
|
|
|
|
|
|
this.tools = tools;
|
2024-07-26 08:39:27 +02:00
|
|
|
|
this.codexHooksFactory = codexHooksFactory;
|
2023-09-12 11:43:46 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-15 15:43:50 +01:00
|
|
|
|
public CodexNode CreateOnlineCodexNode(CodexAccess access)
|
2023-09-11 16:57:57 +02:00
|
|
|
|
{
|
2025-01-15 15:43:50 +01:00
|
|
|
|
var hooks = codexHooksFactory.CreateHooks(access.GetName());
|
|
|
|
|
|
var marketplaceAccess = GetMarketplaceAccess(access, hooks);
|
|
|
|
|
|
return new CodexNode(tools, access, marketplaceAccess, hooks);
|
2023-09-20 08:45:55 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-15 15:43:50 +01:00
|
|
|
|
private IMarketplaceAccess GetMarketplaceAccess(CodexAccess codexAccess, ICodexNodeHooks hooks)
|
2023-09-20 08:45:55 +02:00
|
|
|
|
{
|
2025-01-15 15:43:50 +01:00
|
|
|
|
if (codexAccess.GetEthAccount() == null) return new MarketplaceUnavailable();
|
2024-08-20 12:13:42 +02:00
|
|
|
|
return new MarketplaceAccess(tools.GetLog(), codexAccess, hooks);
|
2023-09-19 11:51:59 +02:00
|
|
|
|
}
|
2023-09-11 11:59:33 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|