Skip to content
Draft
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
f18ee5c
Create initial draft for .NET 10 changes
hhvrc Sep 24, 2025
3143802
Merge branch 'develop' into feature/dotnet-10
hhvrc Oct 1, 2025
b283abf
Update Directory.Packages.props
hhvrc Oct 1, 2025
510d44e
Use field keyword
hhvrc Oct 1, 2025
a6c9ec1
Merge branch 'develop' into feature/dotnet-10
hhvrc Oct 17, 2025
1320cbb
Update Directory.Packages.props
hhvrc Oct 17, 2025
2735fa6
Fix some errors
hhvrc Oct 17, 2025
67c7a4d
Merge branch 'develop' into feature/dotnet-10
hhvrc Oct 17, 2025
590ea33
Update Directory.Packages.props
hhvrc Oct 20, 2025
a9b75ad
Update global.json
hhvrc Oct 28, 2025
70124a0
Merge branch 'develop' into feature/dotnet-10
hhvrc Oct 28, 2025
6775c2d
Revert some changes
hhvrc Oct 28, 2025
cc11289
Improve SessionService SessionLister
hhvrc Oct 28, 2025
ba965b6
Update global.json
hhvrc Nov 6, 2025
d1adb30
Revert some changes
hhvrc Nov 6, 2025
e0307a5
Merge branch 'develop' into feature/dotnet-10
hhvrc Nov 6, 2025
c18cd36
Update ListSessions.cs
hhvrc Nov 6, 2025
63c6565
Update ListSessions.cs
hhvrc Nov 6, 2025
16ff23c
Merge branch 'develop' into feature/dotnet-10
hhvrc Nov 10, 2025
296df41
Update Directory.Packages.props
hhvrc Nov 11, 2025
3b10388
Update Directory.Packages.props
hhvrc Nov 11, 2025
a550140
Update workflows
hhvrc Nov 11, 2025
2395048
Update docker files
hhvrc Nov 11, 2025
63df5fd
Revert "Update Directory.Packages.props"
hhvrc Nov 11, 2025
35b530d
OpenAPI broke
hhvrc Nov 11, 2025
b669fd2
This is gonna be alot of work
hhvrc Nov 11, 2025
ae70c50
Oops
hhvrc Nov 11, 2025
1d1ee8c
Update Directory.Packages.props
hhvrc Nov 12, 2025
89dadb9
More changes
hhvrc Nov 12, 2025
22647c3
Revert "More changes"
hhvrc Nov 12, 2025
e90f7ef
Update Directory.Packages.props
hhvrc Nov 22, 2025
7bb8598
Update global.json
hhvrc Nov 22, 2025
9981506
Update ci-build.yml
hhvrc Nov 22, 2025
126f33d
Merge branch 'develop' into feature/dotnet-10
hhvrc Nov 25, 2025
ac1dd0d
Update Serilog.AspNetCore to 10.0.0
hhvrc Nov 30, 2025
8fb7a5c
Merge branch 'develop' into feature/dotnet-10
hhvrc Dec 1, 2025
ac363cf
Additional fixes
hhvrc Dec 1, 2025
356f514
fix: dotnet 10 openapi (#261)
TuTiDore Dec 22, 2025
250b27a
Fix/dotnet 10 openapi 2 (#264)
TuTiDore Dec 25, 2025
56a876d
Update API/Controller/Device/Pair.cs
LucHeart Dec 26, 2025
35cb74d
Exclude legacy endpoint from generated OpenAPI document
hhvrc Dec 26, 2025
196ac0d
More comprehensive SchemaReferenceId generator
hhvrc Dec 26, 2025
6684a17
Fix doc exclude
hhvrc Dec 26, 2025
f0edbb7
Update OpenApiExtensions.cs
hhvrc Dec 26, 2025
2bdd976
Update OpenApiExtensions.cs
hhvrc Dec 26, 2025
86d3aba
Uncomplicate document registration
hhvrc Dec 26, 2025
be145ae
Merge branch 'develop' into feature/dotnet-10
hhvrc Jan 5, 2026
3546407
Use grouped dependabot updates
hhvrc Jan 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion API/Controller/Admin/GetOnlineDevices.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public async Task<IActionResult> GetOnlineDevices()
{
var devicesOnline = _redis.RedisCollection<DeviceOnline>(false);

var allOnlineDevices = await devicesOnline.ToArrayAsync();
var allOnlineDevices = await devicesOnline.ToListAsync();
var dbLookup = await _db.Devices
.Where(x => allOnlineDevices.Select(y => y.Id).Contains(x.Id))
.Select(x => new
Expand Down
7 changes: 3 additions & 4 deletions API/Controller/Sessions/ListSessions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ namespace OpenShock.API.Controller.Sessions;
public sealed partial class SessionsController
{
[HttpGet]
public async Task<IEnumerable<LoginSessionResponse>> ListSessions()
public IAsyncEnumerable<LoginSessionResponse> ListSessions()
{
var sessions = await _sessionService.ListSessionsByUserIdAsync(CurrentUser.Id);

return sessions.Select(LoginSessionResponse.MapFrom);
return _sessionService.ListSessionsByUserIdAsync(CurrentUser.Id)
.Select(LoginSessionResponse.MapFrom);
}
}
2 changes: 1 addition & 1 deletion Common/Hubs/UserHub.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public override async Task OnConnectedAsync()
.Where(x => x.Shockers.Any(y => y.UserShares.Any(z => z.SharedWithUserId == UserId)))
.Select(x => x.Id.ToString()).ToArrayAsync();

var own = devicesOnline.Where(x => x.Owner == UserId).ToArrayAsync();
var own = devicesOnline.Where(x => x.Owner == UserId).ToListAsync();
var shared = devicesOnline.FindByIdsAsync(sharedDevices);
await Task.WhenAll(own, shared);

Expand Down
5 changes: 3 additions & 2 deletions Common/OpenShockMiddlewareHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Redis.OM.Contracts;
using Scalar.AspNetCore;
using Serilog;
using IPNetwork = System.Net.IPNetwork;

namespace OpenShock.Common;

Expand All @@ -24,11 +25,11 @@ public static class OpenShockMiddlewareHelper
public static async Task<IApplicationBuilder> UseCommonOpenShockMiddleware(this WebApplication app)
{
var metricsOptions = app.Services.GetRequiredService<MetricsOptions>();
var metricsAllowedIpNetworks = metricsOptions.AllowedNetworks.Select(x => IPNetwork.Parse(x)).ToArray();
var metricsAllowedIpNetworks = metricsOptions.AllowedNetworks.Select(IPNetwork.Parse).ToArray();

foreach (var proxy in await TrustedProxiesFetcher.GetTrustedNetworksAsync())
{
ForwardedSettings.KnownNetworks.Add(proxy);
ForwardedSettings.KnownIPNetworks.Add(proxy);
}

app.UseForwardedHeaders(ForwardedSettings);
Expand Down
2 changes: 1 addition & 1 deletion Common/Services/LCGNodeProvisioner/LCGNodeProvisioner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public LCGNodeProvisioner(IRedisConnectionProvider redisConnectionProvider, IWeb

var nodes = await _lcgNodes
.Where(x => x.Environment == _environmentName)
.ToArrayAsync();
.ToListAsync();

var node = nodes
.OrderBy(x => DistanceLookup.TryGetDistanceBetween(x.Country, countryCode, out float distance) ? distance : Distance.DistanceToAndromedaGalaxyInKm) // Just a large number :3
Expand Down
2 changes: 1 addition & 1 deletion Common/Services/Session/ISessionService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ public interface ISessionService
{
public Task<CreateSessionResult> CreateSessionAsync(Guid userId, string userAgent, string ipAddress);

public Task<IReadOnlyList<LoginSession>> ListSessionsByUserIdAsync(Guid userId);
public IAsyncEnumerable<LoginSession> ListSessionsByUserIdAsync(Guid userId);

public Task<LoginSession?> GetSessionByTokenAsync(string sessionToken);

Expand Down
8 changes: 4 additions & 4 deletions Common/Services/Session/SessionService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ await _loginSessions.InsertAsync(new LoginSession
return new CreateSessionResult(id, token);
}

public async Task<IReadOnlyList<LoginSession>> ListSessionsByUserIdAsync(Guid userId)
public IAsyncEnumerable<LoginSession> ListSessionsByUserIdAsync(Guid userId)
{
return await _loginSessions.Where(x => x.UserId == userId).ToArrayAsync();
return _loginSessions.Where(x => x.UserId == userId);
}

public async Task<LoginSession?> GetSessionByTokenAsync(string sessionToken)
Expand Down Expand Up @@ -95,11 +95,11 @@ public async Task<bool> DeleteSessionByIdAsync(Guid sessionId)

public async Task<int> DeleteSessionsByUserIdAsync(Guid userId)
{
var sessions = await _loginSessions.Where(x => x.UserId == userId).ToArrayAsync();
var sessions = await _loginSessions.Where(x => x.UserId == userId).ToListAsync();

await _loginSessions.DeleteAsync(sessions);

return sessions.Length;
return sessions.Count;
}

public async Task DeleteSessionAsync(LoginSession loginSession)
Expand Down
4 changes: 2 additions & 2 deletions Common/Utils/TrustedProxiesFetcher.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using IPNetwork = Microsoft.AspNetCore.HttpOverrides.IPNetwork;
using System.Net;

namespace OpenShock.Common.Utils;

Expand All @@ -23,7 +23,7 @@ public static class TrustedProxiesFetcher
"fe80::/10",
];

private static readonly IPNetwork[] PrivateNetworksParsed = [.. PrivateNetworks.Select(x => IPNetwork.Parse(x))];
private static readonly IPNetwork[] PrivateNetworksParsed = [.. PrivateNetworks.Select(IPNetwork.Parse)];

private static readonly char[] NewLineSeperators = ['\r', '\n', '\t'];

Expand Down
4 changes: 2 additions & 2 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
</ItemGroup>

<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>

<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>Latest</LangVersion>
<LangVersion>Preview</LangVersion>
<Nullable>enable</Nullable>
<AssemblyName>$(Product)</AssemblyName>
<RootNamespace>$(Product.Replace(" ", "_"))</RootNamespace>
Expand Down
18 changes: 9 additions & 9 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@
<PackageVersion Include="IDisposableAnalyzers" Version="4.0.8" />
<PackageVersion Include="MailKit" Version="4.14.1" />
<PackageVersion Include="MessagePack" Version="3.1.4" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="9.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Twitter" Version="9.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="9.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="9.0.10" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.10" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.0-rc.2.25502.107" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Twitter" Version="10.0.0-rc.2.25502.107" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="10.0.0-rc.2.25502.107" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.0-rc.2.25502.107" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="10.0.0-rc.2.25502.107" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.0-rc.2.25502.107" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0-rc.2.25502.107" />
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.10.0" />
<PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0-rc.2" />
<PackageVersion Include="NRedisStack" Version="1.1.1" />
<PackageVersion Include="OneOf" Version="3.0.271" />
<PackageVersion Include="OpenShock.Serialization.Flatbuffers" Version="2.0.0-preview.5" />
Expand All @@ -41,6 +41,6 @@
<PackageVersion Include="Testcontainers.PostgreSql" Version="4.8.1" />
<PackageVersion Include="Testcontainers.Redis" Version="4.8.1" />
<PackageVersion Include="TUnit" Version="0.77.3" />
<PackageVersion Include="Z.EntityFramework.Plus.EFCore" Version="9.104.0.1" />
<PackageVersion Include="Z.EntityFramework.Plus.EFCore" Version="10.0.0-rc.2.25502.107-01" />
</ItemGroup>
</Project>
12 changes: 6 additions & 6 deletions LiveControlGateway/Controllers/HubControllerBase.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using FlatSharp;
using System.Diagnostics.CodeAnalysis;
using FlatSharp;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using OneOf;
Expand Down Expand Up @@ -37,17 +38,16 @@ public abstract class HubControllerBase<TIn, TOut> : FlatbuffersWebsocketBaseCon
/// Service provider
/// </summary>
protected readonly IServiceProvider ServiceProvider;

private HubLifetime? _hubLifetime;


/// <summary>
/// Hub lifetime
/// </summary>
/// <exception cref="InvalidOperationException"></exception>
[field: AllowNull, MaybeNull]
protected HubLifetime HubLifetime
{
get => _hubLifetime ?? throw new InvalidOperationException("Hub lifetime is null but was tried to access");
private set => _hubLifetime = value;
get => field ?? throw new InvalidOperationException("Hub lifetime is null but was tried to access");
private set;
}

private readonly LcgOptions _options;
Expand Down
6 changes: 3 additions & 3 deletions global.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"sdk": {
"version": "9.0.0",
"rollForward": "latestMinor",
"version": "10.0.0",
"rollForward": "latestFeature",
"allowPrerelease": false
}
}
}
Loading