/// Stream wallet snapshot manually
        /// </summary>
        /// <param name="communicator"></param>
        /// <param name="apiKey"></param>
        /// <param name="apiSecret"></param>
        /// <param name="passphrase"></param>
        /// <returns></returns>
        public static async Task StreamWalletsSnapshot(ICoinbaseCommunicator communicator,
                                                       string apiKey,
                                                       string apiSecret,
                                                       string passphrase)
        {
            var authentication = new CoinbaseAuthentication(apiKey, apiSecret, passphrase);
            var request        =
                await CoinbaseHttpClient.SendHttpRequest(authentication, apiKey, apiSecret, passphrase, "/accounts");

            var wallets = WalletResponse.FromJson(request);

            var snapshot = new WalletsSnapshotResponse();

            snapshot.Wallets = wallets;
            snapshot.Type    = ChannelType.WalletsSnapshot;

            var serialized = JsonConvert.SerializeObject(snapshot, CoinbaseJsonSerializer.Settings);

            communicator.StreamFakeMessage(ResponseMessage.TextMessage(serialized));
        }
 public static string ToJson(WalletsSnapshotResponse self)
 {
     return(JsonConvert.SerializeObject(self, CoinbaseJsonSerializer.Settings));
 }