Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using AutoTrader.Classes.Models;
- using AutoTrader.Interfaces;
- using HtmlAgilityPack;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Net.Http;
- using System.Text;
- using System.Threading.Tasks;
- namespace AutoTrader.Classes.Dataproviders
- {
- public class InvestingComProvider : ITradeDataProvider, IDisposable
- {
- private const string url = "https://ca.investing.com/equities/canada";
- private HttpClient httpClient = new HttpClient(new HttpClientHandler()
- {
- CookieContainer = new CookieContainer()
- });
- public InvestingComProvider()
- {
- httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36");
- }
- public async Task<SymbolData[]> GetAllSymbolsCurrentValue()
- {
- List<SymbolData> res = new();
- var s = await httpClient.GetStringAsync(url);
- //string s = await File.ReadAllTextAsync(@"c:\bin\output.html");
- HtmlDocument doc = new HtmlDocument();
- doc.LoadHtml(s);
- var symbolsTable = doc.DocumentNode.SelectNodes("//table[@id='cross_rate_markets_stocks_1']/tbody").SingleOrDefault();
- var symbols = symbolsTable.SelectNodes("tr");//.ToList();
- DateTime now = DateTime.UtcNow;
- foreach (var ss in symbols)
- {
- var name = ss.SelectSingleNode("td[@class='bold left noWrap elp plusIconTd']").InnerText;
- var lastPrice = ss.SelectSingleNode("td[contains(@class,'-last')]").InnerText;
- if (decimal.TryParse(lastPrice.Replace(",", ""), NumberStyles.Any, CultureInfo.InvariantCulture, out decimal p))
- {
- SymbolData toAdd = new SymbolData()
- {
- DataAt = now,
- SymbolName = name,
- Quote = p
- };
- res.Add(toAdd);
- }
- else
- {
- }
- }
- return res.ToArray();
- }
- public async Task<SymbolData> GetDataForSymbol(string name)
- {
- return (await GetAllSymbolsCurrentValue()).Where(x => x.SymbolName == name).SingleOrDefault();
- }
- public Task<SymbolData[]> GetAllSymbols(DateTime OnDate)
- {
- throw new NotImplementedException();
- }
- public void Dispose()
- {
- if (httpClient != null)
- {
- httpClient.Dispose();
- httpClient = null;
- }
- }
- public Task<Dictionary<string, List<SymbolData>>> GetHistoryDataForSymbols(DateTime from, DateTime to)
- {
- throw new NotImplementedException();
- }
- public Task<Dictionary<string, List<SymbolData>>> GetHistoryDataForSymbols(string[] symbols, DateTime from, DateTime to)
- {
- throw new NotImplementedException();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement