17 #include <aws/core/utils/Array.h> 18 #include <aws/core/utils/json/JsonSerializer.h> 19 #include <aws/monitoring/model/MetricDatum.h> 20 #include <aws/monitoring/model/StandardUnit.h> 26 namespace CloudWatchMetrics {
38 static constexpr
const char*
kUnitKey =
"unit";
52 Aws::String aws_str(basic_string.c_str());
54 if (!json_value.WasParseSuccessful()) {
55 throw std::invalid_argument(
"Failed to parse metric JSON string");
57 auto view = json_value.View();
58 for (
const auto& property : required_properties) {
59 if (!view.KeyExists(property)) {
60 std::string property_name(property.c_str());
61 throw std::invalid_argument(
"Could not find required property " + property_name +
" in JSON string");
66 datum.SetMetricName(view.GetString(kMetricNameKey));
67 datum.SetTimestamp(view.GetInt64(kTimestampKey));
69 if (view.KeyExists(kDimensionsKey)) {
70 auto array = view.GetArray(kDimensionsKey) ;
71 Aws::Vector<Aws::CloudWatch::Model::Dimension> dimensions(array.GetLength());
72 for (
size_t i = 0; i < array.GetLength(); ++i) {
73 Aws::CloudWatch::Model::Dimension dimension;
74 dimension.SetName(array[i].GetString(kDimensionsNameKey));
75 dimension.SetValue(array[i].GetString(kDimensionsValueKey));
76 dimensions[i] = dimension;
78 datum.SetDimensions(dimensions);
81 if (view.KeyExists(kStorageResolutionKey)) {
82 datum.SetStorageResolution(view.GetInteger(kStorageResolutionKey));
84 if (view.KeyExists(kUnitKey)) {
85 datum.SetUnit(Aws::CloudWatch::Model::StandardUnit(view.GetInteger(kUnitKey)));
87 if (view.KeyExists(kValueKey)) {
88 datum.SetValue(view.GetDouble(kValueKey));
102 const Aws::Vector<Aws::CloudWatch::Model::Dimension>& dimensions = datum.GetDimensions();
103 Aws::Utils::Array<JsonValue> dimensions_array = Aws::Utils::Array<JsonValue>(dimensions.size());
104 for (
size_t i = 0; i < dimensions.size(); ++i) {
106 dimensions_array[i] = dimension_json
107 .WithString(kDimensionsNameKey, dimensions[i].GetName())
108 .WithString(kDimensionsValueKey, dimensions[i].GetValue());
111 const Aws::Vector<double>& values = datum.GetValues();
112 Aws::Utils::Array<JsonValue> values_array = Aws::Utils::Array<JsonValue>(values.size());
113 for (
size_t i = 0; i < values.size(); ++i) {
115 values_array[i] = val.AsDouble(values[i]);
119 .WithInt64(kTimestampKey, datum.GetTimestamp().Millis())
120 .WithString(kMetricNameKey, datum.GetMetricName())
121 .WithInteger(kStorageResolutionKey, datum.GetStorageResolution())
122 .WithInteger(kUnitKey, static_cast<int>(datum.GetUnit()))
123 .WithArray(kDimensionsKey, dimensions_array)
124 .WithDouble(kValueKey, datum.GetValue());
125 return json_value.View().WriteCompact();
static constexpr const char * kDimensionsValueKey
static constexpr const char * kTimestampKey
static constexpr const char * kDimensionsKey
static constexpr const char * kMetricNameKey
static constexpr const char * kValueKey
static constexpr const char * kStorageResolutionKey
Aws::String serializeMetricDatum(const MetricDatum &datum)
static const std::vector< Aws::String > required_properties
Aws::CloudWatch::Model::MetricDatum MetricDatum
MetricDatum deserializeMetricDatum(const Aws::String &basic_string)
static constexpr const char * kUnitKey
Aws::Utils::Json::JsonValue JsonValue
static constexpr const char * kDimensionsNameKey