From 3c590294c94d1846989ed759e38972d723a496bf Mon Sep 17 00:00:00 2001 From: edmand46 Date: Fri, 28 Aug 2026 13:36:12 +0300 Subject: [PATCH] sdk: LoginWithCustomAsync + regenerated auth models --- .DS_Store | Bin 6148 -> 0 bytes Auth/LoginViaCustomRequest.cs | 24 ++++++++++++ Auth/LoginViaCustomResponse.cs | 14 +++++++ .../RudderApiException.cs | 0 .../RudderAuthException.cs | 0 .../RudderNetworkException.cs | 0 .../RudderNotFoundException.cs | 0 .../RudderRateLimitException.cs | 0 Services/AuthService.cs | 35 +++++++++++++++++- 9 files changed, 72 insertions(+), 1 deletion(-) delete mode 100644 .DS_Store create mode 100644 Auth/LoginViaCustomRequest.cs create mode 100644 Auth/LoginViaCustomResponse.cs rename RudderApiException.cs => Exceptions/RudderApiException.cs (100%) rename RudderAuthException.cs => Exceptions/RudderAuthException.cs (100%) rename RudderNetworkException.cs => Exceptions/RudderNetworkException.cs (100%) rename RudderNotFoundException.cs => Exceptions/RudderNotFoundException.cs (100%) rename RudderRateLimitException.cs => Exceptions/RudderRateLimitException.cs (100%) diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 26a5be2b0ce27b4ab5f71e6391d904f38b185ab1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKziSjh7=3fM7Z#&%5C{qu+t>zE2#eeBZb4?b{!73qVb8w8w!efS6q{ zy2YVSleqLkE7_I%L?y>qTo|vnvhH#rGb{uLf&P0WSDn>oNsA2drGCueDR=#OI9dY@NA055iKGoN! zOgCBQo^dhi@m2POFGijB#40v+aGGbqo~RnqrM zg?9+maP$@JzZ;<!L%MI!h4t6`%6WNOIvg^iJA`@b2F*nE+w(v(l+YpA}z?C}i8_MPD A`v3p{ diff --git a/Auth/LoginViaCustomRequest.cs b/Auth/LoginViaCustomRequest.cs new file mode 100644 index 0000000..3638ceb --- /dev/null +++ b/Auth/LoginViaCustomRequest.cs @@ -0,0 +1,24 @@ +// Code generated by apigen. DO NOT EDIT. +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace RudderSdk.Core.Models.Auth; + +public class LoginViaCustomRequest +{ + [JsonProperty("customData")] + public JToken? CustomData { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("nickname")] + public string? Nickname { get; set; } + + [JsonProperty("region")] + public string? Region { get; set; } + +} diff --git a/Auth/LoginViaCustomResponse.cs b/Auth/LoginViaCustomResponse.cs new file mode 100644 index 0000000..560f69d --- /dev/null +++ b/Auth/LoginViaCustomResponse.cs @@ -0,0 +1,14 @@ +// Code generated by apigen. DO NOT EDIT. +using Newtonsoft.Json; + +namespace RudderSdk.Core.Models.Auth; + +public class LoginViaCustomResponse +{ + [JsonProperty("accessToken")] + public string? AccessToken { get; set; } + + [JsonProperty("refreshToken")] + public string? RefreshToken { get; set; } + +} diff --git a/RudderApiException.cs b/Exceptions/RudderApiException.cs similarity index 100% rename from RudderApiException.cs rename to Exceptions/RudderApiException.cs diff --git a/RudderAuthException.cs b/Exceptions/RudderAuthException.cs similarity index 100% rename from RudderAuthException.cs rename to Exceptions/RudderAuthException.cs diff --git a/RudderNetworkException.cs b/Exceptions/RudderNetworkException.cs similarity index 100% rename from RudderNetworkException.cs rename to Exceptions/RudderNetworkException.cs diff --git a/RudderNotFoundException.cs b/Exceptions/RudderNotFoundException.cs similarity index 100% rename from RudderNotFoundException.cs rename to Exceptions/RudderNotFoundException.cs diff --git a/RudderRateLimitException.cs b/Exceptions/RudderRateLimitException.cs similarity index 100% rename from RudderRateLimitException.cs rename to Exceptions/RudderRateLimitException.cs diff --git a/Services/AuthService.cs b/Services/AuthService.cs index 766fd09..d755693 100644 --- a/Services/AuthService.cs +++ b/Services/AuthService.cs @@ -1,6 +1,7 @@ using System; using System.Threading; using System.Threading.Tasks; +using Newtonsoft.Json.Linq; using RudderSdk.Core.Models.Auth; namespace RudderSdk.Core; @@ -41,7 +42,39 @@ public sealed class AuthService DeviceId = _client.DeviceIdProvider.DeviceId, Region = region, Language = language, - Nickname = nickname! + Nickname = nickname + }, + cancellationToken).ConfigureAwait(false); + + if (response == null || string.IsNullOrEmpty(response.AccessToken) || string.IsNullOrEmpty(response.RefreshToken)) + throw new InvalidOperationException("The server returned an incomplete session."); + + _client.TokenStore.SaveTokens(response.AccessToken, response.RefreshToken); + NotifySignedIn(); + return response; + } + + /// + /// Signs the player in through the project's custom authorization webhook. + /// The returned token pair is stored in the configured token store. + /// + public async Task LoginWithCustomAsync( + JToken customData, + string region, + string language, + string? nickname = null, + CancellationToken cancellationToken = default) + { + var response = await _client.SendAsync( + "POST", + "/sdk/v1/authorization/custom", + new LoginViaCustomRequest + { + Key = _client.ProjectKey, + CustomData = customData, + Region = region, + Language = language, + Nickname = nickname }, cancellationToken).ConfigureAwait(false);