Add a API QueryDeviceProvisioning to support query provisioning info for device.

This commit is contained in:
sdk-team
2023-03-02 12:38:16 +00:00
parent da19881477
commit f47daab733
12 changed files with 342 additions and 127 deletions

View File

@@ -31,21 +31,21 @@ IotClient::IotClient(const Credentials &credentials, const ClientConfiguration &
RpcServiceClient(SERVICE_NAME, std::make_shared<SimpleCredentialsProvider>(credentials), configuration)
{
auto locationClient = std::make_shared<LocationClient>(credentials, configuration);
endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "");
endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "iot");
}
IotClient::IotClient(const std::shared_ptr<CredentialsProvider>& credentialsProvider, const ClientConfiguration & configuration) :
RpcServiceClient(SERVICE_NAME, credentialsProvider, configuration)
{
auto locationClient = std::make_shared<LocationClient>(credentialsProvider, configuration);
endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "");
endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "iot");
}
IotClient::IotClient(const std::string & accessKeyId, const std::string & accessKeySecret, const ClientConfiguration & configuration) :
RpcServiceClient(SERVICE_NAME, std::make_shared<SimpleCredentialsProvider>(accessKeyId, accessKeySecret), configuration)
{
auto locationClient = std::make_shared<LocationClient>(accessKeyId, accessKeySecret, configuration);
endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "");
endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "iot");
}
IotClient::~IotClient()
@@ -9411,6 +9411,42 @@ IotClient::QueryDevicePropertyStatusOutcomeCallable IotClient::queryDeviceProper
return task->get_future();
}
IotClient::QueryDeviceProvisioningOutcome IotClient::queryDeviceProvisioning(const QueryDeviceProvisioningRequest &request) const
{
auto endpointOutcome = endpointProvider_->getEndpoint();
if (!endpointOutcome.isSuccess())
return QueryDeviceProvisioningOutcome(endpointOutcome.error());
auto outcome = makeRequest(endpointOutcome.result(), request);
if (outcome.isSuccess())
return QueryDeviceProvisioningOutcome(QueryDeviceProvisioningResult(outcome.result()));
else
return QueryDeviceProvisioningOutcome(outcome.error());
}
void IotClient::queryDeviceProvisioningAsync(const QueryDeviceProvisioningRequest& request, const QueryDeviceProvisioningAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
{
auto fn = [this, request, handler, context]()
{
handler(this, request, queryDeviceProvisioning(request), context);
};
asyncExecute(new Runnable(fn));
}
IotClient::QueryDeviceProvisioningOutcomeCallable IotClient::queryDeviceProvisioningCallable(const QueryDeviceProvisioningRequest &request) const
{
auto task = std::make_shared<std::packaged_task<QueryDeviceProvisioningOutcome()>>(
[this, request]()
{
return this->queryDeviceProvisioning(request);
});
asyncExecute(new Runnable([task]() { (*task)(); }));
return task->get_future();
}
IotClient::QueryDeviceServiceDataOutcome IotClient::queryDeviceServiceData(const QueryDeviceServiceDataRequest &request) const
{
auto endpointOutcome = endpointProvider_->getEndpoint();

View File

@@ -60,17 +60,6 @@ void CreateDownloadDataJobRequest::setIotInstanceId(const std::string& iotInstan
setBodyParameter("IotInstanceId", iotInstanceId);
}
std::string CreateDownloadDataJobRequest::getContext()const
{
return context_;
}
void CreateDownloadDataJobRequest::setContext(const std::string& context)
{
context_ = context;
setBodyParameter("Context", context);
}
std::string CreateDownloadDataJobRequest::getTableName()const
{
return tableName_;

View File

@@ -40,83 +40,16 @@ void CreateDownloadDataJobResult::parse(const std::string &payload)
reader.parse(payload, value);
setRequestId(value["RequestId"].asString());
auto dataNode = value["Data"];
if(!dataNode["PreviewSize"].isNull())
data_.previewSize = std::stoi(dataNode["PreviewSize"].asString());
if(!dataNode["CsvUrl"].isNull())
data_.csvUrl = dataNode["CsvUrl"].asString();
if(!dataNode["DatasetId"].isNull())
data_.datasetId = dataNode["DatasetId"].asString();
if(!dataNode["LongJobId"].isNull())
data_.longJobId = dataNode["LongJobId"].asString();
if(!dataNode["Status"].isNull())
data_.status = std::stoi(dataNode["Status"].asString());
if(!dataNode["BeginTime"].isNull())
data_.beginTime = std::stol(dataNode["BeginTime"].asString());
if(!dataNode["EndTime"].isNull())
data_.endTime = std::stol(dataNode["EndTime"].asString());
if(!dataNode["ResultDataInString"].isNull())
data_.resultDataInString = dataNode["ResultDataInString"].asString();
if(!dataNode["AsyncExecute"].isNull())
data_.asyncExecute = dataNode["AsyncExecute"].asString() == "true";
if(!dataNode["TotalCount"].isNull())
data_.totalCount = std::stol(dataNode["TotalCount"].asString());
if(!dataNode["PageNo"].isNull())
data_.pageNo = std::stoi(dataNode["PageNo"].asString());
if(!dataNode["PageSize"].isNull())
data_.pageSize = std::stoi(dataNode["PageSize"].asString());
if(!dataNode["CsvFileName"].isNull())
data_.csvFileName = dataNode["CsvFileName"].asString();
auto allHeaderNode = dataNode["Header"]["HeaderItem"];
for (auto dataNodeHeaderHeaderItem : allHeaderNode)
{
Data::HeaderItem headerItemObject;
if(!dataNodeHeaderHeaderItem["FieldName"].isNull())
headerItemObject.fieldName = dataNodeHeaderHeaderItem["FieldName"].asString();
if(!dataNodeHeaderHeaderItem["Alias"].isNull())
headerItemObject.alias = dataNodeHeaderHeaderItem["Alias"].asString();
if(!dataNodeHeaderHeaderItem["FieldType"].isNull())
headerItemObject.fieldType = dataNodeHeaderHeaderItem["FieldType"].asString();
if(!dataNodeHeaderHeaderItem["TypeClass"].isNull())
headerItemObject.typeClass = dataNodeHeaderHeaderItem["TypeClass"].asString();
if(!dataNodeHeaderHeaderItem["TimeClass"].isNull())
headerItemObject.timeClass = dataNodeHeaderHeaderItem["TimeClass"].asString();
if(!dataNodeHeaderHeaderItem["GeoClass"].isNull())
headerItemObject.geoClass = dataNodeHeaderHeaderItem["GeoClass"].asString();
if(!dataNodeHeaderHeaderItem["DimDateClass"].isNull())
headerItemObject.dimDateClass = dataNodeHeaderHeaderItem["DimDateClass"].asString();
if(!dataNodeHeaderHeaderItem["DataPrecision"].isNull())
headerItemObject.dataPrecision = dataNodeHeaderHeaderItem["DataPrecision"].asString();
data_.header.push_back(headerItemObject);
}
auto querySettingNode = dataNode["QuerySetting"];
auto allSelectedHeadersNode = querySettingNode["SelectedHeaders"]["SelectedHeadersItem"];
for (auto querySettingNodeSelectedHeadersSelectedHeadersItem : allSelectedHeadersNode)
{
Data::QuerySetting::SelectedHeadersItem selectedHeadersItemObject;
if(!querySettingNodeSelectedHeadersSelectedHeadersItem["FieldName"].isNull())
selectedHeadersItemObject.fieldName = querySettingNodeSelectedHeadersSelectedHeadersItem["FieldName"].asString();
if(!querySettingNodeSelectedHeadersSelectedHeadersItem["Alias"].isNull())
selectedHeadersItemObject.alias = querySettingNodeSelectedHeadersSelectedHeadersItem["Alias"].asString();
if(!querySettingNodeSelectedHeadersSelectedHeadersItem["FieldType"].isNull())
selectedHeadersItemObject.fieldType = querySettingNodeSelectedHeadersSelectedHeadersItem["FieldType"].asString();
if(!querySettingNodeSelectedHeadersSelectedHeadersItem["TimeClass"].isNull())
selectedHeadersItemObject.timeClass = querySettingNodeSelectedHeadersSelectedHeadersItem["TimeClass"].asString();
if(!querySettingNodeSelectedHeadersSelectedHeadersItem["GeoClass"].isNull())
selectedHeadersItemObject.geoClass = querySettingNodeSelectedHeadersSelectedHeadersItem["GeoClass"].asString();
if(!querySettingNodeSelectedHeadersSelectedHeadersItem["DimDateClass"].isNull())
selectedHeadersItemObject.dimDateClass = querySettingNodeSelectedHeadersSelectedHeadersItem["DimDateClass"].asString();
data_.querySetting.selectedHeaders.push_back(selectedHeadersItemObject);
}
auto allAstExprNode = querySettingNode["AstExpr"]["AstExprItem"];
for (auto querySettingNodeAstExprAstExprItem : allAstExprNode)
{
Data::QuerySetting::AstExprItem astExprItemObject;
if(!querySettingNodeAstExprAstExprItem["Expr"].isNull())
astExprItemObject.expr = querySettingNodeAstExprAstExprItem["Expr"].asString();
if(!querySettingNodeAstExprAstExprItem["ExprType"].isNull())
astExprItemObject.exprType = querySettingNodeAstExprAstExprItem["ExprType"].asString();
data_.querySetting.astExpr.push_back(astExprItemObject);
}
if(!value["Success"].isNull())
success_ = value["Success"].asString() == "true";
if(!value["Code"].isNull())

View File

@@ -0,0 +1,73 @@
/*
* 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 <alibabacloud/iot/model/QueryDeviceProvisioningRequest.h>
using AlibabaCloud::Iot::Model::QueryDeviceProvisioningRequest;
QueryDeviceProvisioningRequest::QueryDeviceProvisioningRequest() :
RpcServiceRequest("iot", "2018-01-20", "QueryDeviceProvisioning")
{
setMethod(HttpRequest::Method::Post);
}
QueryDeviceProvisioningRequest::~QueryDeviceProvisioningRequest()
{}
std::string QueryDeviceProvisioningRequest::getProductKey()const
{
return productKey_;
}
void QueryDeviceProvisioningRequest::setProductKey(const std::string& productKey)
{
productKey_ = productKey;
setBodyParameter("ProductKey", productKey);
}
std::string QueryDeviceProvisioningRequest::getApiProduct()const
{
return apiProduct_;
}
void QueryDeviceProvisioningRequest::setApiProduct(const std::string& apiProduct)
{
apiProduct_ = apiProduct;
setBodyParameter("ApiProduct", apiProduct);
}
std::string QueryDeviceProvisioningRequest::getApiRevision()const
{
return apiRevision_;
}
void QueryDeviceProvisioningRequest::setApiRevision(const std::string& apiRevision)
{
apiRevision_ = apiRevision;
setBodyParameter("ApiRevision", apiRevision);
}
std::string QueryDeviceProvisioningRequest::getDeviceName()const
{
return deviceName_;
}
void QueryDeviceProvisioningRequest::setDeviceName(const std::string& deviceName)
{
deviceName_ = deviceName;
setParameter("DeviceName", deviceName);
}

View File

@@ -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.
*/
#include <alibabacloud/iot/model/QueryDeviceProvisioningResult.h>
#include <json/json.h>
using namespace AlibabaCloud::Iot;
using namespace AlibabaCloud::Iot::Model;
QueryDeviceProvisioningResult::QueryDeviceProvisioningResult() :
ServiceResult()
{}
QueryDeviceProvisioningResult::QueryDeviceProvisioningResult(const std::string &payload) :
ServiceResult()
{
parse(payload);
}
QueryDeviceProvisioningResult::~QueryDeviceProvisioningResult()
{}
void QueryDeviceProvisioningResult::parse(const std::string &payload)
{
Json::Reader reader;
Json::Value value;
reader.parse(payload, value);
setRequestId(value["RequestId"].asString());
auto dataNode = value["Data"];
if(!dataNode["GmtCreate"].isNull())
data_.gmtCreate = std::stol(dataNode["GmtCreate"].asString());
if(!dataNode["GmtModified"].isNull())
data_.gmtModified = std::stol(dataNode["GmtModified"].asString());
if(!dataNode["AliyunUid"].isNull())
data_.aliyunUid = dataNode["AliyunUid"].asString();
if(!dataNode["ProductKey"].isNull())
data_.productKey = dataNode["ProductKey"].asString();
if(!dataNode["DeviceName"].isNull())
data_.deviceName = dataNode["DeviceName"].asString();
if(!dataNode["SourceIotInstanceId"].isNull())
data_.sourceIotInstanceId = dataNode["SourceIotInstanceId"].asString();
if(!dataNode["TargetIotInstanceId"].isNull())
data_.targetIotInstanceId = dataNode["TargetIotInstanceId"].asString();
if(!dataNode["SourceRegion"].isNull())
data_.sourceRegion = dataNode["SourceRegion"].asString();
if(!dataNode["TargetRegion"].isNull())
data_.targetRegion = dataNode["TargetRegion"].asString();
if(!value["Success"].isNull())
success_ = value["Success"].asString() == "true";
if(!value["Code"].isNull())
code_ = value["Code"].asString();
if(!value["ErrorMessage"].isNull())
errorMessage_ = value["ErrorMessage"].asString();
}
QueryDeviceProvisioningResult::Data QueryDeviceProvisioningResult::getData()const
{
return data_;
}
std::string QueryDeviceProvisioningResult::getErrorMessage()const
{
return errorMessage_;
}
std::string QueryDeviceProvisioningResult::getCode()const
{
return code_;
}
bool QueryDeviceProvisioningResult::getSuccess()const
{
return success_;
}