4.0 KiB
4.0 KiB
Changelog
0.2.0
Added
QuestsService(client.Quests) withListAsync/ClaimAsync.AuthService.LoginWithDeviceAsync(region, language, nickname?)andAuthService.RefreshAsync();AuthStateChangedevent (RudderAuthState.SignedIn/SignedOut).- Session pipeline: single-flight token refresh plus one transparent
retry-on-401 for every API call; failed refresh clears tokens and reports
SignedOut. HttpClientTransport— defaultSystem.Net.Http.HttpClient-based transport.RudderClientOptions.Transportis now optional, as areTokenStore(InMemoryTokenStore) andDeviceIdProvider(GuidDeviceIdProvider).- Typed exceptions:
RudderAuthException(401),RudderNotFoundException(404),RudderRateLimitException(429),RudderNetworkException(network/timeout). All carryRequestIdfrom the server error payload. StorageService.ListAllAsyncandUgcService.ListAllAsync(IAsyncEnumerable<T>cursor pagination helpers).RudderLogLevelenum;IRudderLogger.Lognow takes a level.- Package metadata (
Rudder.Core, MIT) and XML documentation.
Changed (breaking)
- Generated models moved to domain folders/namespaces
(
RudderSdk.Core.Models.<Domain>); the flatRudderSdk.Core.DTOnamespace is gone.Battlepass*→BattlePass*,SdkQuest→Quest. BattlepassService→BattlePassService,client.Battlepass→client.BattlePass.client.Scenarios→client.Scenario.ScenarioService.SendAsync→TriggerAsync, now returning the startedPlanRuns.- Scenario events reduced to the canonical set:
OnNotification,OnStoreOffer,OnLeaderboard,OnConfigChanged,OnWait,OnQuest,OnBattlePass,OnBattlePassLevel,OnScenarioCompleted,OnScenarioFailed. Legacy events (OnShowNotification,OnShowStore,OnQuestEvent,OnBattlepassEvent,OnLeaderboardEvent,OnNodeEvent,OnNode,OnCompleted,OnStore,OnRemoteConfigOverride,OnRunCompleted,OnRunFailed) are removed, along with theServices/Scenarios/Legacyfolder. - Session types renamed:
StoreSession→StoreOfferSession(BuyAsync/Buy→PurchaseAsync/Purchase),RemoteConfigOverrideSession→ConfigChangedSession,BattlepassSession→BattlePassSession,BattlepassLevelSession→BattlePassLevelSession,ScenarioRunFailedEvent→ScenarioFailedEvent. StoresService.BuyAsync→PurchaseAsync(storeSlug, offerId, idempotencyKey = null); a null key is replaced with a generated GUID.InventoryService.GetAsyncreturnsIReadOnlyList<PlayerInventoryItem>.StoresService.ListAsyncreturnsIReadOnlyList<Store>.QuestsService.ListAsyncreturnsIReadOnlyList<Quest>.UgcService.GetDownloadUrlAsyncreturns non-nullstringand throwsInvalidOperationExceptionwhen the server returns no URL.BattlePassServicesimple overloads (AddXpAsync(long amount),ClaimRewardAsync(level, track),GetProgressAsync(),PurchasePremiumAsync(idempotencyKey?)); the request-DTO overloads are internal for the scenario runtime.LeaderboardsService.GetRankingAsync/SubmitScoreAsyncare internal; use theFindBySlug(slug)handle (SubmitAsync,ListAsync).AuthService.LoginViaDeviceAsyncremoved; useLoginWithDeviceAsync.ScenarioService.Restore()(sync-over-async) removed; useRestoreAsync.RealtimeService.ConnectAsyncandIRealtimeTransport.ConnectAsynctakeTimeSpantimeouts instead ofint timeoutSeconds.IRudderTransport.SendAsynctakes astring? accessTokeninstead ofRequestOptions;RequestOptionsis removed andEmptyResponseis internal.RudderClientgettersOptions,Transport,TokenStore,DeviceIdProviderare internal.RudderApiException.StatusCodeisint(waslong).IRudderLogger.Log(string)→Log(RudderLogLevel level, string message).- Nullable reference types enabled (
<Nullable>enable</Nullable>). - Remote config cache now includes every config except an explicit
"active": false(a missing flag means active).