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."); }
/// <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(); } }
/// <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(); } }
/// <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(); } }