Exemplo n.º 1
0
        public string ProcessStatEvent(SQSEvent sqsEvent, ILambdaContext context)
        {
            Console.WriteLine($"Beginning to process {sqsEvent.Records.Count} records...");
            try
            {
                var logger2 = LambdaLoggerExtension.TryCreateSerilogLogger();
                logger2?.Information("Parse queue");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            foreach (var record in sqsEvent.Records)
            {
                Console.WriteLine($"Message ID: {record.MessageId}");
                Console.WriteLine($"Event Source: {record.EventSource}");

                var logger = LambdaLoggerExtension.TryCreateSerilogLogger();
                logger?.Information("Parse queue" + record.Body);


                Console.WriteLine($"Record Body:");
                Console.WriteLine(record.Body);
            }

            Console.WriteLine("Processing complete.");

            return($"Processed {sqsEvent.Records.Count} records.");
        }
Exemplo n.º 2
0
        /// <summary> Endpoint for the words list </summary>
        public async Task <APIGatewayProxyResponse> BasketListWordHandler(APIGatewayProxyRequest request, ILambdaContext context)
        {
            var logger = LambdaLoggerExtension.TryCreateSerilogLogger();

            try
            {
                this.Basket.SetLogger(logger);

                var list = await this.Basket.GetProfanityWordList();

                var result = string.Join(", ", list);

                return(new APIGatewayProxyResponse
                {
                    StatusCode = (int)HttpStatusCode.OK,
                    Body = $"<result>{result}</result>"
                });
            }
            catch (Exception e)
            {
                return(new APIGatewayProxyResponse
                {
                    StatusCode = (int)HttpStatusCode.InternalServerError,
                    Body = "Exception " + e.Message + "\n" + e.ToString()
                });
            }
            finally
            {
                logger?.TryDispose();
            }
        }
Exemplo n.º 3
0
        /// <summary> Endpoint for remove word </summary>
        public async Task <APIGatewayProxyResponse> BasketRemoveWordHandler(APIGatewayProxyRequest request, ILambdaContext context)
        {
            var logger = LambdaLoggerExtension.TryCreateSerilogLogger();

            try
            {
                var result = await InternalExecute(request, this.Basket.Remove, logger);

                return(result);
            }
            catch (Exception e)
            {
                return(new APIGatewayProxyResponse
                {
                    StatusCode = (int)HttpStatusCode.InternalServerError,
                    Body = "Exception " + e.Message + "\n" + e.ToString()
                });
            }
            finally
            {
                logger.TryDispose();
            }
        }
Exemplo n.º 4
0
        /// <summary> Profanity words checker </summary>
        public async Task <APIGatewayProxyResponse> CheckProfanityHandler(APIGatewayProxyRequest request, ILambdaContext context)
        {
            var logger = LambdaLoggerExtension.TryCreateSerilogLogger();

            try
            {
                var profanityList = ProfanityListFactory.GetProfanityListService();

                var service = new CheckProfanityService(profanityList, logger);

                var exectionDetail = EnumExecuteDetail.CountResult;
                if (request.MultiValueQueryStringParameters != null &&
                    request.MultiValueQueryStringParameters.ContainsKey("exectionDetail")
                    )
                {
                    var executionDetailStr = request
                                             .MultiValueQueryStringParameters["exectionDetail"]
                                             .FirstOrDefault();

                    if (Enum.TryParse(executionDetailStr,
                                      out EnumExecuteDetail val))
                    {
                        exectionDetail = val;
                    }
                    else
                    {
                        throw new ParseRequestException($"Can't parse ExecuteDetail '{executionDetailStr}'");
                    }
                }

                if (string.IsNullOrEmpty(request.Body))
                {
                    throw new ParseRequestException("Request is empty");
                }

                var buf = Encoding.UTF8.GetBytes(request.Body);
                var ms  = new MemoryStream(buf);

                var result = await service.CheckProfanity(ms, exectionDetail);

                return(new APIGatewayProxyResponse
                {
                    StatusCode = result.ResultStatus == EnumResultStatus.TextIsOk ||
                                 result.ResultStatus == EnumResultStatus.TextHasProfanity
                        ? (int)HttpStatusCode.OK
                        : (int)HttpStatusCode.InternalServerError,
                    Body = JsonConvert.SerializeObject(result)
                });
            }
            catch (ParseRequestException e)
            {
                logger?.Error(e, "Request exception");

                return(new APIGatewayProxyResponse
                {
                    StatusCode = (int)HttpStatusCode.BadRequest,
                    Body = e.Message
                });
            }
            catch (Exception e)
            {
                logger?.Error(e, "Undefined exception");

                return(new APIGatewayProxyResponse
                {
                    StatusCode = (int)HttpStatusCode.InternalServerError,
                    Body = e.Message
                });
            }
            finally
            {
                logger?.TryDispose();
            }
        }