Exemplo n.º 1
0
        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" });
        }
Exemplo n.º 2
0
        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}");
        }
Exemplo n.º 3
0
        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}");
        }