From 8913a0486ac9f7dd2dd3bc9f9d97ed7d656d66db Mon Sep 17 00:00:00 2001 From: Tim Miller Date: Mon, 31 Jul 2023 14:08:22 +0900 Subject: [PATCH] Update options --- src/FishyFlip/ATProtocol.cs | 16 ++++++++++++++-- src/FishyFlip/ATProtocolBuilder.cs | 13 +++++++++++++ src/FishyFlip/ATProtocolOptions.cs | 5 +++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/FishyFlip/ATProtocol.cs b/src/FishyFlip/ATProtocol.cs index 8461bbd..3dc38d6 100644 --- a/src/FishyFlip/ATProtocol.cs +++ b/src/FishyFlip/ATProtocol.cs @@ -115,6 +115,11 @@ public ATProtocol(ATProtocolOptions options) /// public bool IsSubscriptionActive => this.webSocketProtocol.IsConnected; + /// + /// Gets the base address for the underlying HttpClient. + /// + public Uri? BaseAddress => this.client.BaseAddress; + /// /// Gets the Internal HttpClient. /// @@ -170,7 +175,14 @@ public void UpdateOptions(ATProtocolOptions options) this.sessionManager.Dispose(); this.webSocketProtocol = new ATWebSocketProtocol(this); this.webSocketProtocol.OnConnectionUpdated += this.WebSocketProtocolOnConnectionUpdated; - this.sessionManager = new SessionManager(this); + if (options.Session is not null) + { + this.sessionManager = new SessionManager(this, options.Session); + } + else + { + this.sessionManager = new SessionManager(this); + } } /// @@ -207,7 +219,7 @@ internal void OnUserLoggedIn(Session session) /// Sets the current session. /// /// . - public void SetSession(Session session) + internal void SetSession(Session session) => this.sessionManager?.SetSession(session); private void Dispose(bool disposing) diff --git a/src/FishyFlip/ATProtocolBuilder.cs b/src/FishyFlip/ATProtocolBuilder.cs index a9a37a3..7fbc4c2 100644 --- a/src/FishyFlip/ATProtocolBuilder.cs +++ b/src/FishyFlip/ATProtocolBuilder.cs @@ -2,6 +2,8 @@ // Copyright (c) Drastic Actions. All rights reserved. // +using System.Security.Cryptography.X509Certificates; + namespace FishyFlip; /// @@ -96,6 +98,17 @@ public ATProtocolBuilder WithSessionRefreshInterval(TimeSpan interval) return this; } + /// + /// Sets an initial session to use. + /// + /// . + /// + public ATProtocolBuilder WithInitialSession(Session session) + { + this.atProtocolOptions.Session = session; + return this; + } + /// /// Set the ATProtocol to use admin credentials. /// diff --git a/src/FishyFlip/ATProtocolOptions.cs b/src/FishyFlip/ATProtocolOptions.cs index f8ca59e..953c2d4 100644 --- a/src/FishyFlip/ATProtocolOptions.cs +++ b/src/FishyFlip/ATProtocolOptions.cs @@ -53,6 +53,11 @@ public ATProtocolOptions() /// public ILogger? Logger { get; internal set; } + /// + /// Gets the initial session. + /// + public Session? Session { get; internal set; } + /// /// Gets the instance Url. ///