Created
November 11, 2019 12:53
-
-
Save TBertuzzi/ec274b72741e3d114730f2194d7ca8ab to your computer and use it in GitHub Desktop.
EventAggregator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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