Return back IProviderPlugin and IUploaderPlugin

This commit is contained in:
Ivan Yaremenchuk 2022-10-02 20:37:56 -05:00
parent c3ca42eb4f
commit 1f97ff7935
27 changed files with 120 additions and 44 deletions

View File

@ -1,4 +1,6 @@
namespace NftFaucet.Plugins.Models.Abstraction;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.Plugins;
public interface INetworkPlugin
{

View File

@ -0,0 +1,8 @@
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.Plugins;
public interface IProviderPlugin
{
public IReadOnlyCollection<IProvider> Providers { get; }
}

View File

@ -0,0 +1,8 @@
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.Plugins;
public interface IUploaderPlugin
{
public IReadOnlyCollection<IUploader> Uploaders { get; }
}

View File

@ -12,14 +12,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProviderPlugins", "Provider
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UploadPlugins", "UploadPlugins", "{5FA46262-EDA0-43BB-A1E5-57F50AD7EE00}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.EthereumKeygen", "plugins\provider-plugins\NftFaucet.ProviderPlugins.EthereumKeygen\NftFaucet.ProviderPlugins.EthereumKeygen.csproj", "{B1D73FDE-0ECD-4917-8B9A-AEFD8C8C39C5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.Keygens", "plugins\provider-plugins\NftFaucet.ProviderPlugins.Keygens\NftFaucet.ProviderPlugins.Keygens.csproj", "{B1D73FDE-0ECD-4917-8B9A-AEFD8C8C39C5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.Domain", "NftFaucet.Domain\NftFaucet.Domain.csproj", "{384ECEAB-40B1-4F22-AFBD-F710B935E23A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.Metamask", "plugins\provider-plugins\NftFaucet.ProviderPlugins.Metamask\NftFaucet.ProviderPlugins.Metamask.csproj", "{3028C0A8-073A-4160-92C7-34D148F1D19C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.SolanaKeygen", "plugins\provider-plugins\NftFaucet.ProviderPlugins.SolanaKeygen\NftFaucet.ProviderPlugins.SolanaKeygen.csproj", "{A48C079B-5466-4AE5-AA15-0D9D7C3A01A9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.Phantom", "plugins\provider-plugins\NftFaucet.ProviderPlugins.Phantom\NftFaucet.ProviderPlugins.Phantom.csproj", "{D6522592-0719-479F-AD8E-D58D4D7B207C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.UploadPlugins.Crust", "plugins\upload-plugins\NftFaucet.UploadPlugins.Crust\NftFaucet.UploadPlugins.Crust.csproj", "{BA56B8D0-B2BD-4170-9D95-D2A1ED29E334}"
@ -72,10 +70,6 @@ Global
{3028C0A8-073A-4160-92C7-34D148F1D19C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3028C0A8-073A-4160-92C7-34D148F1D19C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3028C0A8-073A-4160-92C7-34D148F1D19C}.Release|Any CPU.Build.0 = Release|Any CPU
{A48C079B-5466-4AE5-AA15-0D9D7C3A01A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A48C079B-5466-4AE5-AA15-0D9D7C3A01A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A48C079B-5466-4AE5-AA15-0D9D7C3A01A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A48C079B-5466-4AE5-AA15-0D9D7C3A01A9}.Release|Any CPU.Build.0 = Release|Any CPU
{D6522592-0719-479F-AD8E-D58D4D7B207C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D6522592-0719-479F-AD8E-D58D4D7B207C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D6522592-0719-479F-AD8E-D58D4D7B207C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -136,7 +130,6 @@ Global
{B1D73FDE-0ECD-4917-8B9A-AEFD8C8C39C5} = {9DE3CDEC-37AE-4FB0-B115-984EB47F57C5}
{3028C0A8-073A-4160-92C7-34D148F1D19C} = {9DE3CDEC-37AE-4FB0-B115-984EB47F57C5}
{D6522592-0719-479F-AD8E-D58D4D7B207C} = {9DE3CDEC-37AE-4FB0-B115-984EB47F57C5}
{A48C079B-5466-4AE5-AA15-0D9D7C3A01A9} = {9DE3CDEC-37AE-4FB0-B115-984EB47F57C5}
{BA56B8D0-B2BD-4170-9D95-D2A1ED29E334} = {5FA46262-EDA0-43BB-A1E5-57F50AD7EE00}
{3F51D52C-3A40-4206-9715-02425786B485} = {5FA46262-EDA0-43BB-A1E5-57F50AD7EE00}
{F0F74D75-68EC-4B56-897E-7292A05B963B} = {5FA46262-EDA0-43BB-A1E5-57F50AD7EE00}

View File

@ -31,10 +31,9 @@
<ProjectReference Include="..\plugins\network-plugins\NftFaucet.NetworkPlugins.Optimism\NftFaucet.NetworkPlugins.Optimism.csproj" />
<ProjectReference Include="..\plugins\network-plugins\NftFaucet.NetworkPlugins.Polygon\NftFaucet.NetworkPlugins.Polygon.csproj" />
<ProjectReference Include="..\plugins\network-plugins\NftFaucet.NetworkPlugins.Solana\NftFaucet.NetworkPlugins.Solana.csproj" />
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.EthereumKeygen\NftFaucet.ProviderPlugins.EthereumKeygen.csproj" />
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.Keygens\NftFaucet.ProviderPlugins.Keygens.csproj" />
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.Metamask\NftFaucet.ProviderPlugins.Metamask.csproj" />
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.Phantom\NftFaucet.ProviderPlugins.Phantom.csproj" />
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.SolanaKeygen\NftFaucet.ProviderPlugins.SolanaKeygen.csproj" />
<ProjectReference Include="..\NftFaucet.Plugins\NftFaucet.Plugins.csproj" />
<ProjectReference Include="..\plugins\upload-plugins\NftFaucet.UploadPlugins.Crust\NftFaucet.UploadPlugins.Crust.csproj" />
<ProjectReference Include="..\plugins\upload-plugins\NftFaucet.UploadPlugins.Infura\NftFaucet.UploadPlugins.Infura.csproj" />

View File

@ -43,8 +43,8 @@ public class InitializationService : IInitializationService
_appState.PluginStorage.Contracts == null;
_appState.PluginStorage.Networks ??= _pluginLoader.NetworkPlugins.SelectMany(x => x.Networks).Where(x => x != null).ToArray();
_appState.PluginStorage.Providers ??= _pluginLoader.ProviderPlugins.Where(x => x != null).ToArray();
_appState.PluginStorage.Uploaders ??= _pluginLoader.UploadPlugins.Where(x => x != null).ToArray();
_appState.PluginStorage.Providers ??= _pluginLoader.ProviderPlugins.SelectMany(x => x.Providers).Where(x => x != null).ToArray();
_appState.PluginStorage.Uploaders ??= _pluginLoader.UploaderPlugins.SelectMany(x => x.Uploaders).Where(x => x != null).ToArray();
_appState.PluginStorage.Contracts ??= _appState.PluginStorage.Networks.SelectMany(x => x.DeployedContracts).Where(x => x != null).ToArray();
if (isFirstRun)

View File

@ -6,11 +6,12 @@ using NftFaucet.NetworkPlugins.Moonbeam;
using NftFaucet.NetworkPlugins.Optimism;
using NftFaucet.NetworkPlugins.Polygon;
using NftFaucet.NetworkPlugins.Solana;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
using NftFaucet.ProviderPlugins.EthereumKeygen;
using NftFaucet.ProviderPlugins.Keygens;
using NftFaucet.ProviderPlugins.Metamask;
using NftFaucet.ProviderPlugins.Phantom;
using NftFaucet.ProviderPlugins.SolanaKeygen;
using NftFaucet.UploadPlugins.Crust;
using NftFaucet.UploadPlugins.Infura;
using NftFaucet.UploadPlugins.NftStorage;
@ -31,18 +32,17 @@ public class PluginLoader
new SolanaNetworkPlugin(),
};
public IReadOnlyCollection<IProvider> ProviderPlugins { get; } = new IProvider[]
public IReadOnlyCollection<IProviderPlugin> ProviderPlugins { get; } = new IProviderPlugin[]
{
new MetamaskProvider(),
new EthereumKeygenProvider(),
new PhantomProvider(),
new SolanaKeygenProvider(),
new MetamaskProviderPlugin(),
new PhantomProviderPlugin(),
new KeygenProviderPlugin(),
};
public IReadOnlyCollection<IUploader> UploadPlugins { get; } = new IUploader[]
public IReadOnlyCollection<IUploaderPlugin> UploaderPlugins { get; } = new IUploaderPlugin[]
{
new InfuraUploader(),
new NftStorageUploader(),
new CrustUploader(),
new InfuraUploaderPlugin(),
new NftStorageUploaderPlugin(),
new CrustUploaderPlugin(),
};
}

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.Arbitrum.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.Arbitrum;

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.Avalanche.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.Avalanche;

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.BinanceSmartChain.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.BinanceSmartChain;

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.Ethereum.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.Ethereum;

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.Moonbeam.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.Moonbeam;

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.Optimism.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.Optimism;

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.Polygon.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.Polygon;

View File

@ -1,4 +1,5 @@
using NftFaucet.NetworkPlugins.Solana.Networks;
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.NetworkPlugins.Solana;

View File

@ -2,7 +2,7 @@ using Cryptography.ECDSA;
using Nethereum.Hex.HexConvertors.Extensions;
using Nethereum.Util;
namespace NftFaucet.ProviderPlugins.EthereumKeygen;
namespace NftFaucet.ProviderPlugins.Keygens;
public class EthereumKey
{

View File

@ -14,7 +14,7 @@ using NftFaucet.Plugins.Models;
using NftFaucet.Plugins.Models.Abstraction;
using NftFaucet.Plugins.Models.Enums;
namespace NftFaucet.ProviderPlugins.EthereumKeygen;
namespace NftFaucet.ProviderPlugins.Keygens;
public sealed class EthereumKeygenProvider : Provider
{

View File

@ -0,0 +1,14 @@
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
using NftFaucet.ProviderPlugins.EthereumKeygen;
namespace NftFaucet.ProviderPlugins.Keygens;
public class KeygenProviderPlugin : IProviderPlugin
{
public IReadOnlyCollection<IProvider> Providers { get; } = new IProvider[]
{
new EthereumKeygenProvider(),
new SolanaKeygenProvider(),
};
}

View File

@ -12,6 +12,7 @@
<ItemGroup>
<PackageReference Include="Cryptography.ECDSA.Secp256K1" Version="1.1.3" />
<PackageReference Include="Solana.Metaplex" Version="1.2.0" />
</ItemGroup>
</Project>

View File

@ -1,7 +1,7 @@
using Solnet.Wallet;
using Solnet.Wallet.Bip39;
namespace NftFaucet.ProviderPlugins.SolanaKeygen;
namespace NftFaucet.ProviderPlugins.EthereumKeygen;
public class SolanaKey
{

View File

@ -15,7 +15,7 @@ using Solnet.Rpc.Models;
using Solnet.Rpc.Utilities;
using Solnet.Wallet;
namespace NftFaucet.ProviderPlugins.SolanaKeygen;
namespace NftFaucet.ProviderPlugins.EthereumKeygen;
public class SolanaKeygenProvider : Provider
{

View File

@ -0,0 +1,12 @@
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.ProviderPlugins.Metamask;
public class MetamaskProviderPlugin : IProviderPlugin
{
public IReadOnlyCollection<IProvider> Providers { get; } = new IProvider[]
{
new MetamaskProvider(),
};
}

View File

@ -0,0 +1,12 @@
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.ProviderPlugins.Phantom;
public class PhantomProviderPlugin : IProviderPlugin
{
public IReadOnlyCollection<IProvider> Providers { get; } = new IProvider[]
{
new PhantomProvider(),
};
}

View File

@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\NftFaucet.Plugins\NftFaucet.Plugins.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Solana.Metaplex" Version="1.2.0" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,12 @@
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.UploadPlugins.Crust;
public class CrustUploaderPlugin : IUploaderPlugin
{
public IReadOnlyCollection<IUploader> Uploaders { get; } = new[]
{
new CrustUploader(),
};
}

View File

@ -0,0 +1,12 @@
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.UploadPlugins.Infura;
public class InfuraUploaderPlugin : IUploaderPlugin
{
public IReadOnlyCollection<IUploader> Uploaders { get; } = new[]
{
new InfuraUploader(),
};
}

View File

@ -0,0 +1,12 @@
using NftFaucet.Plugins;
using NftFaucet.Plugins.Models.Abstraction;
namespace NftFaucet.UploadPlugins.NftStorage;
public class NftStorageUploaderPlugin : IUploaderPlugin
{
public IReadOnlyCollection<IUploader> Uploaders { get; } = new[]
{
new NftStorageUploader(),
};
}