From ed007b5272bcc8c5dfe8d1fee2139bd3ef5c0f4e Mon Sep 17 00:00:00 2001
From: Jkorf <jankorf91@gmail.com>
Date: Wed, 23 Oct 2024 14:04:10 +0200
Subject: [PATCH] Added overload for Create method in OrderBookFactory using
 SharedSymbol

---
 CryptoExchange.Net/Interfaces/IOrderBookFactory.cs |  8 ++++++++
 CryptoExchange.Net/OrderBook/OrderBookFactory.cs   | 10 +++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/CryptoExchange.Net/Interfaces/IOrderBookFactory.cs b/CryptoExchange.Net/Interfaces/IOrderBookFactory.cs
index 2ffc9e3..5ca48d1 100644
--- a/CryptoExchange.Net/Interfaces/IOrderBookFactory.cs
+++ b/CryptoExchange.Net/Interfaces/IOrderBookFactory.cs
@@ -1,4 +1,5 @@
 using CryptoExchange.Net.Objects.Options;
+using CryptoExchange.Net.SharedApis;
 using System;
 
 namespace CryptoExchange.Net.Interfaces
@@ -23,5 +24,12 @@ namespace CryptoExchange.Net.Interfaces
         /// <param name="options">Options for the order book</param>
         /// <returns></returns>
         public ISymbolOrderBook Create(string baseAsset, string quoteAsset, Action<TOptions>? options = null);
+        /// <summary>
+        /// Create a new order book by base and quote asset names
+        /// </summary>
+        /// <param name="symbol">Symbol</param>
+        /// <param name="options">Options for the order book</param>
+        /// <returns></returns>
+        public ISymbolOrderBook Create(SharedSymbol symbol, Action<TOptions>? options = null);
     }
 }
diff --git a/CryptoExchange.Net/OrderBook/OrderBookFactory.cs b/CryptoExchange.Net/OrderBook/OrderBookFactory.cs
index 279dddb..0aafaef 100644
--- a/CryptoExchange.Net/OrderBook/OrderBookFactory.cs
+++ b/CryptoExchange.Net/OrderBook/OrderBookFactory.cs
@@ -1,5 +1,6 @@
 using CryptoExchange.Net.Interfaces;
 using CryptoExchange.Net.Objects.Options;
+using CryptoExchange.Net.SharedApis;
 using System;
 
 namespace CryptoExchange.Net.OrderBook
@@ -8,14 +9,14 @@ namespace CryptoExchange.Net.OrderBook
     public class OrderBookFactory<TOptions> : IOrderBookFactory<TOptions> where TOptions: OrderBookOptions
     {
         private readonly Func<string, Action<TOptions>?, ISymbolOrderBook> _symbolCtor;
-        private readonly Func<string, string, Action<TOptions>?, ISymbolOrderBook> _assetsCtor;
+        private readonly Func<SharedSymbol, Action<TOptions>?, ISymbolOrderBook> _assetsCtor;
 
         /// <summary>
         /// ctor
         /// </summary>
         /// <param name="symbolCtor"></param>
         /// <param name="assetsCtor"></param>
-        public OrderBookFactory(Func<string, Action<TOptions>?, ISymbolOrderBook> symbolCtor, Func<string, string, Action<TOptions>?, ISymbolOrderBook> assetsCtor)
+        public OrderBookFactory(Func<string, Action<TOptions>?, ISymbolOrderBook> symbolCtor, Func<SharedSymbol, Action<TOptions>?, ISymbolOrderBook> assetsCtor)
         {
             _symbolCtor = symbolCtor;
             _assetsCtor = assetsCtor;
@@ -25,6 +26,9 @@ namespace CryptoExchange.Net.OrderBook
         public ISymbolOrderBook Create(string symbol, Action<TOptions>? options = null) => _symbolCtor(symbol, options);
 
         /// <inheritdoc />
-        public ISymbolOrderBook Create(string baseAsset, string quoteAsset, Action<TOptions>? options = null) => _assetsCtor(baseAsset, quoteAsset, options);
+        public ISymbolOrderBook Create(string baseAsset, string quoteAsset, Action<TOptions>? options = null) => _assetsCtor(new SharedSymbol(TradingMode.Spot, baseAsset, quoteAsset), options);
+        
+        /// <inheritdoc />
+        public ISymbolOrderBook Create(SharedSymbol symbol, Action<TOptions>? options = null) => _assetsCtor(symbol, options);
     }
 }