From 9a2a29f30811fd27270e3b984ed93f29a8b6e6bd Mon Sep 17 00:00:00 2001 From: "yixiong.jxy" Date: Mon, 13 Aug 2018 17:15:41 +0800 Subject: [PATCH] =?UTF-8?q?LINKFACE=20SDK=20Auto=20Released=20By=20jiayao.?= =?UTF-8?q?wjy,Version=EF=BC=9A1.22.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yixiong.jxy --- CHANGELOG | 5 ++ VERSION | 2 +- linkface/CMakeLists.txt | 4 + .../alibabacloud/linkface/LinkFaceClient.h | 8 ++ .../linkface/model/QueryFaceResult.h | 1 + .../linkface/model/RegisterFaceRequest.h | 3 + .../linkface/model/SearchFaceRequest.h | 51 ++++++++++++ .../linkface/model/SearchFaceResult.h | 66 +++++++++++++++ .../linkface/model/UpdateFaceRequest.h | 3 + linkface/src/LinkFaceClient.cc | 36 ++++++++ linkface/src/model/QueryFaceResult.cc | 2 + linkface/src/model/RegisterFaceRequest.cc | 11 +++ linkface/src/model/SearchFaceRequest.cc | 49 +++++++++++ linkface/src/model/SearchFaceResult.cc | 82 +++++++++++++++++++ linkface/src/model/UpdateFaceRequest.cc | 11 +++ 15 files changed, 333 insertions(+), 1 deletion(-) create mode 100644 linkface/include/alibabacloud/linkface/model/SearchFaceRequest.h create mode 100644 linkface/include/alibabacloud/linkface/model/SearchFaceResult.h create mode 100644 linkface/src/model/SearchFaceRequest.cc create mode 100644 linkface/src/model/SearchFaceResult.cc diff --git a/CHANGELOG b/CHANGELOG index 6ea228976..8622f9f1b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +2018-08-13 Version: 1.22.0 +1, New userinfo fields for registerface input parameter. +2, New userinfo fields for updateface input parameter. +3, New userinfo fields for queryface output parameter. + 2018-08-13 Version: 1.21.6 1, Add cross domain support. 2, Add parameter SerialNumber to interface RebootSmartAccessGateway. diff --git a/VERSION b/VERSION index 6e83421e4..80a81c0e7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.21.6 \ No newline at end of file +1.22.0 \ No newline at end of file diff --git a/linkface/CMakeLists.txt b/linkface/CMakeLists.txt index 3f8004f57..4f2e41ac1 100644 --- a/linkface/CMakeLists.txt +++ b/linkface/CMakeLists.txt @@ -41,6 +41,8 @@ set(linkface_public_header_model include/alibabacloud/linkface/model/QueryGroupUsersResult.h include/alibabacloud/linkface/model/LinkFaceRequest.h include/alibabacloud/linkface/model/LinkFaceResult.h + include/alibabacloud/linkface/model/SearchFaceRequest.h + include/alibabacloud/linkface/model/SearchFaceResult.h include/alibabacloud/linkface/model/QueryAllGroupsRequest.h include/alibabacloud/linkface/model/QueryAllGroupsResult.h include/alibabacloud/linkface/model/RegisterFaceRequest.h @@ -74,6 +76,8 @@ set(linkface_src src/model/QueryGroupUsersResult.cc src/model/LinkFaceRequest.cc src/model/LinkFaceResult.cc + src/model/SearchFaceRequest.cc + src/model/SearchFaceResult.cc src/model/QueryAllGroupsRequest.cc src/model/QueryAllGroupsResult.cc src/model/RegisterFaceRequest.cc diff --git a/linkface/include/alibabacloud/linkface/LinkFaceClient.h b/linkface/include/alibabacloud/linkface/LinkFaceClient.h index 5e33ff830..8f1092107 100644 --- a/linkface/include/alibabacloud/linkface/LinkFaceClient.h +++ b/linkface/include/alibabacloud/linkface/LinkFaceClient.h @@ -42,6 +42,8 @@ #include "model/QueryGroupUsersResult.h" #include "model/LinkFaceRequest.h" #include "model/LinkFaceResult.h" +#include "model/SearchFaceRequest.h" +#include "model/SearchFaceResult.h" #include "model/QueryAllGroupsRequest.h" #include "model/QueryAllGroupsResult.h" #include "model/RegisterFaceRequest.h" @@ -91,6 +93,9 @@ namespace AlibabaCloud typedef Outcome LinkFaceOutcome; typedef std::future LinkFaceOutcomeCallable; typedef std::function&)> LinkFaceAsyncHandler; + typedef Outcome SearchFaceOutcome; + typedef std::future SearchFaceOutcomeCallable; + typedef std::function&)> SearchFaceAsyncHandler; typedef Outcome QueryAllGroupsOutcome; typedef std::future QueryAllGroupsOutcomeCallable; typedef std::function&)> QueryAllGroupsAsyncHandler; @@ -141,6 +146,9 @@ namespace AlibabaCloud LinkFaceOutcome linkFace(const Model::LinkFaceRequest &request)const; void linkFaceAsync(const Model::LinkFaceRequest& request, const LinkFaceAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; LinkFaceOutcomeCallable linkFaceCallable(const Model::LinkFaceRequest& request) const; + SearchFaceOutcome searchFace(const Model::SearchFaceRequest &request)const; + void searchFaceAsync(const Model::SearchFaceRequest& request, const SearchFaceAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; + SearchFaceOutcomeCallable searchFaceCallable(const Model::SearchFaceRequest& request) const; QueryAllGroupsOutcome queryAllGroups(const Model::QueryAllGroupsRequest &request)const; void queryAllGroupsAsync(const Model::QueryAllGroupsRequest& request, const QueryAllGroupsAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; QueryAllGroupsOutcomeCallable queryAllGroupsCallable(const Model::QueryAllGroupsRequest& request) const; diff --git a/linkface/include/alibabacloud/linkface/model/QueryFaceResult.h b/linkface/include/alibabacloud/linkface/model/QueryFaceResult.h index 5497f7197..57f997cd6 100644 --- a/linkface/include/alibabacloud/linkface/model/QueryFaceResult.h +++ b/linkface/include/alibabacloud/linkface/model/QueryFaceResult.h @@ -37,6 +37,7 @@ namespace AlibabaCloud struct UserFaceMetasItem { int index; + std::string userInfo; std::string clientTag; std::string faceUrl; }; diff --git a/linkface/include/alibabacloud/linkface/model/RegisterFaceRequest.h b/linkface/include/alibabacloud/linkface/model/RegisterFaceRequest.h index 1a30c5bfa..e28adf383 100644 --- a/linkface/include/alibabacloud/linkface/model/RegisterFaceRequest.h +++ b/linkface/include/alibabacloud/linkface/model/RegisterFaceRequest.h @@ -41,11 +41,14 @@ namespace AlibabaCloud void setGroupId(const std::string& groupId); std::string getUserId()const; void setUserId(const std::string& userId); + std::string getUserInfo()const; + void setUserInfo(const std::string& userInfo); private: std::string image_; std::string groupId_; std::string userId_; + std::string userInfo_; }; } diff --git a/linkface/include/alibabacloud/linkface/model/SearchFaceRequest.h b/linkface/include/alibabacloud/linkface/model/SearchFaceRequest.h new file mode 100644 index 000000000..16416357b --- /dev/null +++ b/linkface/include/alibabacloud/linkface/model/SearchFaceRequest.h @@ -0,0 +1,51 @@ +/* + * 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_LINKFACE_MODEL_SEARCHFACEREQUEST_H_ +#define ALIBABACLOUD_LINKFACE_MODEL_SEARCHFACEREQUEST_H_ + +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace LinkFace + { + namespace Model + { + class ALIBABACLOUD_LINKFACE_EXPORT SearchFaceRequest : public RpcServiceRequest + { + + public: + SearchFaceRequest(); + ~SearchFaceRequest(); + + std::string getImage()const; + void setImage(const std::string& image); + std::string getGroupId()const; + void setGroupId(const std::string& groupId); + + private: + std::string image_; + std::string groupId_; + + }; + } + } +} +#endif // !ALIBABACLOUD_LINKFACE_MODEL_SEARCHFACEREQUEST_H_ \ No newline at end of file diff --git a/linkface/include/alibabacloud/linkface/model/SearchFaceResult.h b/linkface/include/alibabacloud/linkface/model/SearchFaceResult.h new file mode 100644 index 000000000..82539f991 --- /dev/null +++ b/linkface/include/alibabacloud/linkface/model/SearchFaceResult.h @@ -0,0 +1,66 @@ +/* + * 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_LINKFACE_MODEL_SEARCHFACERESULT_H_ +#define ALIBABACLOUD_LINKFACE_MODEL_SEARCHFACERESULT_H_ + +#include +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace LinkFace + { + namespace Model + { + class ALIBABACLOUD_LINKFACE_EXPORT SearchFaceResult : public ServiceResult + { + public: + struct Data + { + struct TopUserItemItem + { + float score; + std::string userId; + }; + std::vector topUserItem; + }; + + + SearchFaceResult(); + explicit SearchFaceResult(const std::string &payload); + ~SearchFaceResult(); + std::string getMessage()const; + Data getData()const; + int getCode()const; + bool getSuccess()const; + + protected: + void parse(const std::string &payload); + private: + std::string message_; + Data data_; + int code_; + bool success_; + + }; + } + } +} +#endif // !ALIBABACLOUD_LINKFACE_MODEL_SEARCHFACERESULT_H_ \ No newline at end of file diff --git a/linkface/include/alibabacloud/linkface/model/UpdateFaceRequest.h b/linkface/include/alibabacloud/linkface/model/UpdateFaceRequest.h index e96812a7c..4d12845bd 100644 --- a/linkface/include/alibabacloud/linkface/model/UpdateFaceRequest.h +++ b/linkface/include/alibabacloud/linkface/model/UpdateFaceRequest.h @@ -39,10 +39,13 @@ namespace AlibabaCloud void setImage(const std::string& image); std::string getUserId()const; void setUserId(const std::string& userId); + std::string getUserInfo()const; + void setUserInfo(const std::string& userInfo); private: std::string image_; std::string userId_; + std::string userInfo_; }; } diff --git a/linkface/src/LinkFaceClient.cc b/linkface/src/LinkFaceClient.cc index 8fd2cf593..ddfe92444 100644 --- a/linkface/src/LinkFaceClient.cc +++ b/linkface/src/LinkFaceClient.cc @@ -411,6 +411,42 @@ LinkFaceClient::LinkFaceOutcomeCallable LinkFaceClient::linkFaceCallable(const L return task->get_future(); } +LinkFaceClient::SearchFaceOutcome LinkFaceClient::searchFace(const SearchFaceRequest &request) const +{ + auto endpointOutcome = endpointProvider_->getEndpoint(); + if (!endpointOutcome.isSuccess()) + return SearchFaceOutcome(endpointOutcome.error()); + + auto outcome = makeRequest(endpointOutcome.result(), request); + + if (outcome.isSuccess()) + return SearchFaceOutcome(SearchFaceResult(outcome.result())); + else + return SearchFaceOutcome(outcome.error()); +} + +void LinkFaceClient::searchFaceAsync(const SearchFaceRequest& request, const SearchFaceAsyncHandler& handler, const std::shared_ptr& context) const +{ + auto fn = [this, request, handler, context]() + { + handler(this, request, searchFace(request), context); + }; + + asyncExecute(new Runnable(fn)); +} + +LinkFaceClient::SearchFaceOutcomeCallable LinkFaceClient::searchFaceCallable(const SearchFaceRequest &request) const +{ + auto task = std::make_shared>( + [this, request]() + { + return this->searchFace(request); + }); + + asyncExecute(new Runnable([task]() { (*task)(); })); + return task->get_future(); +} + LinkFaceClient::QueryAllGroupsOutcome LinkFaceClient::queryAllGroups(const QueryAllGroupsRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); diff --git a/linkface/src/model/QueryFaceResult.cc b/linkface/src/model/QueryFaceResult.cc index 3025c6494..530c3b9a4 100644 --- a/linkface/src/model/QueryFaceResult.cc +++ b/linkface/src/model/QueryFaceResult.cc @@ -51,6 +51,8 @@ void QueryFaceResult::parse(const std::string &payload) userFaceMetasItemObject.index = std::stoi(value["Index"].asString()); if(!value["FaceUrl"].isNull()) userFaceMetasItemObject.faceUrl = value["FaceUrl"].asString(); + if(!value["UserInfo"].isNull()) + userFaceMetasItemObject.userInfo = value["UserInfo"].asString(); data_.userFaceMetas.push_back(userFaceMetasItemObject); } auto allGroupIds = dataNode["GroupIds"]["GroupIds"]; diff --git a/linkface/src/model/RegisterFaceRequest.cc b/linkface/src/model/RegisterFaceRequest.cc index 1afd4b64d..69d195a26 100644 --- a/linkface/src/model/RegisterFaceRequest.cc +++ b/linkface/src/model/RegisterFaceRequest.cc @@ -58,3 +58,14 @@ void RegisterFaceRequest::setUserId(const std::string& userId) setParameter("UserId", userId); } +std::string RegisterFaceRequest::getUserInfo()const +{ + return userInfo_; +} + +void RegisterFaceRequest::setUserInfo(const std::string& userInfo) +{ + userInfo_ = userInfo; + setParameter("UserInfo", userInfo); +} + diff --git a/linkface/src/model/SearchFaceRequest.cc b/linkface/src/model/SearchFaceRequest.cc new file mode 100644 index 000000000..508d530f4 --- /dev/null +++ b/linkface/src/model/SearchFaceRequest.cc @@ -0,0 +1,49 @@ +/* + * 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::LinkFace::Model::SearchFaceRequest; + +SearchFaceRequest::SearchFaceRequest() : + RpcServiceRequest("linkface", "2018-07-20", "SearchFace") +{} + +SearchFaceRequest::~SearchFaceRequest() +{} + +std::string SearchFaceRequest::getImage()const +{ + return image_; +} + +void SearchFaceRequest::setImage(const std::string& image) +{ + image_ = image; + setParameter("Image", image); +} + +std::string SearchFaceRequest::getGroupId()const +{ + return groupId_; +} + +void SearchFaceRequest::setGroupId(const std::string& groupId) +{ + groupId_ = groupId; + setParameter("GroupId", groupId); +} + diff --git a/linkface/src/model/SearchFaceResult.cc b/linkface/src/model/SearchFaceResult.cc new file mode 100644 index 000000000..e0ca6f33b --- /dev/null +++ b/linkface/src/model/SearchFaceResult.cc @@ -0,0 +1,82 @@ +/* + * 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::LinkFace; +using namespace AlibabaCloud::LinkFace::Model; + +SearchFaceResult::SearchFaceResult() : + ServiceResult() +{} + +SearchFaceResult::SearchFaceResult(const std::string &payload) : + ServiceResult() +{ + parse(payload); +} + +SearchFaceResult::~SearchFaceResult() +{} + +void SearchFaceResult::parse(const std::string &payload) +{ + Json::Reader reader; + Json::Value value; + reader.parse(payload, value); + + setRequestId(value["RequestId"].asString()); + auto dataNode = value["Data"]; + auto allTopUserItem = value["TopUserItem"]["TopUserItemItem"]; + for (auto value : allTopUserItem) + { + Data::TopUserItemItem topUserItemItemObject; + if(!value["UserId"].isNull()) + topUserItemItemObject.userId = value["UserId"].asString(); + if(!value["Score"].isNull()) + topUserItemItemObject.score = std::stof(value["Score"].asString()); + data_.topUserItem.push_back(topUserItemItemObject); + } + if(!value["Code"].isNull()) + code_ = std::stoi(value["Code"].asString()); + if(!value["Message"].isNull()) + message_ = value["Message"].asString(); + if(!value["Success"].isNull()) + success_ = value["Success"].asString() == "true"; + +} + +std::string SearchFaceResult::getMessage()const +{ + return message_; +} + +SearchFaceResult::Data SearchFaceResult::getData()const +{ + return data_; +} + +int SearchFaceResult::getCode()const +{ + return code_; +} + +bool SearchFaceResult::getSuccess()const +{ + return success_; +} + diff --git a/linkface/src/model/UpdateFaceRequest.cc b/linkface/src/model/UpdateFaceRequest.cc index ee154bfbd..3f7988fec 100644 --- a/linkface/src/model/UpdateFaceRequest.cc +++ b/linkface/src/model/UpdateFaceRequest.cc @@ -47,3 +47,14 @@ void UpdateFaceRequest::setUserId(const std::string& userId) setParameter("UserId", userId); } +std::string UpdateFaceRequest::getUserInfo()const +{ + return userInfo_; +} + +void UpdateFaceRequest::setUserInfo(const std::string& userInfo) +{ + userInfo_ = userInfo; + setParameter("UserInfo", userInfo); +} +