private static async Task Main() { var config = new ConfigBuilder(".").Build(); var parser = new ReadSharpParser(); var emailSender = new MailgunSender(config.MailGunSenderOptions.ApiKey, config.MailGunSenderOptions.HostEmail); var pocketClientMock = new Mock <IPocketClient>(); pocketClientMock.Setup(x => x.Get( It.IsAny <State>(), It.IsAny <bool>(), It.IsAny <string>(), It.IsAny <ContentType>(), It.IsAny <Sort>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>())).Returns( Task.FromResult( (IEnumerable <PocketItem>) new PocketItem[] { new PocketItem { Uri = new Uri("https://blog.wikimedia.org/2018/04/20/why-it-took-a-long-time-to-build-that-tiny-link-preview-on-wikipedia/") } } ) ); var sender = new ArticleSender(pocketClientMock.Object, parser, emailSender, config.ServiceDomain); await sender.SendArticlesAsync(new User { KindleEmail = "*****@*****.**", Token = "testtoken" }); }
public static async Task Run( [QueueTrigger("users-to-process", Connection = "")] string userJson, ILogger log, ExecutionContext executionContext) { var config = new ConfigBuilder(executionContext.FunctionAppDirectory).Build(); var user = JsonConvert.DeserializeObject <User>(userJson); var sender = new ArticleSender( new PocketClient(config.PocketConsumerKey, user.AccessCode), new ReadSharpParser(), new MailgunSender(config.MailGunSenderOptions.ApiKey, config.MailGunSenderOptions.HostEmail), config.ServiceDomain); try { await sender.SendArticlesAsync(user); } catch (Exception ex) { log.LogError($"Processing of user {user} failed at one of the articles", ex); } finally { var userService = UserService.BuildUserService(config.StorageConnectionString); await userService.UpdateLastProcessingDateAsync(user); } log.LogInformation($"C# Queue trigger function processed: {userJson}"); }
public static async Task Run( [QueueTrigger("users-to-process")] string userJson, ILogger log) { var config = new ConfigBuilder("").Build(); var user = JsonSerializer.Deserialize <User>(userJson); var userService = UserService.BuildUserService(config.StorageConnectionString); await userService.UpdateLastProcessingDateAsync(user); var sender = new ArticleSender( new PocketClient(config.PocketConsumerKey, user.AccessCode), new MercuryApiParser(config.MercuryParserApiEndpoint), new SendgridSender(config.SendgridApiKey, config.MailgunHostEmail), userService, log, config.ServiceDomain); await sender.SendArticlesAsync(user); log.LogInformation($"C# Queue trigger function processed: {userJson}"); }