Exemplo n.º 1
0
        //--- Methods ---
        public override Task InitializeAsync(LambdaConfig config)
        {
            // config.ReadText()
            BUCKET_NAME = AwsConverters.ReadS3BucketName(config, "WebsiteBucket");
            S3Client    = new AmazonS3Client();

            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        //--- Methods ---
        public override Task InitializeAsync(LambdaConfig config)
        {
            var sqsClient = new AmazonSQSClient();
            var queueName = AwsConverters.ConvertQueueArnToUrl(config.ReadText("SqsSongQueue"));

            SpeakerRequest = new SpeakerRequest(this, sqsClient, queueName);
            return(Task.CompletedTask);
        }
Exemplo n.º 3
0
        //--- Methods ---
        public override async Task InitializeAsync(LambdaConfig config)
        {
            var dynamoDbUserSubscriptionTableName = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("UserSubscriptions"));
            var compareTopicArn = config.ReadText("CompareTopicPublish");
            var dynamoDbClient  = new AmazonDynamoDBClient();
            var snsClient       = new AmazonSimpleNotificationServiceClient();
            var provider        = new DependencyProvider(dynamoDbClient, snsClient, dynamoDbUserSubscriptionTableName, compareTopicArn);

            _logic = new Logic(provider, Logger);
        }
Exemplo n.º 4
0
        //--- Methods ---
        public override async Task InitializeAsync(LambdaConfig config)
        {
            var tableName      = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("GoFishSessions"));
            var accountRegion  = config.ReadText("AccountRegion");
            var bucketName     = AwsConverters.ConvertBucketArnToName(config.ReadText("GoFishSumerianBucket"));
            var uriToCardImage = $"http://{bucketName}.s3-website-{accountRegion}.amazonaws.com";

            _dependencyProvider = new DependencyProvider(new AmazonDynamoDBClient(), tableName);
            _processIntent      = new ProcessIntent(_dependencyProvider, Logger, uriToCardImage);
        }
Exemplo n.º 5
0
        //--- Constructors ---
        public override Task InitializeAsync(LambdaConfig config)
        {
            var tableName                  = AwsConverters.ConvertDynamoDBArnToName(config.ReadText(("DynamoDbSongs")));
            var indexNameSearchTitle       = config.ReadText("DynamoDbIndexNameSearchTitleName");
            var indexNameSearchTitleArtist = config.ReadText("DynamoDbIndexNameSearchTitleArtistName");
            var indexTableName             = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("DynamoDbTitleWordCache"));

            _jukeboxDynamoDb = new JukeboxDynamoDb(new AmazonDynamoDBClient(), tableName, indexNameSearchTitle, indexNameSearchTitleArtist, indexTableName);
            _songlistUpload  = new Logic(this);
            return(Task.CompletedTask);
        }
Exemplo n.º 6
0
        //--- Constructors ---
        public override Task InitializeAsync(LambdaConfig config)
        {
            var queueName                  = config.ReadText("SqsSongQueue");
            var tableName                  = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("DynamoDbSongs"));
            var indexNameSearchTitle       = config.ReadText("DynamoDbIndexNameSearchTitleName");
            var indexNameSearchTitleArtist = config.ReadText("DynamoDbIndexNameSearchTitleArtistName");
            var indexTableName             = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("DynamoDbTitleWordCache"));

            _jukeboxDynamoDb = new JukeboxDynamoDb(new AmazonDynamoDBClient(), tableName, indexNameSearchTitle, indexNameSearchTitleArtist, indexTableName);
            _playSongRequest = new PlaySongNumberRequest(this, new AmazonSQSClient(), queueName, this);
            return(Task.CompletedTask);
        }
Exemplo n.º 7
0
 //--Methods--
 public override Task InitializeAsync(LambdaConfig config)
 {
     _audioBucket      = AwsConverters.ConvertBucketArnToName(config.ReadText("AudioForTranscribe"));
     _textBucket       = AwsConverters.ConvertBucketArnToName(config.ReadText("TextForPolly"));
     _topic            = config.ReadText("Loop");
     _rand             = new Random();
     _s3Client         = new AmazonS3Client();
     _pollyClient      = new AmazonPollyClient();
     _transcribeClient = new AmazonTranscribeServiceClient();
     _snsClient        = new AmazonSimpleNotificationServiceClient();
     return(Task.CompletedTask);
 }
Exemplo n.º 8
0
        //--- Methods ---
        public override async Task InitializeAsync(LambdaConfig config)
        {
            var dynamoDbSubscriptionTableName = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("UserSubscriptions"));
            var dynamoDbVideoTableName        = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("CacheVideos"));
            var dynamoDbPlaylistsTableName    = AwsConverters.ConvertDynamoDBArnToName(config.ReadText("CachePlaylists"));
            var fromEmail        = config.ReadText("FromEmail");
            var youtubeApiKey    = config.ReadText("YouTubeApiKey");
            var youtubeApiClient = new YouTubeService(new BaseClientService.Initializer {
                ApiKey          = youtubeApiKey,
                ApplicationName = GetType().ToString()
            });
            var dynamoDbClient = new AmazonDynamoDBClient();
            var sesClient      = new AmazonSimpleEmailServiceV2Client();
            var provider       = new DependencyProvider(youtubeApiClient, dynamoDbPlaylistsTableName, dynamoDbSubscriptionTableName, dynamoDbVideoTableName, dynamoDbClient, sesClient);
            var dataAccess     = new DataAccess(provider);

            _logic = new Logic(fromEmail, dataAccess, Logger);
        }
Exemplo n.º 9
0
 //--- Methods ---
 public override async Task InitializeAsync(LambdaConfig config)
 {
     _client    = new AmazonDynamoDBClient();
     TABLE_NAME = AwsConverters.ReadDynamoDBTableName(config, "Table");
 }
Exemplo n.º 10
0
        /// <summary>
        /// The <see cref="ProcessMessageStreamAsync(Stream)"/> method is overridden to
        /// provide specific behavior for this base class.
        /// </summary>
        /// <remarks>
        /// This method cannot be overridden.
        /// </remarks>
        /// <param name="stream">The stream with the request payload.</param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public override sealed async Task <Stream> ProcessMessageStreamAsync(Stream stream)
        {
            var failureCounter = 0;

            // deserialize stream to sqs event
            LogInfo("deserializing stream to SQS event");
            var sqsEvent = DeserializeJson <SQSEvent>(stream);

            // process all received sqs records
            var successfulMessages = new List <SQSEvent.SQSMessage>();

            foreach (var sqsRecord in sqsEvent.Records)
            {
                CurrentRecord = sqsRecord;
                try {
                    // attempt to deserialize the sqs record
                    LogInfo("deserializing message");
                    var message = Deserialize(sqsRecord.Body);

                    // attempt to process the sqs message
                    LogInfo("processing message");
                    await ProcessMessageAsync(message);

                    successfulMessages.Add(sqsRecord);
                } catch (LambdaRetriableException e) {
                    // record error as warning; function will need to fail to prevent deletion
                    LogErrorAsWarning(e);
                    ++failureCounter;
                } catch (Exception e) {
                    LogError(e);

                    // send straight to the dead letter queue and prevent from re-trying
                    try {
                        await RecordFailedMessageAsync(LambdaLogLevel.ERROR, FailedMessageOrigin.SQS, SerializeJson(sqsRecord), e);

                        successfulMessages.Add(sqsRecord);
                    } catch {
                        // no dead-letter queue configured; function will need to fail to prevent deletion
                        ++failureCounter;
                    }
                } finally {
                    CurrentRecord = null;
                }
            }

            // check if any failures occurred
            if (failureCounter > 0)
            {
                // delete all messages that were successfully processed to avoid them being tried again
                if (successfulMessages.Count > 0)
                {
                    await Provider.DeleteMessagesFromQueueAsync(
                        AwsConverters.ConvertQueueArnToUrl(successfulMessages.First().EventSourceArn),
                        successfulMessages.Select(message =>
                                                  (MessageId: message.MessageId, ReceiptHandle: message.ReceiptHandle)
                                                  )
                        );
                }

                // fail invocation to prevent messages from being deleted
                throw new LambdaAbortException($"processing failed: {failureCounter} errors ({successfulMessages.Count} messages succeeded)");
            }
            return($"processed {successfulMessages.Count} messages".ToStream());
        }
Exemplo n.º 11
0
 //--- Methods ---
 public override async Task InitializeAsync(LambdaConfig config)
 {
     _textractClient = new AmazonTextractClient();
     _s3Client       = new AmazonS3Client();
     _bucketName     = AwsConverters.ConvertBucketArnToName(config.ReadText("FileBucket"));
 }