Skip to content

Instantly share code, notes, and snippets.

@TBertuzzi
Created November 11, 2019 12:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TBertuzzi/ec274b72741e3d114730f2194d7ca8ab to your computer and use it in GitHub Desktop.
Save TBertuzzi/ec274b72741e3d114730f2194d7ca8ab to your computer and use it in GitHub Desktop.
EventAggregator
namespace PrismPolly.Services
{
public class RssService : IRssService
{
IEventAggregator _eventAggregator;
readonly INetworkService _networkService;
public RssService(IEventAggregator ea)
{
_eventAggregator = ea;
_networkService = new NetworkService();
}
public async Task<List<RssData>> ObterRSS()
{
string feed = null;
List<RssData> rssRetorno = new List<RssData>();
int cont = 0;
try
{
using (var client = new HttpClient())
{
await Policy
.Handle<HttpRequestException>()
.WaitAndRetryAsync
(
retryCount: 3,
sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),
onRetry: (ex, time) =>
{
cont++;
var mensagem = $"Ocorreu um erro ao baixar os dados: {ex.Message}, tentando novamente ({cont})..";
_eventAggregator.GetEvent<MessageSentEvent>().Publish(mensagem);
Console.WriteLine(mensagem);
}
)
.ExecuteAsync(async () =>
{
Console.WriteLine($"Obtendo rss...");
feed = await client.GetStringAsync("https://medium.com/feed/@bertuzzi");
});
}
var parser = new RssParser();
var rss = parser.Parse(feed).OrderByDescending(e => e.PublishDate).ToList();
if (feed != null)
{
foreach (var rssSchema in rss)
{
var rssdata = new RssData
{
Title = rssSchema.Title,
PubDate = rssSchema.PublishDate,
Link = rssSchema.FeedUrl,
Guid = rssSchema.InternalID,
Author = rssSchema.Author,
Thumbnail = string.IsNullOrWhiteSpace(rssSchema.ImageUrl) ? $"https://placeimg.com/80/80/nature" : rssSchema.ImageUrl,
Description = rssSchema.Summary
};
rssRetorno.Add(rssdata);
}
}
return rssRetorno;
}
catch(Exception ex)
{
return new List<RssData>();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment