From c8ee1e487f0b08bbc3f3e2315655861e469ec4f9 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Wed, 27 May 2026 14:07:42 -0400 Subject: [PATCH] ext: HttpContext.GetUdid() over SID-mapping service Mirrors how the translation middleware resolves the per-request UDID; needed by ToolController.Signup and the SteamSession find-or-link branch. Co-Authored-By: Claude Opus 4.7 --- .../Extensions/HttpContextExtensions.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/SVSim.EmulatedEntrypoint/Extensions/HttpContextExtensions.cs b/SVSim.EmulatedEntrypoint/Extensions/HttpContextExtensions.cs index 8e5f4f7..0228bb0 100644 --- a/SVSim.EmulatedEntrypoint/Extensions/HttpContextExtensions.cs +++ b/SVSim.EmulatedEntrypoint/Extensions/HttpContextExtensions.cs @@ -1,11 +1,13 @@ using SVSim.Database.Models; +using SVSim.EmulatedEntrypoint.Constants; +using SVSim.EmulatedEntrypoint.Services; namespace SVSim.EmulatedEntrypoint.Extensions; public static class HttpContextExtensions { private const string ViewerItemName = "SVSimViewer"; - + public static Viewer? GetViewer(this HttpContext context) { if (context.Items.TryGetValue(ViewerItemName, out object? viewer)) @@ -21,4 +23,18 @@ public static class HttpContextExtensions context.Items[ViewerItemName] = viewer; return viewer; } -} \ No newline at end of file + + /// + /// Resolves the client's UDID for this request by looking up the SID header in the + /// in-memory SID→UDID dict that + /// populates from the UDID header. Returns null when the SID isn't mapped (e.g. the + /// request didn't carry a UDID header at all, or carried an undecodable one). + /// + public static Guid? GetUdid(this HttpContext context) + { + string? sid = context.Request.Headers[NetworkConstants.SessionIdHeaderName]; + if (sid is null) return null; + var sessionService = context.RequestServices.GetService(); + return sessionService?.GetUdidFromSessionId(sid); + } +}