예제 #1
0
        private APIGatewayProxyResponse ProcessRequest(APIGatewayProxyRequest request)
        {
            Console.WriteLine($"Received API request: '{request.RequestContext.RequestId}'.");
            Console.WriteLine($"Request body: '{request.Body}'.");

            WebsiteMessageRequestModel requestModel = SafeBuildRequestModel(request.Body);

            Console.WriteLine($"Received input: {requestModel}");

            PublishResponse snsPublishResponse = PublishToSns(requestModel);

            return(new APIGatewayProxyResponse
            {
                StatusCode = (int)snsPublishResponse.HttpStatusCode,
                Headers = new Dictionary <string, string>
                {
                    ["Content-Type"] = "application/json",
                    ["Access-Control-Allow-Origin"] = "*",
                },
                Body = $"{{ \"message\": \"Your response has been sent dutifully.\" }}"
            });
        }
예제 #2
0
        private PublishResponse PublishToSns(WebsiteMessageRequestModel requestModel)
        {
            var snsModel = new SnsMessageModel
            {
                FromEmail   = requestModel.FromEmail,
                CreatedAt   = DateTime.UtcNow,
                MessageBody = requestModel.MessageContents
            };
            string snsMessage = snsModel.GetSnsMessage();

            Console.WriteLine($"Posting message to SNS: {snsMessage}");

            PublishResponse response = _snsClient.PublishAsync(_emailTopicArn, snsMessage).Result;

            Console.WriteLine("Received SNS publish response: [{0}= '{1}', {2}= '{3}'].",
                              nameof(PublishResponse.HttpStatusCode),
                              response.HttpStatusCode,
                              nameof(PublishResponse.MessageId),
                              response.MessageId);

            return(response);
        }