-
Notifications
You must be signed in to change notification settings - Fork 2
/
example.cpp
52 lines (37 loc) · 1.2 KB
/
example.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <aws/lambda-runtime/runtime.h>
#include <base64.h>
#include "json.hpp"
#include <algorithm>
#include <string>
#include <stdio.h>
using invocation_request = aws::lambda_runtime::invocation_request;
using invocation_response = aws::lambda_runtime::invocation_response;
using json = nlohmann::json;
using string = std::string;
invocation_response example(const invocation_request& request)
{
const auto payload = json::parse(request.payload);
const auto body = payload["body"].get<string>();
auto decoded = base64::decode(body);
printf("example:\n");
printf("request body: '%s'\n", body.c_str());
printf("decoded: '%s'\n", decoded.c_str());
std::reverse(decoded.begin(), decoded.end());
string output;
std::transform(decoded.begin(), decoded.end(), std::back_inserter(output), ::tolower);
const auto encoded = base64::encode(output);
printf("output: '%s'\n", output.c_str());
printf("encoded: '%s'\n", encoded.c_str());
return invocation_response::success(string{""}
+ "{\"statusCode\": 200"
+ ",\"body\": \"" + encoded + "\""
+ ",\"isBase64Encoded\": true"
+ "}",
"application/octet-stream"
);
}
int main()
{
run_handler(example);
return 0;
}