Merge branch 'features/nuget_autobuild' into develop
This commit is contained in:
		
						commit
						0ce199e5ee
					
				
							
								
								
									
										0
									
								
								build/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								build/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										2
									
								
								build/buildProjects.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								build/buildProjects.bat
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
dotnet build ../src/Connected/Connected.csproj
 | 
			
		||||
dotnet build ../src/Connected.Client/Connected.Client.csproj
 | 
			
		||||
							
								
								
									
										15
									
								
								nuget.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								nuget.config
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<configuration>
 | 
			
		||||
    <config>
 | 
			
		||||
        <add key="repositoryPath" value="%PACKAGEHOME%/External" />
 | 
			
		||||
    </config>
 | 
			
		||||
 | 
			
		||||
    <packageRestore>
 | 
			
		||||
        <add key="enabled" value="True" />
 | 
			
		||||
        <add key="automatic" value="True" />
 | 
			
		||||
    </packageRestore>
 | 
			
		||||
    <packageSources>
 | 
			
		||||
        <add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
 | 
			
		||||
    </packageSources>
 | 
			
		||||
    <disabledPackageSources />
 | 
			
		||||
</configuration>
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
using Connected.Configuration;
 | 
			
		||||
using System.Text.Json;
 | 
			
		||||
using Connected.Configuration;
 | 
			
		||||
using Connected.Events;
 | 
			
		||||
using Connected.Net;
 | 
			
		||||
using Connected.Startup;
 | 
			
		||||
@ -14,12 +15,14 @@ public class ClientStartup : IStartup
 | 
			
		||||
	public async Task Configure(WebAssemblyHost host)
 | 
			
		||||
	{
 | 
			
		||||
		Services = host.Services;
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		var events = host.Services.GetService<EventConnection>();
 | 
			
		||||
 | 
			
		||||
		if (events is null)
 | 
			
		||||
			throw new NullReferenceException(nameof(EventConnection));
 | 
			
		||||
 | 
			
		||||
		Console.WriteLine(JsonSerializer.Serialize(host.Configuration));
 | 
			
		||||
 | 
			
		||||
		await events.Initialize();
 | 
			
		||||
		await events.Connect();
 | 
			
		||||
 | 
			
		||||
@ -30,8 +33,8 @@ public class ClientStartup : IStartup
 | 
			
		||||
	{
 | 
			
		||||
		services.AddSingleton<EventConnection>();
 | 
			
		||||
		services.AddSingleton(typeof(IEventService), typeof(EventService));
 | 
			
		||||
		services.AddSingleton(typeof(IConfigurationService), typeof(ConfigurationService));
 | 
			
		||||
		services.AddSingleton(typeof(IRemoteProviderService), typeof(RemoteProviderService));
 | 
			
		||||
		services.AddSingleton(typeof(IConfigurationService), typeof(ConfigurationService));
 | 
			
		||||
 | 
			
		||||
		await Task.CompletedTask;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,12 @@
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
 | 
			
		||||
internal class ConfigurationService : IConfigurationService
 | 
			
		||||
{
 | 
			
		||||
	public ConfigurationService()
 | 
			
		||||
	public ConfigurationService(IConfiguration configuration)
 | 
			
		||||
	{
 | 
			
		||||
		Remote = new RemoteConfiguration();
 | 
			
		||||
		Remote = new RemoteConfiguration(configuration.GetSection("remote"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public IRemoteConfiguration Remote { get; }
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,10 @@
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
using System.Collections.Immutable;
 | 
			
		||||
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
 | 
			
		||||
public interface IRemoteConfiguration
 | 
			
		||||
{
 | 
			
		||||
	List<string> Servers { get; }
 | 
			
		||||
	ImmutableList<IRemoteServerConfiguration> Servers { get; }
 | 
			
		||||
 | 
			
		||||
	public ImmutableList<IRemoteServerConfiguration> Query(string id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,12 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
public interface IRemoteServerConfiguration
 | 
			
		||||
{
 | 
			
		||||
	public string? Id { get; }
 | 
			
		||||
	public string? Address { get; }
 | 
			
		||||
}
 | 
			
		||||
@ -1,13 +1,23 @@
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
using System.Collections.Immutable;
 | 
			
		||||
using Connected.Remote;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
 | 
			
		||||
internal class RemoteConfiguration : IRemoteConfiguration
 | 
			
		||||
{
 | 
			
		||||
	public RemoteConfiguration()
 | 
			
		||||
	private readonly List<RemoteServerConfiguration> _servers;
 | 
			
		||||
 | 
			
		||||
	public RemoteConfiguration(IConfiguration configuration)
 | 
			
		||||
	{
 | 
			
		||||
		Servers = new()
 | 
			
		||||
		{
 | 
			
		||||
			"http://localhost:5063"
 | 
			
		||||
		};
 | 
			
		||||
		_servers = new();
 | 
			
		||||
		configuration.Bind("servers", _servers);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public ImmutableList<IRemoteServerConfiguration> Servers => _servers.Cast<IRemoteServerConfiguration>().ToImmutableList();
 | 
			
		||||
 | 
			
		||||
	public ImmutableList<IRemoteServerConfiguration> Query(string id)
 | 
			
		||||
	{
 | 
			
		||||
		return _servers.Where(e => e.Id == id).Cast<IRemoteServerConfiguration>().ToImmutableList();
 | 
			
		||||
	}
 | 
			
		||||
	public List<string> Servers { get; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,13 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Connected.Configuration;
 | 
			
		||||
internal class RemoteServerConfiguration : IRemoteServerConfiguration
 | 
			
		||||
{
 | 
			
		||||
	public string? Id { get; init; }
 | 
			
		||||
 | 
			
		||||
	public string? Address { get; init; }
 | 
			
		||||
}
 | 
			
		||||
@ -1,21 +1,42 @@
 | 
			
		||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <TargetFramework>net7.0</TargetFramework>
 | 
			
		||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
			
		||||
    <Nullable>enable</Nullable>
 | 
			
		||||
    <RootNamespace>Connected</RootNamespace>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
		<RootNamespace>Connected</RootNamespace>
 | 
			
		||||
		<TargetFramework>net7.0</TargetFramework>
 | 
			
		||||
		<ImplicitUsings>enable</ImplicitUsings>
 | 
			
		||||
		<Nullable>enable</Nullable>
 | 
			
		||||
		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
 | 
			
		||||
		<Title>$(AssemblyName)</Title>
 | 
			
		||||
		<Authors>Tom PIT ltd</Authors>
 | 
			
		||||
		<Copyright>2022 Tom PIT ltd</Copyright>
 | 
			
		||||
		<PackageProjectUrl>https://git.tompit.com/Connected/Info</PackageProjectUrl>
 | 
			
		||||
		<PackageReadmeFile>README.md</PackageReadmeFile>
 | 
			
		||||
		<PackageTags>connected;platform;</PackageTags>
 | 
			
		||||
		<IncludeSymbols>True</IncludeSymbols>
 | 
			
		||||
		<SymbolPackageFormat>snupkg</SymbolPackageFormat>
 | 
			
		||||
		<PackageLicenseFile>LICENSE</PackageLicenseFile>
 | 
			
		||||
		<PackageOutputPath>$(OutputPath)</PackageOutputPath>
 | 
			
		||||
	</PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.*-*" />
 | 
			
		||||
	  <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="7.0.*-*" />
 | 
			
		||||
	  <PackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="7.0.*-*" />
 | 
			
		||||
	  <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.*-*" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
		<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.*-*" />
 | 
			
		||||
		<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="7.0.*-*" />
 | 
			
		||||
		<PackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="7.0.*-*" />
 | 
			
		||||
	 	<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.*-*" />
 | 
			
		||||
	</ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\Connected\Connected.csproj" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
		<ProjectReference Include="..\Connected\Connected.csproj" />
 | 
			
		||||
	</ItemGroup>
 | 
			
		||||
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
		<None Include="..\..\LICENSE">
 | 
			
		||||
			<Pack>True</Pack>
 | 
			
		||||
			<PackagePath>\</PackagePath>
 | 
			
		||||
		</None>
 | 
			
		||||
		<None Include="..\..\README.md">
 | 
			
		||||
			<Pack>True</Pack>
 | 
			
		||||
			<PackagePath>\</PackagePath>
 | 
			
		||||
		</None>
 | 
			
		||||
	</ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
using Connected.Net;
 | 
			
		||||
using Connected.Configuration;
 | 
			
		||||
using Connected.Net;
 | 
			
		||||
using Connected.Startup;
 | 
			
		||||
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
 | 
			
		||||
using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
using Connected.Configuration;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
 | 
			
		||||
namespace Connected.Net;
 | 
			
		||||
 | 
			
		||||
@ -7,7 +8,7 @@ namespace Connected.Net;
 | 
			
		||||
/// </summary>
 | 
			
		||||
internal class RemoteProviderService : IRemoteProviderService
 | 
			
		||||
{
 | 
			
		||||
	public RemoteProviderService(IConfigurationService configuration)
 | 
			
		||||
	public RemoteProviderService(IConfiguration configuration)
 | 
			
		||||
	{
 | 
			
		||||
		Configuration = configuration;
 | 
			
		||||
		Balancer = new();
 | 
			
		||||
@ -16,7 +17,7 @@ internal class RemoteProviderService : IRemoteProviderService
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private RoundRobin Balancer { get; }
 | 
			
		||||
	private IConfigurationService Configuration { get; }
 | 
			
		||||
	private IConfiguration Configuration { get; }
 | 
			
		||||
 | 
			
		||||
	public string ProvideBaseUrl()
 | 
			
		||||
	{
 | 
			
		||||
@ -30,7 +31,10 @@ internal class RemoteProviderService : IRemoteProviderService
 | 
			
		||||
 | 
			
		||||
	private void Initialize()
 | 
			
		||||
	{
 | 
			
		||||
		foreach (var s in Configuration.Remote.Servers)
 | 
			
		||||
			Balancer.Register(new RemoteDescriptor(s));
 | 
			
		||||
		var remoteConfiguration = new RemoteConfiguration(Configuration.GetSection("remote"));
 | 
			
		||||
 | 
			
		||||
		foreach (var s in remoteConfiguration.Servers)
 | 
			
		||||
			if (!string.IsNullOrWhiteSpace(s.Address))
 | 
			
		||||
				Balancer.Register(new RemoteDescriptor(s.Address));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -12,14 +12,16 @@
 | 
			
		||||
    <Copyright>Tom PIT</Copyright>
 | 
			
		||||
    <PackageProjectUrl>https://git.tompit.com/Connected/connected</PackageProjectUrl>
 | 
			
		||||
    <PackageReadmeFile>README.md</PackageReadmeFile>
 | 
			
		||||
    <RepositoryUrl>https://git.tompit.com/Connected/connected</RepositoryUrl>
 | 
			
		||||
		<RepositoryUrl>https://git.tompit.com/Connected/Connected</RepositoryUrl>
 | 
			
		||||
    <PackageTags>connected;platform;</PackageTags>
 | 
			
		||||
    <PackageReleaseNotes>First beta release</PackageReleaseNotes>
 | 
			
		||||
		<PackageReleaseNotes></PackageReleaseNotes>
 | 
			
		||||
    <IncludeSymbols>True</IncludeSymbols>
 | 
			
		||||
    <SymbolPackageFormat>snupkg</SymbolPackageFormat>
 | 
			
		||||
    <PackageLicenseFile>LICENSE</PackageLicenseFile>
 | 
			
		||||
    <GenerateDocumentationFile>True</GenerateDocumentationFile>
 | 
			
		||||
    <DocumentationFile>..\..\docs\api\connected.xml</DocumentationFile>
 | 
			
		||||
		<PackageOutputPath>$(OutputPath)</PackageOutputPath>
 | 
			
		||||
		<Version>$(VersionPrefix)$(VersionSuffix)</Version>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
@ -57,5 +59,4 @@
 | 
			
		||||
      <PackagePath>\</PackagePath>
 | 
			
		||||
    </None>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user