public async Task Init() { // Please sign in first, following services uses the client file var cache = new TDUnprotectedCache(); client = new TDAmeritradeClient(cache); await client.PostRefreshToken(); Assert.IsTrue(client.IsSignedIn); }
public async Task MarketHoursAsync_Weekday_AllMarkets() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.MarketHours(new MarketType[] { MarketType.Bond, MarketType.Equity, MarketType.Option, MarketType.Future, MarketType.Forex }, DateTime.UtcNow, default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNotNull(res.Response); Assert.IsNull(res.Error); Assert.AreEqual(HttpStatusCode.OK, res.StatusCode); Assert.AreEqual(5, res?.Response?.Keys.Count()); }
public async Task MarketHoursAsync_BadDate() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.MarketHours(new MarketType[] { MarketType.Bond }, DateTime.UtcNow.AddDays(-5), default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNull(res.Response); Assert.IsNotNull(res.Error); Assert.AreEqual(HttpStatusCode.BadRequest, res.StatusCode); Assert.AreEqual("Input date is not acceptable.", res?.Error.Message); }
public async Task FundamentalDataAsync_DoesNotExist() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.FundamentalDataAsync("fdafasdfasd", default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNull(res.Response); Assert.IsNotNull(res.Error); Assert.AreEqual(HttpStatusCode.NotFound, res.StatusCode); Assert.AreEqual("Not Found", res?.Error?.Error); }
public async Task SearchAsync_SymbolRegex() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.SearchAsync("a.*", SearchType.SymbolRegex, default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNotNull(res.Response); Assert.IsNull(res.Error); Assert.AreEqual(HttpStatusCode.OK, res.StatusCode); Assert.Less(100, res?.Response?.Count); }
public async Task PriceHistoryAsync_BadSymbol() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.PriceHistoryAsync("DoesNotExist", default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNotNull(res.Response); Assert.IsNull(res.Error); Assert.AreEqual(HttpStatusCode.OK, res.StatusCode); Assert.AreEqual("DoesNotExist", res?.Response?.Symbol); Assert.IsTrue(res.Response.Empty); }
public async Task PriceHistoryAsync_IBM_1Day_EveryMinute() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.PriceHistoryAsync("IBM", History.Days(HowManyDays.One, Minutes.One), false, default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNotNull(res.Response); Assert.IsNull(res.Error); Assert.AreEqual(HttpStatusCode.OK, res.StatusCode); Assert.AreEqual("IBM", res?.Response?.Symbol); Assert.IsFalse(res?.Response?.Empty); Assert.GreaterOrEqual(res?.Response?.Candles?.Count, 389); }
public async Task PriceHistoryAsync_IBM() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.PriceHistoryAsync("IBM", default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNotNull(res.Response); Assert.IsNull(res.Error); Assert.AreEqual(HttpStatusCode.OK, res.StatusCode); Assert.AreEqual("IBM", res?.Response?.Symbol); Assert.IsFalse(res?.Response?.Empty); Assert.Less(10, res?.Response?.Candles?.Count); }
public async Task FundamentalDataAsync_AA() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.FundamentalDataAsync("AA", default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNotNull(res.Response); Assert.IsNull(res.Error); Assert.AreEqual(HttpStatusCode.OK, res.StatusCode); Assert.AreEqual("AA", res?.Response?.Symbol); Assert.IsNotNull(res?.Response?.Fundamental); }
public async Task PriceHistoryAsync_AGFXF_20Years_Weekly() { var settings = InitSettings(); using var client = new TDAmeritradeClient(settings, this.Logger); var res = await client.PriceHistoryAsync("AGFXF", History.Years(HowManyYears.Twenty, Yearly.ByWeek), false, default) .ConfigureAwait(false); Assert.IsNotNull(res); Assert.IsNotNull(res.Response); Assert.IsNull(res.Error); Assert.AreEqual(HttpStatusCode.OK, res.StatusCode); Assert.AreEqual("AGFXF", res?.Response?.Symbol); Assert.IsFalse(res?.Response?.Empty); Assert.AreEqual(573, res?.Response?.Candles?.Count); }
public HomeController(ILogger <HomeController> logger, TDAmeritradeClient client) { _logger = logger; _client = client; }
public Program() { cache = new TDUnprotectedCache(); client = new TDAmeritradeClient(cache); }
static async Task Main(string[] args) { Console.WriteLine("Starting Client"); Console.WriteLine("..."); //var serviceCollection = new ServiceCollection(); //serviceCollection.AddDataProtection(); //var services = serviceCollection.BuildServiceProvider(); //var protection = services.GetService<IDataProtectionProvider>(); //var cache = new TDProtectedCache(protection); //var client = new TDAmeritradeClient(cache); var cache = new TDUnprotectedCache(); var client = new TDAmeritradeClient(cache); Console.WriteLine("1 to sign in fresh, 2 to refresh signin, 3 streaming"); var option = Console.ReadKey(); switch (option.Key) { case ConsoleKey.D1: Console.WriteLine("Paste consumer key :"); var key = Console.ReadLine(); Console.WriteLine("Opening Browser. Please sign in."); client.RequestAccessToken(key); Console.WriteLine("Paste the code. This is in the browser url bar 'code={code}'."); var code = Console.ReadLine(); await client.PostAccessToken(key, code); Console.WriteLine($"Authenticated {client.IsSignedIn}."); Console.ReadLine(); break; case ConsoleKey.D2: await client.PostRefreshToken(); Console.WriteLine($"Authenticated {client.IsSignedIn}."); Console.ReadLine(); break; case ConsoleKey.D3: await client.PostRefreshToken(); Console.WriteLine($"Authenticated {client.IsSignedIn}."); var socket = new TDAmeritradeStreamClient(client); socket.OnMessage += (m) => { Console.WriteLine(m); }; await socket.Connect(); await socket.Subscribe_Chart("MSFT"); Console.ReadLine(); break; default: return; } }