public void Test(string inpuNewsText, string expectedSubtitle, string expectedNewsText)
        {
            var data = new FinWireData {
                NewsText = inpuNewsText
            }.BuildSubtitle();

            Assert.AreEqual(expectedSubtitle, data.SubTitle);
            Assert.AreEqual(expectedNewsText, data.NewsText);
        }
Пример #2
0
        public static FinWireData PostProcessTitle(this FinWireData finwireData)
        {
            finwireData       = finwireData.ParseStockRecommendationsDayOfWeek();
            finwireData.Title = finwireData.Title
                                .ReplaceStockholmBullets()
                                .Remove("(R)")
                                .Trim();

            return(finwireData);
        }
Пример #3
0
        public async Task AddSingleNews(FinWireData finwireData)
        {
            var finwireXmlNewsAdded = await _dbContext.FinwireXmlNews.AddAsync(new FinwireXmlNews
            {
                DateTime    = DateTime.Now,
                FileContent = finwireData.RoughXml,
                FileName    = finwireData.Guid,
            });

            if (!_dbContext.FinwireNews.Any(x => finwireData.Guid == x.Guid))
            {
                var newsEntity = finwireData.ToFinwireNews();
                newsEntity.FinautoPassed = _finwireFilterService.IsFilterPassed(finwireData);

                newsEntity.FinwireAgency =
                    _dbContext.FinwireAgencies.FirstOrDefault(x => x.Agency == finwireData.Agency)
                    ?? (await _dbContext.AddAsync(new FinwireAgency {
                    Agency = finwireData.Agency
                })).Entity;

                newsEntity.FinwireXmlNews = finwireXmlNewsAdded.Entity;

                var newsEntityAdded = (await _dbContext.AddAsync(newsEntity)).Entity;

                //todo make generic method in helper etc, find better solution using EF Core
                finwireData.SocialTags?.ForEach(async x =>
                                                await _dbContext.AddAsync(new FinwireNew2FirnwireSocialTag
                {
                    FinwireNew       = newsEntityAdded,
                    FinwireSocialTag = _dbContext.FinwireSocialTags.FirstOrDefault(y => y.Tag == x)
                                       ?? (await _dbContext.AddAsync(new FinwireSocialTag {
                        Tag = x
                    })).Entity
                })
                                                );

                finwireData.Companies?.ForEach(async x =>
                {
                    await _dbContext.AddAsync(new FinwireNew2FinwireCompany
                    {
                        FinwireNew     = newsEntityAdded,
                        FinwireCompany = _dbContext.FinwireCompanies.FirstOrDefault(y => y.Company == x)
                                         ?? (await _dbContext.AddAsync(new FinwireCompany {
                            Company = x, Slug = x.ToSlug()
                        })).Entity
                    });
                });
            }

            await _dbContext.SaveChangesAsync();
        }
Пример #4
0
        public bool IsFilterPassed(FinWireData finwireData)
        {
            //todo logging
            var contentPassed            = IsContentFilterPassed(finwireData.HtmlText);
            var titleWhiteListPassed     = IsTitleWhiteListPassed(finwireData.Title);
            var tittleBlackListNotPassed = IsTitleBlackFilterNotPassed(finwireData.Title);
            var contentTotalPassed       = (contentPassed && !tittleBlackListNotPassed) || titleWhiteListPassed;
            var companiesPassed          = IsCompaniesWhiteListPassed(finwireData.Companies);
            var soicalTagsPassed         = IsSocialTagsWhiteListFilterPassed(finwireData.SocialTags);
            var termsPassed  = companiesPassed || soicalTagsPassed;
            var filterPassed = contentTotalPassed && termsPassed;

            return(filterPassed);
        }
Пример #5
0
        public static FinWireData BuildSubtitle(this FinWireData finwireData)
        {
            var paragraphDelimeter = "<br/><br/>";
            var splitedEls         = finwireData.NewsText.Split(paragraphDelimeter);

            finwireData.SubTitle = splitedEls[0];
            //if single paragraph do nothing
            if (splitedEls.Length > 1)
            {
                finwireData.NewsText = finwireData.NewsText.Remove(0, splitedEls[0].Length + paragraphDelimeter.Length);
            }

            return(finwireData);
        }
Пример #6
0
        //ported by original finauto_publish.php started line 82
        public static FinWireData ParseStockRecommendationsDayOfWeek(this FinWireData finWireData)
        {
            if (finWireData.Title.Contains("Dagens aktierekommendationer i översikt") ||
                finWireData.Title.Contains("Dagens aktierekomendationer i översikt"))
            {
                finWireData.Title =
                    $"{_dictDaysOfWeek[finWireData.Date.DayOfWeek]} aktierekommendationer i översikt";

                finWireData.HtmlText = "<p>En kort sammanställning av de rekommendationsnyheter som Finwire News har rapporterat om hittills idag, med nyheter som rör...</p>" +
                                       finWireData.HtmlText.Replace("I tabellen nedan visas ett axplock av de rekommendationsnyheter som Finwire News har rapporterat om i dag.",
                                                                    "I tabellen nedan visas ett axplock av dagens rekommendationsnyheter.");
            }

            return(finWireData);
        }
Пример #7
0
        public static FinwireNew ToFinwireNews(this FinWireData finwireData)
        {
            var imgData = ImageHelper.GetImageData(finwireData.SocialTags, finwireData.Companies);

            var r = new FinwireNew
            {
                Guid             = finwireData.Guid,
                Title            = finwireData.Title,
                Subtitle         = finwireData.SubTitle,
                Date             = finwireData.Date,
                NewsText         = finwireData.HtmlText,
                ImageRelativeUrl = ImageHelper.AbsoluteUrlToRelativeUrl(imgData.ImageAbsoluteUrl),
                ImageSource      = imgData.ImageSource,
                ImageLabel       = imgData.Label,
                Slug             = finwireData.TittleSlug,
                IsFinwireNews    = true
            };

            return(r);
        }