From 093332279d03e1aa159955319dc222f0f22a35e7 Mon Sep 17 00:00:00 2001 From: sdk-team Date: Thu, 9 Apr 2020 11:12:46 +0800 Subject: [PATCH] Add DescribePrice API. --- CHANGELOG | 3 + VERSION | 2 +- dds/CMakeLists.txt | 4 + dds/include/alibabacloud/dds/DdsClient.h | 8 + .../model/DescribeDBInstanceAttributeResult.h | 1 + .../dds/model/DescribePriceRequest.h | 84 +++++++++ .../dds/model/DescribePriceResult.h | 89 +++++++++ dds/src/DdsClient.cc | 36 ++++ .../DescribeDBInstanceAttributeResult.cc | 2 + dds/src/model/DescribePriceRequest.cc | 172 ++++++++++++++++++ dds/src/model/DescribePriceResult.cc | 128 +++++++++++++ 11 files changed, 528 insertions(+), 1 deletion(-) create mode 100644 dds/include/alibabacloud/dds/model/DescribePriceRequest.h create mode 100644 dds/include/alibabacloud/dds/model/DescribePriceResult.h create mode 100644 dds/src/model/DescribePriceRequest.cc create mode 100644 dds/src/model/DescribePriceResult.cc diff --git a/CHANGELOG b/CHANGELOG index 22f37e9b2..9214bcee1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +2020-04-09 Version: 1.36.346 +- Add DescribePrice API. + 2020-04-09 Version: 1.36.345 - WAF OpenApi SDK Release. diff --git a/VERSION b/VERSION index 52ae42da9..08df520fb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.36.345 \ No newline at end of file +1.36.346 \ No newline at end of file diff --git a/dds/CMakeLists.txt b/dds/CMakeLists.txt index 3e910b4ec..fa546b162 100644 --- a/dds/CMakeLists.txt +++ b/dds/CMakeLists.txt @@ -95,6 +95,8 @@ set(dds_public_header_model include/alibabacloud/dds/model/DescribeParameterTemplatesResult.h include/alibabacloud/dds/model/DescribeParametersRequest.h include/alibabacloud/dds/model/DescribeParametersResult.h + include/alibabacloud/dds/model/DescribePriceRequest.h + include/alibabacloud/dds/model/DescribePriceResult.h include/alibabacloud/dds/model/DescribeRegionsRequest.h include/alibabacloud/dds/model/DescribeRegionsResult.h include/alibabacloud/dds/model/DescribeRenewalPriceRequest.h @@ -264,6 +266,8 @@ set(dds_src src/model/DescribeParameterTemplatesResult.cc src/model/DescribeParametersRequest.cc src/model/DescribeParametersResult.cc + src/model/DescribePriceRequest.cc + src/model/DescribePriceResult.cc src/model/DescribeRegionsRequest.cc src/model/DescribeRegionsResult.cc src/model/DescribeRenewalPriceRequest.cc diff --git a/dds/include/alibabacloud/dds/DdsClient.h b/dds/include/alibabacloud/dds/DdsClient.h index 87f12e9bc..979a0982c 100644 --- a/dds/include/alibabacloud/dds/DdsClient.h +++ b/dds/include/alibabacloud/dds/DdsClient.h @@ -96,6 +96,8 @@ #include "model/DescribeParameterTemplatesResult.h" #include "model/DescribeParametersRequest.h" #include "model/DescribeParametersResult.h" +#include "model/DescribePriceRequest.h" +#include "model/DescribePriceResult.h" #include "model/DescribeRegionsRequest.h" #include "model/DescribeRegionsResult.h" #include "model/DescribeRenewalPriceRequest.h" @@ -308,6 +310,9 @@ namespace AlibabaCloud typedef Outcome DescribeParametersOutcome; typedef std::future DescribeParametersOutcomeCallable; typedef std::function&)> DescribeParametersAsyncHandler; + typedef Outcome DescribePriceOutcome; + typedef std::future DescribePriceOutcomeCallable; + typedef std::function&)> DescribePriceAsyncHandler; typedef Outcome DescribeRegionsOutcome; typedef std::future DescribeRegionsOutcomeCallable; typedef std::function&)> DescribeRegionsAsyncHandler; @@ -562,6 +567,9 @@ namespace AlibabaCloud DescribeParametersOutcome describeParameters(const Model::DescribeParametersRequest &request)const; void describeParametersAsync(const Model::DescribeParametersRequest& request, const DescribeParametersAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; DescribeParametersOutcomeCallable describeParametersCallable(const Model::DescribeParametersRequest& request) const; + DescribePriceOutcome describePrice(const Model::DescribePriceRequest &request)const; + void describePriceAsync(const Model::DescribePriceRequest& request, const DescribePriceAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; + DescribePriceOutcomeCallable describePriceCallable(const Model::DescribePriceRequest& request) const; DescribeRegionsOutcome describeRegions(const Model::DescribeRegionsRequest &request)const; void describeRegionsAsync(const Model::DescribeRegionsRequest& request, const DescribeRegionsAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; DescribeRegionsOutcomeCallable describeRegionsCallable(const Model::DescribeRegionsRequest& request) const; diff --git a/dds/include/alibabacloud/dds/model/DescribeDBInstanceAttributeResult.h b/dds/include/alibabacloud/dds/model/DescribeDBInstanceAttributeResult.h index 5d5e63f3c..21ccc87d1 100644 --- a/dds/include/alibabacloud/dds/model/DescribeDBInstanceAttributeResult.h +++ b/dds/include/alibabacloud/dds/model/DescribeDBInstanceAttributeResult.h @@ -115,6 +115,7 @@ namespace AlibabaCloud int maxIOPS; std::string chargeType; std::string currentKernelVersion; + std::string protocolType; std::string vpcAuthMode; std::string creationTime; std::vector configserverList; diff --git a/dds/include/alibabacloud/dds/model/DescribePriceRequest.h b/dds/include/alibabacloud/dds/model/DescribePriceRequest.h new file mode 100644 index 000000000..3c9b56c27 --- /dev/null +++ b/dds/include/alibabacloud/dds/model/DescribePriceRequest.h @@ -0,0 +1,84 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_DDS_MODEL_DESCRIBEPRICEREQUEST_H_ +#define ALIBABACLOUD_DDS_MODEL_DESCRIBEPRICEREQUEST_H_ + +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace Dds + { + namespace Model + { + class ALIBABACLOUD_DDS_EXPORT DescribePriceRequest : public RpcServiceRequest + { + + public: + DescribePriceRequest(); + ~DescribePriceRequest(); + + long getResourceOwnerId()const; + void setResourceOwnerId(long resourceOwnerId); + std::string getProductCode()const; + void setProductCode(const std::string& productCode); + std::string getCouponNo()const; + void setCouponNo(const std::string& couponNo); + std::string getAccessKeyId()const; + void setAccessKeyId(const std::string& accessKeyId); + std::string getSecurityToken()const; + void setSecurityToken(const std::string& securityToken); + std::string getBusinessInfo()const; + void setBusinessInfo(const std::string& businessInfo); + std::string getResourceOwnerAccount()const; + void setResourceOwnerAccount(const std::string& resourceOwnerAccount); + std::string getOwnerAccount()const; + void setOwnerAccount(const std::string& ownerAccount); + std::string getOrderParamOut()const; + void setOrderParamOut(const std::string& orderParamOut); + std::string getCommodityCode()const; + void setCommodityCode(const std::string& commodityCode); + long getOwnerId()const; + void setOwnerId(long ownerId); + std::string getDBInstances()const; + void setDBInstances(const std::string& dBInstances); + std::string getOrderType()const; + void setOrderType(const std::string& orderType); + + private: + long resourceOwnerId_; + std::string productCode_; + std::string couponNo_; + std::string accessKeyId_; + std::string securityToken_; + std::string businessInfo_; + std::string resourceOwnerAccount_; + std::string ownerAccount_; + std::string orderParamOut_; + std::string commodityCode_; + long ownerId_; + std::string dBInstances_; + std::string orderType_; + + }; + } + } +} +#endif // !ALIBABACLOUD_DDS_MODEL_DESCRIBEPRICEREQUEST_H_ \ No newline at end of file diff --git a/dds/include/alibabacloud/dds/model/DescribePriceResult.h b/dds/include/alibabacloud/dds/model/DescribePriceResult.h new file mode 100644 index 000000000..9ed7c7619 --- /dev/null +++ b/dds/include/alibabacloud/dds/model/DescribePriceResult.h @@ -0,0 +1,89 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_DDS_MODEL_DESCRIBEPRICERESULT_H_ +#define ALIBABACLOUD_DDS_MODEL_DESCRIBEPRICERESULT_H_ + +#include +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace Dds + { + namespace Model + { + class ALIBABACLOUD_DDS_EXPORT DescribePriceResult : public ServiceResult + { + public: + struct Order + { + struct Coupon + { + std::string couponNo; + std::string description; + std::string isSelected; + std::string name; + }; + std::vector ruleIds1; + std::string currency; + float tradeAmount; + std::vector coupons; + float originalAmount; + float discountAmount; + }; + struct Rule + { + long ruleDescId; + std::string title; + std::string name; + }; + struct SubOrder + { + std::string instanceId; + std::vector ruleIds; + float tradeAmount; + float originalAmount; + float discountAmount; + }; + + + DescribePriceResult(); + explicit DescribePriceResult(const std::string &payload); + ~DescribePriceResult(); + Order getOrder()const; + std::vector getSubOrders()const; + std::string getTraceId()const; + std::string getOrderParams()const; + std::vector getRules()const; + + protected: + void parse(const std::string &payload); + private: + Order order_; + std::vector subOrders_; + std::string traceId_; + std::string orderParams_; + std::vector rules_; + + }; + } + } +} +#endif // !ALIBABACLOUD_DDS_MODEL_DESCRIBEPRICERESULT_H_ \ No newline at end of file diff --git a/dds/src/DdsClient.cc b/dds/src/DdsClient.cc index 17bd56925..d2ffdfed4 100644 --- a/dds/src/DdsClient.cc +++ b/dds/src/DdsClient.cc @@ -1383,6 +1383,42 @@ DdsClient::DescribeParametersOutcomeCallable DdsClient::describeParametersCallab return task->get_future(); } +DdsClient::DescribePriceOutcome DdsClient::describePrice(const DescribePriceRequest &request) const +{ + auto endpointOutcome = endpointProvider_->getEndpoint(); + if (!endpointOutcome.isSuccess()) + return DescribePriceOutcome(endpointOutcome.error()); + + auto outcome = makeRequest(endpointOutcome.result(), request); + + if (outcome.isSuccess()) + return DescribePriceOutcome(DescribePriceResult(outcome.result())); + else + return DescribePriceOutcome(outcome.error()); +} + +void DdsClient::describePriceAsync(const DescribePriceRequest& request, const DescribePriceAsyncHandler& handler, const std::shared_ptr& context) const +{ + auto fn = [this, request, handler, context]() + { + handler(this, request, describePrice(request), context); + }; + + asyncExecute(new Runnable(fn)); +} + +DdsClient::DescribePriceOutcomeCallable DdsClient::describePriceCallable(const DescribePriceRequest &request) const +{ + auto task = std::make_shared>( + [this, request]() + { + return this->describePrice(request); + }); + + asyncExecute(new Runnable([task]() { (*task)(); })); + return task->get_future(); +} + DdsClient::DescribeRegionsOutcome DdsClient::describeRegions(const DescribeRegionsRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); diff --git a/dds/src/model/DescribeDBInstanceAttributeResult.cc b/dds/src/model/DescribeDBInstanceAttributeResult.cc index b7f246ddf..9b5170015 100644 --- a/dds/src/model/DescribeDBInstanceAttributeResult.cc +++ b/dds/src/model/DescribeDBInstanceAttributeResult.cc @@ -103,6 +103,8 @@ void DescribeDBInstanceAttributeResult::parse(const std::string &payload) dBInstancesObject.maxConnections = std::stoi(valueDBInstancesDBInstance["MaxConnections"].asString()); if(!valueDBInstancesDBInstance["CurrentKernelVersion"].isNull()) dBInstancesObject.currentKernelVersion = valueDBInstancesDBInstance["CurrentKernelVersion"].asString(); + if(!valueDBInstancesDBInstance["ProtocolType"].isNull()) + dBInstancesObject.protocolType = valueDBInstancesDBInstance["ProtocolType"].asString(); if(!valueDBInstancesDBInstance["VpcAuthMode"].isNull()) dBInstancesObject.vpcAuthMode = valueDBInstancesDBInstance["VpcAuthMode"].asString(); auto allMongosListNode = allDBInstancesNode["MongosList"]["MongosAttribute"]; diff --git a/dds/src/model/DescribePriceRequest.cc b/dds/src/model/DescribePriceRequest.cc new file mode 100644 index 000000000..ca4ee3fcd --- /dev/null +++ b/dds/src/model/DescribePriceRequest.cc @@ -0,0 +1,172 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +using AlibabaCloud::Dds::Model::DescribePriceRequest; + +DescribePriceRequest::DescribePriceRequest() : + RpcServiceRequest("dds", "2015-12-01", "DescribePrice") +{ + setMethod(HttpRequest::Method::Post); +} + +DescribePriceRequest::~DescribePriceRequest() +{} + +long DescribePriceRequest::getResourceOwnerId()const +{ + return resourceOwnerId_; +} + +void DescribePriceRequest::setResourceOwnerId(long resourceOwnerId) +{ + resourceOwnerId_ = resourceOwnerId; + setParameter("ResourceOwnerId", std::to_string(resourceOwnerId)); +} + +std::string DescribePriceRequest::getProductCode()const +{ + return productCode_; +} + +void DescribePriceRequest::setProductCode(const std::string& productCode) +{ + productCode_ = productCode; + setParameter("ProductCode", productCode); +} + +std::string DescribePriceRequest::getCouponNo()const +{ + return couponNo_; +} + +void DescribePriceRequest::setCouponNo(const std::string& couponNo) +{ + couponNo_ = couponNo; + setParameter("CouponNo", couponNo); +} + +std::string DescribePriceRequest::getAccessKeyId()const +{ + return accessKeyId_; +} + +void DescribePriceRequest::setAccessKeyId(const std::string& accessKeyId) +{ + accessKeyId_ = accessKeyId; + setParameter("AccessKeyId", accessKeyId); +} + +std::string DescribePriceRequest::getSecurityToken()const +{ + return securityToken_; +} + +void DescribePriceRequest::setSecurityToken(const std::string& securityToken) +{ + securityToken_ = securityToken; + setParameter("SecurityToken", securityToken); +} + +std::string DescribePriceRequest::getBusinessInfo()const +{ + return businessInfo_; +} + +void DescribePriceRequest::setBusinessInfo(const std::string& businessInfo) +{ + businessInfo_ = businessInfo; + setParameter("BusinessInfo", businessInfo); +} + +std::string DescribePriceRequest::getResourceOwnerAccount()const +{ + return resourceOwnerAccount_; +} + +void DescribePriceRequest::setResourceOwnerAccount(const std::string& resourceOwnerAccount) +{ + resourceOwnerAccount_ = resourceOwnerAccount; + setParameter("ResourceOwnerAccount", resourceOwnerAccount); +} + +std::string DescribePriceRequest::getOwnerAccount()const +{ + return ownerAccount_; +} + +void DescribePriceRequest::setOwnerAccount(const std::string& ownerAccount) +{ + ownerAccount_ = ownerAccount; + setParameter("OwnerAccount", ownerAccount); +} + +std::string DescribePriceRequest::getOrderParamOut()const +{ + return orderParamOut_; +} + +void DescribePriceRequest::setOrderParamOut(const std::string& orderParamOut) +{ + orderParamOut_ = orderParamOut; + setParameter("OrderParamOut", orderParamOut); +} + +std::string DescribePriceRequest::getCommodityCode()const +{ + return commodityCode_; +} + +void DescribePriceRequest::setCommodityCode(const std::string& commodityCode) +{ + commodityCode_ = commodityCode; + setParameter("CommodityCode", commodityCode); +} + +long DescribePriceRequest::getOwnerId()const +{ + return ownerId_; +} + +void DescribePriceRequest::setOwnerId(long ownerId) +{ + ownerId_ = ownerId; + setParameter("OwnerId", std::to_string(ownerId)); +} + +std::string DescribePriceRequest::getDBInstances()const +{ + return dBInstances_; +} + +void DescribePriceRequest::setDBInstances(const std::string& dBInstances) +{ + dBInstances_ = dBInstances; + setParameter("DBInstances", dBInstances); +} + +std::string DescribePriceRequest::getOrderType()const +{ + return orderType_; +} + +void DescribePriceRequest::setOrderType(const std::string& orderType) +{ + orderType_ = orderType; + setParameter("OrderType", orderType); +} + diff --git a/dds/src/model/DescribePriceResult.cc b/dds/src/model/DescribePriceResult.cc new file mode 100644 index 000000000..92afe14e4 --- /dev/null +++ b/dds/src/model/DescribePriceResult.cc @@ -0,0 +1,128 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +using namespace AlibabaCloud::Dds; +using namespace AlibabaCloud::Dds::Model; + +DescribePriceResult::DescribePriceResult() : + ServiceResult() +{} + +DescribePriceResult::DescribePriceResult(const std::string &payload) : + ServiceResult() +{ + parse(payload); +} + +DescribePriceResult::~DescribePriceResult() +{} + +void DescribePriceResult::parse(const std::string &payload) +{ + Json::Reader reader; + Json::Value value; + reader.parse(payload, value); + setRequestId(value["RequestId"].asString()); + auto allRulesNode = value["Rules"]["Rule"]; + for (auto valueRulesRule : allRulesNode) + { + Rule rulesObject; + if(!valueRulesRule["RuleDescId"].isNull()) + rulesObject.ruleDescId = std::stol(valueRulesRule["RuleDescId"].asString()); + if(!valueRulesRule["Name"].isNull()) + rulesObject.name = valueRulesRule["Name"].asString(); + if(!valueRulesRule["Title"].isNull()) + rulesObject.title = valueRulesRule["Title"].asString(); + rules_.push_back(rulesObject); + } + auto allSubOrdersNode = value["SubOrders"]["SubOrder"]; + for (auto valueSubOrdersSubOrder : allSubOrdersNode) + { + SubOrder subOrdersObject; + if(!valueSubOrdersSubOrder["OriginalAmount"].isNull()) + subOrdersObject.originalAmount = std::stof(valueSubOrdersSubOrder["OriginalAmount"].asString()); + if(!valueSubOrdersSubOrder["TradeAmount"].isNull()) + subOrdersObject.tradeAmount = std::stof(valueSubOrdersSubOrder["TradeAmount"].asString()); + if(!valueSubOrdersSubOrder["DiscountAmount"].isNull()) + subOrdersObject.discountAmount = std::stof(valueSubOrdersSubOrder["DiscountAmount"].asString()); + if(!valueSubOrdersSubOrder["InstanceId"].isNull()) + subOrdersObject.instanceId = valueSubOrdersSubOrder["InstanceId"].asString(); + auto allRuleIds = value["RuleIds"]["RuleId"]; + for (auto value : allRuleIds) + subOrdersObject.ruleIds.push_back(value.asString()); + subOrders_.push_back(subOrdersObject); + } + auto orderNode = value["Order"]; + if(!orderNode["OriginalAmount"].isNull()) + order_.originalAmount = std::stof(orderNode["OriginalAmount"].asString()); + if(!orderNode["TradeAmount"].isNull()) + order_.tradeAmount = std::stof(orderNode["TradeAmount"].asString()); + if(!orderNode["DiscountAmount"].isNull()) + order_.discountAmount = std::stof(orderNode["DiscountAmount"].asString()); + if(!orderNode["Currency"].isNull()) + order_.currency = orderNode["Currency"].asString(); + auto allCouponsNode = orderNode["Coupons"]["Coupon"]; + for (auto orderNodeCouponsCoupon : allCouponsNode) + { + Order::Coupon couponObject; + if(!orderNodeCouponsCoupon["CouponNo"].isNull()) + couponObject.couponNo = orderNodeCouponsCoupon["CouponNo"].asString(); + if(!orderNodeCouponsCoupon["Name"].isNull()) + couponObject.name = orderNodeCouponsCoupon["Name"].asString(); + if(!orderNodeCouponsCoupon["Description"].isNull()) + couponObject.description = orderNodeCouponsCoupon["Description"].asString(); + if(!orderNodeCouponsCoupon["IsSelected"].isNull()) + couponObject.isSelected = orderNodeCouponsCoupon["IsSelected"].asString(); + order_.coupons.push_back(couponObject); + } + auto allRuleIds1 = orderNode["RuleIds"]["RuleId"]; + for (auto value : allRuleIds1) + order_.ruleIds1.push_back(value.asString()); + if(!value["TraceId"].isNull()) + traceId_ = value["TraceId"].asString(); + if(!value["OrderParams"].isNull()) + orderParams_ = value["OrderParams"].asString(); + +} + +DescribePriceResult::Order DescribePriceResult::getOrder()const +{ + return order_; +} + +std::vector DescribePriceResult::getSubOrders()const +{ + return subOrders_; +} + +std::string DescribePriceResult::getTraceId()const +{ + return traceId_; +} + +std::string DescribePriceResult::getOrderParams()const +{ + return orderParams_; +} + +std::vector DescribePriceResult::getRules()const +{ + return rules_; +} +