Skip to content

Commit d17879e

Browse files
meyertst-awsDavidSouther
authored andcommitted
Adding pagination
1 parent 241e34d commit d17879e

25 files changed

+1001
-662
lines changed

cpp/example_code/acm/list_certificates.cpp

+34-25
Original file line numberDiff line numberDiff line change
@@ -28,39 +28,48 @@ bool AwsDoc::ACM::listCertificates(
2828
Aws::ACM::ACMClient acmClient(clientConfiguration);
2929

3030
Aws::ACM::Model::ListCertificatesRequest request;
31+
Aws::Vector<Aws::ACM::Model::CertificateSummary> allCertificates;
32+
Aws::String nextToken;
33+
do {
34+
if (!nextToken.empty()) {
35+
request.SetNextToken(nextToken);
36+
}
3137

32-
Aws::ACM::Model::ListCertificatesOutcome outcome =
33-
acmClient.ListCertificates(request);
34-
35-
if (!outcome.IsSuccess()) {
36-
std::cerr << "Error: ListCertificates: " <<
37-
outcome.GetError().GetMessage() << std::endl;
38+
Aws::ACM::Model::ListCertificatesOutcome outcome =
39+
acmClient.ListCertificates(request);
3840

39-
return false;
40-
}
41-
else {
42-
std::cout << "Success: Information about certificates: "
43-
<< std::endl << std::endl;
41+
if (!outcome.IsSuccess()) {
42+
std::cerr << "Error: ListCertificates: " <<
43+
outcome.GetError().GetMessage() << std::endl;
4444

45-
const Aws::ACM::Model::ListCertificatesResult &result = outcome.GetResult();
45+
return false;
46+
}
47+
else {
48+
const Aws::ACM::Model::ListCertificatesResult &result = outcome.GetResult();
4649

47-
Aws::Vector<Aws::ACM::Model::CertificateSummary> certificates =
48-
result.GetCertificateSummaryList();
50+
const Aws::Vector<Aws::ACM::Model::CertificateSummary> &certificates =
51+
result.GetCertificateSummaryList();
52+
allCertificates.insert(allCertificates.end(), certificates.begin(),
53+
certificates.end());
4954

50-
if (certificates.size() > 0) {
51-
for (const Aws::ACM::Model::CertificateSummary &certificate: certificates) {
52-
std::cout << "Certificate ARN: " <<
53-
certificate.GetCertificateArn() << std::endl;
54-
std::cout << "Domain name: " <<
55-
certificate.GetDomainName() << std::endl << std::endl;
56-
}
55+
nextToken = result.GetNextToken();
5756
}
58-
else {
59-
std::cout << "No available certificates found in account. '" << std::endl;
57+
} while (!nextToken.empty());
58+
59+
if (!allCertificates.empty()) {
60+
for (const Aws::ACM::Model::CertificateSummary &certificate: allCertificates) {
61+
std::cout << "Certificate ARN: " <<
62+
certificate.GetCertificateArn() << std::endl;
63+
std::cout << "Domain name: " <<
64+
certificate.GetDomainName() << std::endl << std::endl;
6065
}
61-
62-
return true;
6366
}
67+
else {
68+
std::cout << "No available certificates found in account."
69+
<< std::endl;
70+
}
71+
72+
return true;
6473
}
6574
// snippet-end:[cpp.example_code.acm.ListCertificates]
6675

cpp/example_code/aurora/README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ Code excerpts that show you how to call individual service functions.
5050
- [Create a DB cluster parameter group](getting_started_with_db_clusters.cpp#L333) (`CreateDBClusterParameterGroup`)
5151
- [Create a DB cluster snapshot](getting_started_with_db_clusters.cpp#L661) (`CreateDBClusterSnapshot`)
5252
- [Create a DB instance in a DB cluster](getting_started_with_db_clusters.cpp#L588) (`CreateDBInstance`)
53-
- [Delete a DB cluster](getting_started_with_db_clusters.cpp#L1033) (`DeleteDBCluster`)
54-
- [Delete a DB cluster parameter group](getting_started_with_db_clusters.cpp#L1103) (`DeleteDBClusterParameterGroup`)
55-
- [Delete a DB instance](getting_started_with_db_clusters.cpp#L1003) (`DeleteDBInstance`)
53+
- [Delete a DB cluster](getting_started_with_db_clusters.cpp#L1047) (`DeleteDBCluster`)
54+
- [Delete a DB cluster parameter group](getting_started_with_db_clusters.cpp#L1117) (`DeleteDBClusterParameterGroup`)
55+
- [Delete a DB instance](getting_started_with_db_clusters.cpp#L1017) (`DeleteDBInstance`)
5656
- [Describe DB cluster parameter groups](getting_started_with_db_clusters.cpp#L295) (`DescribeDBClusterParameterGroups`)
5757
- [Describe DB cluster snapshots](getting_started_with_db_clusters.cpp#L701) (`DescribeDBClusterSnapshots`)
5858
- [Describe DB clusters](getting_started_with_db_clusters.cpp#L746) (`DescribeDBClusters`)
59-
- [Describe DB instances](getting_started_with_db_clusters.cpp#L883) (`DescribeDBInstances`)
59+
- [Describe DB instances](getting_started_with_db_clusters.cpp#L896) (`DescribeDBInstances`)
6060
- [Describe database engine versions](getting_started_with_db_clusters.cpp#L845) (`DescribeDBEngineVersions`)
61-
- [Describe options for DB instances](getting_started_with_db_clusters.cpp#L923) (`DescribeOrderableDBInstanceOptions`)
61+
- [Describe options for DB instances](getting_started_with_db_clusters.cpp#L936) (`DescribeOrderableDBInstanceOptions`)
6262
- [Describe parameters from a DB cluster parameter group](getting_started_with_db_clusters.cpp#L786) (`DescribeDBClusterParameters`)
6363
- [Update parameters in a DB cluster parameter group](getting_started_with_db_clusters.cpp#L402) (`ModifyDBClusterParameterGroup`)
6464

cpp/example_code/aurora/getting_started_with_db_clusters.cpp

+26-12
Original file line numberDiff line numberDiff line change
@@ -864,19 +864,32 @@ bool AwsDoc::Aurora::getDBEngineVersions(const Aws::String &engineName,
864864
request.SetDBParameterGroupFamily(parameterGroupFamily);
865865
}
866866

867-
Aws::RDS::Model::DescribeDBEngineVersionsOutcome outcome =
868-
client.DescribeDBEngineVersions(request);
867+
engineVersionsResult.clear();
868+
Aws::String marker; // The marker is used for pagination.
869+
do {
870+
if (!marker.empty()) {
871+
request.SetMarker(marker);
872+
}
869873

870-
if (outcome.IsSuccess()) {
871-
engineVersionsResult = outcome.GetResult().GetDBEngineVersions();
872-
}
873-
else {
874-
std::cerr << "Error with Aurora::DescribeDBEngineVersionsRequest. "
875-
<< outcome.GetError().GetMessage()
876-
<< std::endl;
877-
}
874+
Aws::RDS::Model::DescribeDBEngineVersionsOutcome outcome =
875+
client.DescribeDBEngineVersions(request);
878876

879-
return outcome.IsSuccess();
877+
if (outcome.IsSuccess()) {
878+
const Aws::Vector<Aws::RDS::Model::DBEngineVersion> &engineVersions =
879+
outcome.GetResult().GetDBEngineVersions();
880+
881+
engineVersionsResult.insert(engineVersionsResult.end(),
882+
engineVersions.begin(), engineVersions.end());
883+
marker = outcome.GetResult().GetMarker();
884+
}
885+
else {
886+
std::cerr << "Error with Aurora::DescribeDBEngineVersionsRequest. "
887+
<< outcome.GetError().GetMessage()
888+
<< std::endl;
889+
}
890+
} while (!marker.empty());
891+
892+
return true;
880893
}
881894
// snippet-end:[cpp.example_code.aurora.DescribeDBEngineVersions]
882895

@@ -954,7 +967,8 @@ bool AwsDoc::Aurora::chooseDBInstanceClass(const Aws::String &engine,
954967
outcome.GetResult().GetOrderableDBInstanceOptions();
955968
for (const Aws::RDS::Model::OrderableDBInstanceOption &option: options) {
956969
const Aws::String &instanceClass = option.GetDBInstanceClass();
957-
if (std::find(instanceClasses.begin(), instanceClasses.end(), instanceClass) == instanceClasses.end()) {
970+
if (std::find(instanceClasses.begin(), instanceClasses.end(),
971+
instanceClass) == instanceClasses.end()) {
958972
instanceClasses.push_back(instanceClass);
959973
}
960974
}

cpp/example_code/autoscaling/groups_and_instances_scenario.cpp

+31-20
Original file line numberDiff line numberDiff line change
@@ -565,28 +565,39 @@ bool AwsDoc::AutoScaling::groupsAndInstancesScenario(
565565
Aws::AutoScaling::Model::DescribeScalingActivitiesRequest request;
566566
request.SetAutoScalingGroupName(groupName);
567567

568-
Aws::AutoScaling::Model::DescribeScalingActivitiesOutcome outcome =
569-
autoScalingClient.DescribeScalingActivities(request);
568+
Aws::Vector<Aws::AutoScaling::Model::Activity> allActivities;
569+
Aws::String nextToken; // Used for pagination;
570+
do {
571+
if (!nextToken.empty()) {
572+
request.SetNextToken(nextToken);
573+
}
574+
Aws::AutoScaling::Model::DescribeScalingActivitiesOutcome outcome =
575+
autoScalingClient.DescribeScalingActivities(request);
570576

571-
if (outcome.IsSuccess()) {
572-
const Aws::Vector<Aws::AutoScaling::Model::Activity> &activities =
573-
outcome.GetResult().GetActivities();
574-
std::cout << "Found " << activities.size() << " activities." << std::endl;
575-
std::cout << "Activities are ordered with the most recent first."
576-
<< std::endl;
577-
for (const Aws::AutoScaling::Model::Activity &activity: activities) {
578-
std::cout << activity.GetDescription() << std::endl;
579-
std::cout << activity.GetDetails() << std::endl;
577+
if (outcome.IsSuccess()) {
578+
const Aws::Vector<Aws::AutoScaling::Model::Activity> &activities =
579+
outcome.GetResult().GetActivities();
580+
allActivities.insert(allActivities.end(), activities.begin(), activities.end());
581+
nextToken = outcome.GetResult().GetNextToken();
580582
}
581-
}
582-
else {
583-
std::cerr << "Error with AutoScaling::DescribeScalingActivities. "
584-
<< outcome.GetError().GetMessage()
585-
<< std::endl;
586-
// snippet-end:[cpp.example_code.autoscaling.describe_scaling_activities1]
587-
cleanupResources(groupName, templateName, autoScalingClient, ec2Client);
588-
return false;
589-
// snippet-start:[cpp.example_code.autoscaling.describe_scaling_activities2]
583+
else {
584+
std::cerr << "Error with AutoScaling::DescribeScalingActivities. "
585+
<< outcome.GetError().GetMessage()
586+
<< std::endl;
587+
// snippet-end:[cpp.example_code.autoscaling.describe_scaling_activities1]
588+
cleanupResources(groupName, templateName, autoScalingClient, ec2Client);
589+
return false;
590+
// snippet-start:[cpp.example_code.autoscaling.describe_scaling_activities2]
591+
}
592+
} while (!nextToken.empty());
593+
594+
std::cout << "Found " << allActivities.size() << " activities."
595+
<< std::endl;
596+
std::cout << "Activities are ordered with the most recent first."
597+
<< std::endl;
598+
for (const Aws::AutoScaling::Model::Activity &activity: allActivities) {
599+
std::cout << activity.GetDescription() << std::endl;
600+
std::cout << activity.GetDetails() << std::endl;
590601
}
591602
// snippet-end:[cpp.example_code.autoscaling.describe_scaling_activities2]
592603
}

cpp/example_code/cloudtrail/lookup_events.cpp

+38-28
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,50 @@
1212
* Look up Cloud Trail events based on command line input
1313
*/
1414

15-
int main(int argc, char **argv)
16-
{
17-
if (argc != 1)
18-
{
19-
std::cout << "Usage: lookup_events";
20-
return 1;
21-
}
22-
Aws::SDKOptions options;
23-
Aws::InitAPI(options);
24-
{
15+
int main(int argc, char **argv) {
16+
if (argc != 1) {
17+
std::cout << "Usage: lookup_events";
18+
return 1;
19+
}
20+
Aws::SDKOptions options;
21+
Aws::InitAPI(options);
22+
{
23+
Aws::CloudTrail::CloudTrailClient ct;
2524

26-
Aws::CloudTrail::CloudTrailClient ct;
25+
Aws::CloudTrail::Model::LookupEventsRequest le_req;
2726

28-
Aws::CloudTrail::Model::LookupEventsRequest le_req;
27+
int event_count = 0;
28+
Aws::String nextToken; // Used for pagination.
29+
do {
30+
if (!nextToken.empty()) {
31+
le_req.SetNextToken(nextToken);
32+
}
2933

30-
auto le_out = ct.LookupEvents(le_req);
34+
auto le_out = ct.LookupEvents(le_req);
3135

32-
if (le_out.IsSuccess())
33-
{
34-
std::cout << "Successfully looking up cloudtrail events:";
36+
if (le_out.IsSuccess()) {
37+
std::cout << "Successfully looking up cloudtrail events:";
38+
const auto &events = le_out.GetResult().GetEvents();
3539

36-
for (auto val: le_out.GetResult().GetEvents())
37-
{
38-
std::cout << " " << val.GetEventName() << std::endl;
39-
}
40-
}
40+
for (auto val: events) {
41+
std::cout << " " << val.GetEventName() << std::endl;
42+
}
4143

42-
else
43-
{
44-
std::cout << "Error looking up cloudtrail events" << le_out.GetError().GetMessage()
45-
<< std::endl;
44+
event_count += events.size();
45+
46+
nextToken = le_out.GetResult().GetNextToken();
47+
}
48+
49+
else {
50+
std::cout << "Error looking up cloudtrail events"
51+
<< le_out.GetError().GetMessage()
52+
<< std::endl;
53+
break;
54+
}
55+
} while (!nextToken.empty() &&
56+
(event_count < 100)); // Only show first 100 events.
4657
}
47-
}
4858

49-
Aws::ShutdownAPI(options);
50-
return 0;
59+
Aws::ShutdownAPI(options);
60+
return 0;
5161
}

cpp/example_code/codebuild/list_builds.cpp

+53-46
Original file line numberDiff line numberDiff line change
@@ -15,58 +15,65 @@
1515
* Gets the list of builds and information about each build based on command line input
1616
*/
1717

18-
int main(int argc, char **argv)
19-
{
20-
if (argc != 2)
21-
{
22-
std::cout << "Usage: list_builds <sort_order_type>";
23-
return 1;
24-
}
25-
Aws::SDKOptions options;
26-
Aws::InitAPI(options);
27-
{
28-
Aws::CodeBuild::CodeBuildClient codebuild;
29-
30-
Aws::CodeBuild::Model::ListBuildsRequest lb_req;
31-
Aws::CodeBuild::Model::BatchGetBuildsRequest bgb_req;
32-
33-
if (Aws::Utils::StringUtils::CaselessCompare(argv[1], "ASCENDING"))
34-
{
35-
lb_req.SetSortOrder(Aws::CodeBuild::Model::SortOrderType::ASCENDING);
36-
}
37-
else if(Aws::Utils::StringUtils::CaselessCompare(argv[1], "DESCENDING"))
38-
{
39-
lb_req.SetSortOrder(Aws::CodeBuild::Model::SortOrderType::DESCENDING);
18+
int main(int argc, char **argv) {
19+
if (argc != 2) {
20+
std::cout << "Usage: list_builds <sort_order_type>";
21+
return 1;
4022
}
41-
else
23+
Aws::SDKOptions options;
24+
Aws::InitAPI(options);
4225
{
43-
lb_req.SetSortOrder(Aws::CodeBuild::Model::SortOrderType::NOT_SET);
44-
}
26+
Aws::CodeBuild::CodeBuildClient codebuild;
4527

46-
auto lb_out = codebuild.ListBuilds(lb_req);
28+
Aws::CodeBuild::Model::ListBuildsRequest lb_req;
29+
Aws::CodeBuild::Model::BatchGetBuildsRequest bgb_req;
4730

48-
if (lb_out.IsSuccess())
49-
{
50-
std::cout << "Information about each build:" << std::endl;
51-
bgb_req.SetIds(lb_out.GetResult().GetIds());
52-
auto bgb_out = codebuild.BatchGetBuilds(bgb_req);
53-
54-
if (bgb_out.IsSuccess())
55-
{
56-
for (auto val: bgb_out.GetResult().GetBuilds())
57-
{
58-
std::cout << val.GetId() << std::endl;
31+
if (Aws::Utils::StringUtils::CaselessCompare(argv[1], "ASCENDING")) {
32+
lb_req.SetSortOrder(Aws::CodeBuild::Model::SortOrderType::ASCENDING);
33+
}
34+
else if (Aws::Utils::StringUtils::CaselessCompare(argv[1], "DESCENDING")) {
35+
lb_req.SetSortOrder(Aws::CodeBuild::Model::SortOrderType::DESCENDING);
36+
}
37+
else {
38+
lb_req.SetSortOrder(Aws::CodeBuild::Model::SortOrderType::NOT_SET);
5939
}
60-
}
61-
}
6240

63-
else
64-
{
65-
std::cout << "Error listing builds" << lb_out.GetError().GetMessage()
66-
<< std::endl;
41+
Aws::String next_token; // Used for pagination.
42+
43+
do {
44+
if (!next_token.empty()) {
45+
lb_req.SetNextToken(next_token);
46+
}
47+
48+
auto lb_out = codebuild.ListBuilds(lb_req);
49+
50+
if (lb_out.IsSuccess()) {
51+
std::cout << "Information about each build:" << std::endl;
52+
bgb_req.SetIds(lb_out.GetResult().GetIds());
53+
auto bgb_out = codebuild.BatchGetBuilds(bgb_req);
54+
55+
if (bgb_out.IsSuccess()) {
56+
const auto &builds = bgb_out.GetResult().GetBuilds();
57+
std::cout << builds.size() << " build(s) found." << std::endl;
58+
for (auto val: builds) {
59+
std::cout << val.GetId() << std::endl;
60+
}
61+
}
62+
63+
next_token = lb_out.GetResult().GetNextToken();
64+
}
65+
66+
else {
67+
std::cout << "Error listing builds" << lb_out.GetError().GetMessage()
68+
<< std::endl;
69+
break;
70+
}
71+
72+
} while (!next_token.empty());
73+
6774
}
68-
}
6975

70-
Aws::ShutdownAPI(options);
71-
return 0;
76+
77+
Aws::ShutdownAPI(options);
78+
return 0;
7279
}

0 commit comments

Comments
 (0)