/// <summary>
        /// The DI constructor.
        /// </summary>
        /// <param name="client">The JSON client (required).</param>
        /// <param name="controller">The web socket stream controller (required).</param>
        /// <param name="streamControl">The web socket stream control (required).</param>
        /// <param name="logger">The logger (optional).</param>
        public UserDataWebSocketClientManager(IUserDataClient client, IWebSocketStreamController controller, IUserDataWebSocketStreamControl streamControl, ILogger <UserDataWebSocketClientManager> logger = null)
            : base(client, controller, logger)
        {
            Throw.IfNull(streamControl, nameof(streamControl));

            _streamControl = streamControl;

            _streamControl.ListenKeyUpdate += (s, a) =>
            {
                try
                {
                    if (a.NewListenKey == null)
                    {
                        Logger?.LogError($"{nameof(UserDataWebSocketClientManager)}: Failed to get new listen key.");
                        return;
                    }

                    // Unsubscribe client from stream.
                    Controller.Stream.Unsubscribe(Client, a.OldListenKey);

                    // Update client listen key.
                    HandleListenKeyChange(a.OldListenKey, a.NewListenKey);

                    // Subscribe client to new stream.
                    Controller.Stream.Subscribe(Client, a.NewListenKey);
                }
                catch (Exception e)
                {
                    Logger?.LogError(e, $"{nameof(UserDataWebSocketClientManager)}: Failed to update listen key.");
                }
            };
        }
Example #2
0
 /// <summary>
 /// The DI constructor.
 /// </summary>
 /// <param name="client">The JSON client (required).</param>
 /// <param name="controller">The JSON stream controller (required).</param>
 /// <param name="logger">The logger (optional).</param>
 public UserDataClientManager(IUserDataClient client, IJsonStreamController controller, ILogger <UserDataClientManager> logger = null)
     : base(client, controller, logger)
 {
 }
Example #3
0
 /// <summary>
 /// Unsubscribe listen key (and user along w/ all callbacks).
 /// </summary>
 /// <param name="client"></param>
 /// <param name="listenKey"></param>
 public static IUserDataClient Unsubscribe(this IUserDataClient client, string listenKey)
 => client.Unsubscribe <UserDataEventArgs>(listenKey, null);
Example #4
0
 /// <summary>
 /// Subscribe listen key and user (w/o callback).
 /// </summary>
 /// <param name="client"></param>
 /// <param name="listenKey"></param>
 /// <param name="user"></param>
 public static IUserDataClient Subscribe(this IUserDataClient client, string listenKey, IBinanceApiUser user)
 => client.Subscribe <UserDataEventArgs>(listenKey, user, null);
Example #5
0
 public UserDataClientTests()
 {
     _client = new UserDataClient();
 }
Example #6
0
 public AuthenticateController(IUserDataClient userDataClient)
 {
     this.userDataClient = userDataClient;
 }