public CommonStockActor(CommonStockInfo commonStork, IActorRef eodStocksActor) { CommonStorkData = commonStork; Discussions = new List <DiscussionItem>(); Receive <GetStockInfo>(m => { Sender.Tell(CommonStorkData); }); Receive <GetDiscussion>(m => { Sender.Tell(new ReadOnlyCollection <DiscussionItem>(Discussions)); }); Receive <AddDiscussion>(m => { var discussionItem = new DiscussionItem { Id = Discussions.Count + 1, UserName = m.UserName, Comment = m.Comment, EnteredOn = m.EnteredOn }; Discussions.Add(discussionItem); Sender.Tell(new DiscussionAdded(discussionItem.Id)); }); }
public void SearchStockProfileSampleFileTest() { string rootNodeDoc = @"//*[contains(@class,'table-reponsive')]"; string xPathStrong = @"//div/strong[starts-with(normalize-space(text()),'{0}')]/parent::div/following-sibling::div"; string xPathStrongA = @"//div/strong[starts-with(normalize-space(text()),'{0}')]/parent::div/following-sibling::div/a"; string xPathDiv = @"//div[starts-with(normalize-space(text()),'Authorized Capital')]/following-sibling::div"; var path = Path.GetFullPath(@"./../../../SourceFiles/commonStockProfileEn.html"); if (!File.Exists(path)) { throw new FileNotFoundException(path); } var doc = new HtmlDocument(); doc.Load(path); var rootDoc = doc.DocumentNode.SelectNodes(rootNodeDoc).FirstOrDefault(); var info = new CommonStockInfo() { Id = 1, Symbol = "A", }; info.SecurityName = SelectNode(rootDoc, xPathStrong, "Company Name"); info.Address = SelectNode(rootDoc, xPathStrong, "Address"); info.Telephone = SelectNode(rootDoc, xPathStrong, "Telephone"); info.Fax = SelectNode(rootDoc, xPathStrong, "Fax"); info.WebSite = SelectNode(rootDoc, xPathStrongA, "Website"); info.Market = SelectNode(rootDoc, xPathStrong, "Market"); info.Industry = SelectNode(rootDoc, xPathStrong, "Industry"); info.Sector = SelectNode(rootDoc, xPathStrong, "Sector"); info.FirstTradeDate = ConvertToDateTime(SelectNode(rootDoc, xPathStrong, "First Trade Date"), "dd MMM yyyy"); info.ParValue = ConvertToDecimal(SelectNode(rootDoc, xPathStrong, "Par Value")); info.AuthorizedCapital = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Authorized Capital")); info.PaidUpCapital = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Paid-up Capital")); info.ListedShare = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Listed Share")); info.PaidUpStock = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Paid-up Stock")); string result = JsonConvert.SerializeObject(info); _output.WriteLine(result); Console.WriteLine(result); }
public CommonStockInfo SearchStockProfile(SearchStockProfileCriteria criteria) { CommonStockInfo info = new CommonStockInfo() { Id = criteria.StockId, Symbol = criteria.Symbol }; var html = string.Format(htmlTarget, criteria.Symbol); HtmlWeb web = new HtmlWeb(); var htmlDoc = web.Load(html); var rootDoc = GetRootNode(htmlDoc); if (rootDoc != null) { info.SecurityName = SelectNode(rootDoc, xPathStrong, "Company Name"); info.Address = SelectNode(rootDoc, xPathStrong, "Address"); info.Telephone = SelectNode(rootDoc, xPathStrong, "Telephone"); info.Fax = SelectNode(rootDoc, xPathStrong, "Fax"); info.WebSite = SelectNode(rootDoc, xPathStrongA, "Website"); info.Market = SelectNode(rootDoc, xPathStrong, "Market"); info.Industry = SelectNode(rootDoc, xPathStrong, "Industry"); info.Sector = SelectNode(rootDoc, xPathStrong, "Sector"); info.FirstTradeDate = ConvertToDateTime(SelectNode(rootDoc, xPathStrong, "First Trade Date"), "dd MMM yyyy"); info.ParValue = ConvertToDecimal(SelectNode(rootDoc, xPathStrong, "Par Value")); info.AuthorizedCapital = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Authorized Capital")); info.PaidUpCapital = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Paid-up Capital")); info.ListedShare = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Listed Share")); info.PaidUpStock = ConvertToDecimal(SelectNode(rootDoc, xPathDiv, "Paid-up Stock")); } return(info); }
public static Props Props(CommonStockInfo commonStork, IActorRef eodStocksActor) { return(Akka.Actor.Props.Create(() => new CommonStockActor(commonStork, eodStocksActor))); }