Browse Source

Add CompareFaceVerify API.

sdk-team 6 năm trước cách đây
mục cha
commit
23bea0505a

+ 3 - 0
CHANGELOG

@@ -1,3 +1,6 @@
+2020-04-28 Version: 1.36.384
+- Add CompareFaceVerify API.
+
 2020-04-27 Version: 1.36.383
 - Support watermark.
 

+ 1 - 1
VERSION

@@ -1 +1 @@
-1.36.383
+1.36.384

+ 4 - 0
cloudauth/CMakeLists.txt

@@ -21,6 +21,8 @@ set(cloudauth_public_header
 	include/alibabacloud/cloudauth/CloudauthExport.h )
 
 set(cloudauth_public_header_model 
+	include/alibabacloud/cloudauth/model/CompareFaceVerifyRequest.h
+	include/alibabacloud/cloudauth/model/CompareFaceVerifyResult.h
 	include/alibabacloud/cloudauth/model/CompareFacesRequest.h
 	include/alibabacloud/cloudauth/model/CompareFacesResult.h
 	include/alibabacloud/cloudauth/model/ContrastFaceVerifyRequest.h
@@ -84,6 +86,8 @@ set(cloudauth_public_header_model
 
 set(cloudauth_src 
 	src/CloudauthClient.cc
+	src/model/CompareFaceVerifyRequest.cc
+	src/model/CompareFaceVerifyResult.cc
 	src/model/CompareFacesRequest.cc
 	src/model/CompareFacesResult.cc
 	src/model/ContrastFaceVerifyRequest.cc

+ 8 - 0
cloudauth/include/alibabacloud/cloudauth/CloudauthClient.h

@@ -22,6 +22,8 @@
 #include <alibabacloud/core/EndpointProvider.h>
 #include <alibabacloud/core/RpcServiceClient.h>
 #include "CloudauthExport.h"
+#include "model/CompareFaceVerifyRequest.h"
+#include "model/CompareFaceVerifyResult.h"
 #include "model/CompareFacesRequest.h"
 #include "model/CompareFacesResult.h"
 #include "model/ContrastFaceVerifyRequest.h"
@@ -91,6 +93,9 @@ namespace AlibabaCloud
 		class ALIBABACLOUD_CLOUDAUTH_EXPORT CloudauthClient : public RpcServiceClient
 		{
 		public:
+			typedef Outcome<Error, Model::CompareFaceVerifyResult> CompareFaceVerifyOutcome;
+			typedef std::future<CompareFaceVerifyOutcome> CompareFaceVerifyOutcomeCallable;
+			typedef std::function<void(const CloudauthClient*, const Model::CompareFaceVerifyRequest&, const CompareFaceVerifyOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> CompareFaceVerifyAsyncHandler;
 			typedef Outcome<Error, Model::CompareFacesResult> CompareFacesOutcome;
 			typedef std::future<CompareFacesOutcome> CompareFacesOutcomeCallable;
 			typedef std::function<void(const CloudauthClient*, const Model::CompareFacesRequest&, const CompareFacesOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> CompareFacesAsyncHandler;
@@ -186,6 +191,9 @@ namespace AlibabaCloud
 			CloudauthClient(const std::shared_ptr<CredentialsProvider> &credentialsProvider, const ClientConfiguration &configuration);
 			CloudauthClient(const std::string &accessKeyId, const std::string &accessKeySecret, const ClientConfiguration &configuration);
 			~CloudauthClient();
+			CompareFaceVerifyOutcome compareFaceVerify(const Model::CompareFaceVerifyRequest &request)const;
+			void compareFaceVerifyAsync(const Model::CompareFaceVerifyRequest& request, const CompareFaceVerifyAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			CompareFaceVerifyOutcomeCallable compareFaceVerifyCallable(const Model::CompareFaceVerifyRequest& request) const;
 			CompareFacesOutcome compareFaces(const Model::CompareFacesRequest &request)const;
 			void compareFacesAsync(const Model::CompareFacesRequest& request, const CompareFacesAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			CompareFacesOutcomeCallable compareFacesCallable(const Model::CompareFacesRequest& request) const;

+ 84 - 0
cloudauth/include/alibabacloud/cloudauth/model/CompareFaceVerifyRequest.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_CLOUDAUTH_MODEL_COMPAREFACEVERIFYREQUEST_H_
+#define ALIBABACLOUD_CLOUDAUTH_MODEL_COMPAREFACEVERIFYREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/cloudauth/CloudauthExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Cloudauth
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CLOUDAUTH_EXPORT CompareFaceVerifyRequest : public RpcServiceRequest
+			{
+
+			public:
+				CompareFaceVerifyRequest();
+				~CompareFaceVerifyRequest();
+
+				std::string getTargetFaceContrastPictureUrl()const;
+				void setTargetFaceContrastPictureUrl(const std::string& targetFaceContrastPictureUrl);
+				std::string getProductCode()const;
+				void setProductCode(const std::string& productCode);
+				std::string getTargetCertifyId()const;
+				void setTargetCertifyId(const std::string& targetCertifyId);
+				std::string getSourceOssObjectName()const;
+				void setSourceOssObjectName(const std::string& sourceOssObjectName);
+				std::string getTargetFaceContrastPicture()const;
+				void setTargetFaceContrastPicture(const std::string& targetFaceContrastPicture);
+				std::string getTargetOssBucketName()const;
+				void setTargetOssBucketName(const std::string& targetOssBucketName);
+				std::string getSourceOssBucketName()const;
+				void setSourceOssBucketName(const std::string& sourceOssBucketName);
+				std::string getOuterOrderNo()const;
+				void setOuterOrderNo(const std::string& outerOrderNo);
+				std::string getTargetOssObjectName()const;
+				void setTargetOssObjectName(const std::string& targetOssObjectName);
+				std::string getSourceFaceContrastPicture()const;
+				void setSourceFaceContrastPicture(const std::string& sourceFaceContrastPicture);
+				long getSceneId()const;
+				void setSceneId(long sceneId);
+				std::string getSourceFaceContrastPictureUrl()const;
+				void setSourceFaceContrastPictureUrl(const std::string& sourceFaceContrastPictureUrl);
+				std::string getSourceCertifyId()const;
+				void setSourceCertifyId(const std::string& sourceCertifyId);
+
+            private:
+				std::string targetFaceContrastPictureUrl_;
+				std::string productCode_;
+				std::string targetCertifyId_;
+				std::string sourceOssObjectName_;
+				std::string targetFaceContrastPicture_;
+				std::string targetOssBucketName_;
+				std::string sourceOssBucketName_;
+				std::string outerOrderNo_;
+				std::string targetOssObjectName_;
+				std::string sourceFaceContrastPicture_;
+				long sceneId_;
+				std::string sourceFaceContrastPictureUrl_;
+				std::string sourceCertifyId_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CLOUDAUTH_MODEL_COMPAREFACEVERIFYREQUEST_H_

+ 60 - 0
cloudauth/include/alibabacloud/cloudauth/model/CompareFaceVerifyResult.h

@@ -0,0 +1,60 @@
+/*
+ * 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_CLOUDAUTH_MODEL_COMPAREFACEVERIFYRESULT_H_
+#define ALIBABACLOUD_CLOUDAUTH_MODEL_COMPAREFACEVERIFYRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/cloudauth/CloudauthExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Cloudauth
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CLOUDAUTH_EXPORT CompareFaceVerifyResult : public ServiceResult
+			{
+			public:
+				struct ResultObject
+				{
+					std::string passed;
+					float verifyScore;
+				};
+
+
+				CompareFaceVerifyResult();
+				explicit CompareFaceVerifyResult(const std::string &payload);
+				~CompareFaceVerifyResult();
+				ResultObject getResultObject()const;
+				std::string getMessage()const;
+				std::string getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				ResultObject resultObject_;
+				std::string message_;
+				std::string code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CLOUDAUTH_MODEL_COMPAREFACEVERIFYRESULT_H_

+ 3 - 0
cloudauth/include/alibabacloud/cloudauth/model/VerifyDeviceRequest.h

@@ -35,6 +35,8 @@ namespace AlibabaCloud
 				VerifyDeviceRequest();
 				~VerifyDeviceRequest();
 
+				std::string getExtInfo()const;
+				void setExtInfo(const std::string& extInfo);
 				std::string getCertifyData()const;
 				void setCertifyData(const std::string& certifyData);
 				std::string getAppVersion()const;
@@ -43,6 +45,7 @@ namespace AlibabaCloud
 				void setCertifyId(const std::string& certifyId);
 
             private:
+				std::string extInfo_;
 				std::string certifyData_;
 				std::string appVersion_;
 				std::string certifyId_;

+ 36 - 0
cloudauth/src/CloudauthClient.cc

@@ -51,6 +51,42 @@ CloudauthClient::CloudauthClient(const std::string & accessKeyId, const std::str
 CloudauthClient::~CloudauthClient()
 {}
 
+CloudauthClient::CompareFaceVerifyOutcome CloudauthClient::compareFaceVerify(const CompareFaceVerifyRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return CompareFaceVerifyOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return CompareFaceVerifyOutcome(CompareFaceVerifyResult(outcome.result()));
+	else
+		return CompareFaceVerifyOutcome(outcome.error());
+}
+
+void CloudauthClient::compareFaceVerifyAsync(const CompareFaceVerifyRequest& request, const CompareFaceVerifyAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, compareFaceVerify(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+CloudauthClient::CompareFaceVerifyOutcomeCallable CloudauthClient::compareFaceVerifyCallable(const CompareFaceVerifyRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<CompareFaceVerifyOutcome()>>(
+			[this, request]()
+			{
+			return this->compareFaceVerify(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 CloudauthClient::CompareFacesOutcome CloudauthClient::compareFaces(const CompareFacesRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();

+ 172 - 0
cloudauth/src/model/CompareFaceVerifyRequest.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 <alibabacloud/cloudauth/model/CompareFaceVerifyRequest.h>
+
+using AlibabaCloud::Cloudauth::Model::CompareFaceVerifyRequest;
+
+CompareFaceVerifyRequest::CompareFaceVerifyRequest() :
+	RpcServiceRequest("cloudauth", "2019-03-07", "CompareFaceVerify")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+CompareFaceVerifyRequest::~CompareFaceVerifyRequest()
+{}
+
+std::string CompareFaceVerifyRequest::getTargetFaceContrastPictureUrl()const
+{
+	return targetFaceContrastPictureUrl_;
+}
+
+void CompareFaceVerifyRequest::setTargetFaceContrastPictureUrl(const std::string& targetFaceContrastPictureUrl)
+{
+	targetFaceContrastPictureUrl_ = targetFaceContrastPictureUrl;
+	setBodyParameter("TargetFaceContrastPictureUrl", targetFaceContrastPictureUrl);
+}
+
+std::string CompareFaceVerifyRequest::getProductCode()const
+{
+	return productCode_;
+}
+
+void CompareFaceVerifyRequest::setProductCode(const std::string& productCode)
+{
+	productCode_ = productCode;
+	setBodyParameter("ProductCode", productCode);
+}
+
+std::string CompareFaceVerifyRequest::getTargetCertifyId()const
+{
+	return targetCertifyId_;
+}
+
+void CompareFaceVerifyRequest::setTargetCertifyId(const std::string& targetCertifyId)
+{
+	targetCertifyId_ = targetCertifyId;
+	setBodyParameter("TargetCertifyId", targetCertifyId);
+}
+
+std::string CompareFaceVerifyRequest::getSourceOssObjectName()const
+{
+	return sourceOssObjectName_;
+}
+
+void CompareFaceVerifyRequest::setSourceOssObjectName(const std::string& sourceOssObjectName)
+{
+	sourceOssObjectName_ = sourceOssObjectName;
+	setBodyParameter("SourceOssObjectName", sourceOssObjectName);
+}
+
+std::string CompareFaceVerifyRequest::getTargetFaceContrastPicture()const
+{
+	return targetFaceContrastPicture_;
+}
+
+void CompareFaceVerifyRequest::setTargetFaceContrastPicture(const std::string& targetFaceContrastPicture)
+{
+	targetFaceContrastPicture_ = targetFaceContrastPicture;
+	setBodyParameter("TargetFaceContrastPicture", targetFaceContrastPicture);
+}
+
+std::string CompareFaceVerifyRequest::getTargetOssBucketName()const
+{
+	return targetOssBucketName_;
+}
+
+void CompareFaceVerifyRequest::setTargetOssBucketName(const std::string& targetOssBucketName)
+{
+	targetOssBucketName_ = targetOssBucketName;
+	setBodyParameter("TargetOssBucketName", targetOssBucketName);
+}
+
+std::string CompareFaceVerifyRequest::getSourceOssBucketName()const
+{
+	return sourceOssBucketName_;
+}
+
+void CompareFaceVerifyRequest::setSourceOssBucketName(const std::string& sourceOssBucketName)
+{
+	sourceOssBucketName_ = sourceOssBucketName;
+	setBodyParameter("SourceOssBucketName", sourceOssBucketName);
+}
+
+std::string CompareFaceVerifyRequest::getOuterOrderNo()const
+{
+	return outerOrderNo_;
+}
+
+void CompareFaceVerifyRequest::setOuterOrderNo(const std::string& outerOrderNo)
+{
+	outerOrderNo_ = outerOrderNo;
+	setBodyParameter("OuterOrderNo", outerOrderNo);
+}
+
+std::string CompareFaceVerifyRequest::getTargetOssObjectName()const
+{
+	return targetOssObjectName_;
+}
+
+void CompareFaceVerifyRequest::setTargetOssObjectName(const std::string& targetOssObjectName)
+{
+	targetOssObjectName_ = targetOssObjectName;
+	setBodyParameter("TargetOssObjectName", targetOssObjectName);
+}
+
+std::string CompareFaceVerifyRequest::getSourceFaceContrastPicture()const
+{
+	return sourceFaceContrastPicture_;
+}
+
+void CompareFaceVerifyRequest::setSourceFaceContrastPicture(const std::string& sourceFaceContrastPicture)
+{
+	sourceFaceContrastPicture_ = sourceFaceContrastPicture;
+	setBodyParameter("SourceFaceContrastPicture", sourceFaceContrastPicture);
+}
+
+long CompareFaceVerifyRequest::getSceneId()const
+{
+	return sceneId_;
+}
+
+void CompareFaceVerifyRequest::setSceneId(long sceneId)
+{
+	sceneId_ = sceneId;
+	setBodyParameter("SceneId", std::to_string(sceneId));
+}
+
+std::string CompareFaceVerifyRequest::getSourceFaceContrastPictureUrl()const
+{
+	return sourceFaceContrastPictureUrl_;
+}
+
+void CompareFaceVerifyRequest::setSourceFaceContrastPictureUrl(const std::string& sourceFaceContrastPictureUrl)
+{
+	sourceFaceContrastPictureUrl_ = sourceFaceContrastPictureUrl;
+	setBodyParameter("SourceFaceContrastPictureUrl", sourceFaceContrastPictureUrl);
+}
+
+std::string CompareFaceVerifyRequest::getSourceCertifyId()const
+{
+	return sourceCertifyId_;
+}
+
+void CompareFaceVerifyRequest::setSourceCertifyId(const std::string& sourceCertifyId)
+{
+	sourceCertifyId_ = sourceCertifyId;
+	setBodyParameter("SourceCertifyId", sourceCertifyId);
+}
+

+ 68 - 0
cloudauth/src/model/CompareFaceVerifyResult.cc

@@ -0,0 +1,68 @@
+/*
+ * 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/cloudauth/model/CompareFaceVerifyResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Cloudauth;
+using namespace AlibabaCloud::Cloudauth::Model;
+
+CompareFaceVerifyResult::CompareFaceVerifyResult() :
+	ServiceResult()
+{}
+
+CompareFaceVerifyResult::CompareFaceVerifyResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+CompareFaceVerifyResult::~CompareFaceVerifyResult()
+{}
+
+void CompareFaceVerifyResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto resultObjectNode = value["ResultObject"];
+	if(!resultObjectNode["Passed"].isNull())
+		resultObject_.passed = resultObjectNode["Passed"].asString();
+	if(!resultObjectNode["VerifyScore"].isNull())
+		resultObject_.verifyScore = std::stof(resultObjectNode["VerifyScore"].asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+
+}
+
+CompareFaceVerifyResult::ResultObject CompareFaceVerifyResult::getResultObject()const
+{
+	return resultObject_;
+}
+
+std::string CompareFaceVerifyResult::getMessage()const
+{
+	return message_;
+}
+
+std::string CompareFaceVerifyResult::getCode()const
+{
+	return code_;
+}
+

+ 11 - 0
cloudauth/src/model/VerifyDeviceRequest.cc

@@ -27,6 +27,17 @@ VerifyDeviceRequest::VerifyDeviceRequest() :
 VerifyDeviceRequest::~VerifyDeviceRequest()
 {}
 
+std::string VerifyDeviceRequest::getExtInfo()const
+{
+	return extInfo_;
+}
+
+void VerifyDeviceRequest::setExtInfo(const std::string& extInfo)
+{
+	extInfo_ = extInfo;
+	setBodyParameter("ExtInfo", extInfo);
+}
+
 std::string VerifyDeviceRequest::getCertifyData()const
 {
 	return certifyData_;