sdk-team 6 лет назад
Родитель
Сommit
6c1dbc8b06

+ 3 - 0
CHANGELOG

@@ -1,3 +1,6 @@
+2020-05-12 Version: 1.36.404
+- Supported DRM.
+
 2020-05-11 Version: 1.36.403
 - Add new openapi ApplyNodes.
 

+ 1 - 1
VERSION

@@ -1 +1 @@
-1.36.403
+1.36.404

+ 12 - 0
imm/CMakeLists.txt

@@ -97,6 +97,10 @@ set(imm_public_header_model
 	include/alibabacloud/imm/model/FindImagesByTagNamesResult.h
 	include/alibabacloud/imm/model/FindSimilarFacesRequest.h
 	include/alibabacloud/imm/model/FindSimilarFacesResult.h
+	include/alibabacloud/imm/model/GetContentKeyRequest.h
+	include/alibabacloud/imm/model/GetContentKeyResult.h
+	include/alibabacloud/imm/model/GetDRMLicenseRequest.h
+	include/alibabacloud/imm/model/GetDRMLicenseResult.h
 	include/alibabacloud/imm/model/GetDocIndexRequest.h
 	include/alibabacloud/imm/model/GetDocIndexResult.h
 	include/alibabacloud/imm/model/GetDocIndexTaskRequest.h
@@ -157,6 +161,8 @@ set(imm_public_header_model
 	include/alibabacloud/imm/model/RefreshOfficePreviewTokenResult.h
 	include/alibabacloud/imm/model/SearchDocIndexRequest.h
 	include/alibabacloud/imm/model/SearchDocIndexResult.h
+	include/alibabacloud/imm/model/StopStreamAnalyseTaskRequest.h
+	include/alibabacloud/imm/model/StopStreamAnalyseTaskResult.h
 	include/alibabacloud/imm/model/UpdateDocIndexMetaRequest.h
 	include/alibabacloud/imm/model/UpdateDocIndexMetaResult.h
 	include/alibabacloud/imm/model/UpdateFaceGroupRequest.h
@@ -246,6 +252,10 @@ set(imm_src
 	src/model/FindImagesByTagNamesResult.cc
 	src/model/FindSimilarFacesRequest.cc
 	src/model/FindSimilarFacesResult.cc
+	src/model/GetContentKeyRequest.cc
+	src/model/GetContentKeyResult.cc
+	src/model/GetDRMLicenseRequest.cc
+	src/model/GetDRMLicenseResult.cc
 	src/model/GetDocIndexRequest.cc
 	src/model/GetDocIndexResult.cc
 	src/model/GetDocIndexTaskRequest.cc
@@ -306,6 +316,8 @@ set(imm_src
 	src/model/RefreshOfficePreviewTokenResult.cc
 	src/model/SearchDocIndexRequest.cc
 	src/model/SearchDocIndexResult.cc
+	src/model/StopStreamAnalyseTaskRequest.cc
+	src/model/StopStreamAnalyseTaskResult.cc
 	src/model/UpdateDocIndexMetaRequest.cc
 	src/model/UpdateDocIndexMetaResult.cc
 	src/model/UpdateFaceGroupRequest.cc

+ 24 - 0
imm/include/alibabacloud/imm/ImmClient.h

@@ -98,6 +98,10 @@
 #include "model/FindImagesByTagNamesResult.h"
 #include "model/FindSimilarFacesRequest.h"
 #include "model/FindSimilarFacesResult.h"
+#include "model/GetContentKeyRequest.h"
+#include "model/GetContentKeyResult.h"
+#include "model/GetDRMLicenseRequest.h"
+#include "model/GetDRMLicenseResult.h"
 #include "model/GetDocIndexRequest.h"
 #include "model/GetDocIndexResult.h"
 #include "model/GetDocIndexTaskRequest.h"
@@ -158,6 +162,8 @@
 #include "model/RefreshOfficePreviewTokenResult.h"
 #include "model/SearchDocIndexRequest.h"
 #include "model/SearchDocIndexResult.h"
+#include "model/StopStreamAnalyseTaskRequest.h"
+#include "model/StopStreamAnalyseTaskResult.h"
 #include "model/UpdateDocIndexMetaRequest.h"
 #include "model/UpdateDocIndexMetaResult.h"
 #include "model/UpdateFaceGroupRequest.h"
@@ -291,6 +297,12 @@ namespace AlibabaCloud
 			typedef Outcome<Error, Model::FindSimilarFacesResult> FindSimilarFacesOutcome;
 			typedef std::future<FindSimilarFacesOutcome> FindSimilarFacesOutcomeCallable;
 			typedef std::function<void(const ImmClient*, const Model::FindSimilarFacesRequest&, const FindSimilarFacesOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> FindSimilarFacesAsyncHandler;
+			typedef Outcome<Error, Model::GetContentKeyResult> GetContentKeyOutcome;
+			typedef std::future<GetContentKeyOutcome> GetContentKeyOutcomeCallable;
+			typedef std::function<void(const ImmClient*, const Model::GetContentKeyRequest&, const GetContentKeyOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetContentKeyAsyncHandler;
+			typedef Outcome<Error, Model::GetDRMLicenseResult> GetDRMLicenseOutcome;
+			typedef std::future<GetDRMLicenseOutcome> GetDRMLicenseOutcomeCallable;
+			typedef std::function<void(const ImmClient*, const Model::GetDRMLicenseRequest&, const GetDRMLicenseOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetDRMLicenseAsyncHandler;
 			typedef Outcome<Error, Model::GetDocIndexResult> GetDocIndexOutcome;
 			typedef std::future<GetDocIndexOutcome> GetDocIndexOutcomeCallable;
 			typedef std::function<void(const ImmClient*, const Model::GetDocIndexRequest&, const GetDocIndexOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetDocIndexAsyncHandler;
@@ -381,6 +393,9 @@ namespace AlibabaCloud
 			typedef Outcome<Error, Model::SearchDocIndexResult> SearchDocIndexOutcome;
 			typedef std::future<SearchDocIndexOutcome> SearchDocIndexOutcomeCallable;
 			typedef std::function<void(const ImmClient*, const Model::SearchDocIndexRequest&, const SearchDocIndexOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> SearchDocIndexAsyncHandler;
+			typedef Outcome<Error, Model::StopStreamAnalyseTaskResult> StopStreamAnalyseTaskOutcome;
+			typedef std::future<StopStreamAnalyseTaskOutcome> StopStreamAnalyseTaskOutcomeCallable;
+			typedef std::function<void(const ImmClient*, const Model::StopStreamAnalyseTaskRequest&, const StopStreamAnalyseTaskOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> StopStreamAnalyseTaskAsyncHandler;
 			typedef Outcome<Error, Model::UpdateDocIndexMetaResult> UpdateDocIndexMetaOutcome;
 			typedef std::future<UpdateDocIndexMetaOutcome> UpdateDocIndexMetaOutcomeCallable;
 			typedef std::function<void(const ImmClient*, const Model::UpdateDocIndexMetaRequest&, const UpdateDocIndexMetaOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> UpdateDocIndexMetaAsyncHandler;
@@ -515,6 +530,12 @@ namespace AlibabaCloud
 			FindSimilarFacesOutcome findSimilarFaces(const Model::FindSimilarFacesRequest &request)const;
 			void findSimilarFacesAsync(const Model::FindSimilarFacesRequest& request, const FindSimilarFacesAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			FindSimilarFacesOutcomeCallable findSimilarFacesCallable(const Model::FindSimilarFacesRequest& request) const;
+			GetContentKeyOutcome getContentKey(const Model::GetContentKeyRequest &request)const;
+			void getContentKeyAsync(const Model::GetContentKeyRequest& request, const GetContentKeyAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetContentKeyOutcomeCallable getContentKeyCallable(const Model::GetContentKeyRequest& request) const;
+			GetDRMLicenseOutcome getDRMLicense(const Model::GetDRMLicenseRequest &request)const;
+			void getDRMLicenseAsync(const Model::GetDRMLicenseRequest& request, const GetDRMLicenseAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetDRMLicenseOutcomeCallable getDRMLicenseCallable(const Model::GetDRMLicenseRequest& request) const;
 			GetDocIndexOutcome getDocIndex(const Model::GetDocIndexRequest &request)const;
 			void getDocIndexAsync(const Model::GetDocIndexRequest& request, const GetDocIndexAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			GetDocIndexOutcomeCallable getDocIndexCallable(const Model::GetDocIndexRequest& request) const;
@@ -605,6 +626,9 @@ namespace AlibabaCloud
 			SearchDocIndexOutcome searchDocIndex(const Model::SearchDocIndexRequest &request)const;
 			void searchDocIndexAsync(const Model::SearchDocIndexRequest& request, const SearchDocIndexAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			SearchDocIndexOutcomeCallable searchDocIndexCallable(const Model::SearchDocIndexRequest& request) const;
+			StopStreamAnalyseTaskOutcome stopStreamAnalyseTask(const Model::StopStreamAnalyseTaskRequest &request)const;
+			void stopStreamAnalyseTaskAsync(const Model::StopStreamAnalyseTaskRequest& request, const StopStreamAnalyseTaskAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			StopStreamAnalyseTaskOutcomeCallable stopStreamAnalyseTaskCallable(const Model::StopStreamAnalyseTaskRequest& request) const;
 			UpdateDocIndexMetaOutcome updateDocIndexMeta(const Model::UpdateDocIndexMetaRequest &request)const;
 			void updateDocIndexMetaAsync(const Model::UpdateDocIndexMetaRequest& request, const UpdateDocIndexMetaAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			UpdateDocIndexMetaOutcomeCallable updateDocIndexMetaCallable(const Model::UpdateDocIndexMetaRequest& request) const;

+ 60 - 0
imm/include/alibabacloud/imm/model/GetContentKeyRequest.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_IMM_MODEL_GETCONTENTKEYREQUEST_H_
+#define ALIBABACLOUD_IMM_MODEL_GETCONTENTKEYREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/imm/ImmExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Imm
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_IMM_EXPORT GetContentKeyRequest : public RpcServiceRequest
+			{
+
+			public:
+				GetContentKeyRequest();
+				~GetContentKeyRequest();
+
+				std::string getProject()const;
+				void setProject(const std::string& project);
+				std::string getAccessKeyId()const;
+				void setAccessKeyId(const std::string& accessKeyId);
+				std::string getVersionId()const;
+				void setVersionId(const std::string& versionId);
+				std::string getDRMServerId()const;
+				void setDRMServerId(const std::string& dRMServerId);
+				std::string getKeyIds()const;
+				void setKeyIds(const std::string& keyIds);
+
+            private:
+				std::string project_;
+				std::string accessKeyId_;
+				std::string versionId_;
+				std::string dRMServerId_;
+				std::string keyIds_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_IMM_MODEL_GETCONTENTKEYREQUEST_H_

+ 53 - 0
imm/include/alibabacloud/imm/model/GetContentKeyResult.h

@@ -0,0 +1,53 @@
+/*
+ * 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_IMM_MODEL_GETCONTENTKEYRESULT_H_
+#define ALIBABACLOUD_IMM_MODEL_GETCONTENTKEYRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/imm/ImmExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Imm
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_IMM_EXPORT GetContentKeyResult : public ServiceResult
+			{
+			public:
+
+
+				GetContentKeyResult();
+				explicit GetContentKeyResult(const std::string &payload);
+				~GetContentKeyResult();
+				std::string getVersionId()const;
+				std::string getKeyInfos()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string versionId_;
+				std::string keyInfos_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_IMM_MODEL_GETCONTENTKEYRESULT_H_

+ 57 - 0
imm/include/alibabacloud/imm/model/GetDRMLicenseRequest.h

@@ -0,0 +1,57 @@
+/*
+ * 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_IMM_MODEL_GETDRMLICENSEREQUEST_H_
+#define ALIBABACLOUD_IMM_MODEL_GETDRMLICENSEREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/imm/ImmExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Imm
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_IMM_EXPORT GetDRMLicenseRequest : public RpcServiceRequest
+			{
+
+			public:
+				GetDRMLicenseRequest();
+				~GetDRMLicenseRequest();
+
+				std::string getProject()const;
+				void setProject(const std::string& project);
+				std::string getAccessKeyId()const;
+				void setAccessKeyId(const std::string& accessKeyId);
+				std::string getDRMType()const;
+				void setDRMType(const std::string& dRMType);
+				std::string getDRMLicense()const;
+				void setDRMLicense(const std::string& dRMLicense);
+
+            private:
+				std::string project_;
+				std::string accessKeyId_;
+				std::string dRMType_;
+				std::string dRMLicense_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_IMM_MODEL_GETDRMLICENSEREQUEST_H_

+ 51 - 0
imm/include/alibabacloud/imm/model/GetDRMLicenseResult.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_IMM_MODEL_GETDRMLICENSERESULT_H_
+#define ALIBABACLOUD_IMM_MODEL_GETDRMLICENSERESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/imm/ImmExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Imm
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_IMM_EXPORT GetDRMLicenseResult : public ServiceResult
+			{
+			public:
+
+
+				GetDRMLicenseResult();
+				explicit GetDRMLicenseResult(const std::string &payload);
+				~GetDRMLicenseResult();
+				std::string getDRMData()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string dRMData_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_IMM_MODEL_GETDRMLICENSERESULT_H_

+ 54 - 0
imm/include/alibabacloud/imm/model/StopStreamAnalyseTaskRequest.h

@@ -0,0 +1,54 @@
+/*
+ * 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_IMM_MODEL_STOPSTREAMANALYSETASKREQUEST_H_
+#define ALIBABACLOUD_IMM_MODEL_STOPSTREAMANALYSETASKREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/imm/ImmExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Imm
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_IMM_EXPORT StopStreamAnalyseTaskRequest : public RpcServiceRequest
+			{
+
+			public:
+				StopStreamAnalyseTaskRequest();
+				~StopStreamAnalyseTaskRequest();
+
+				std::string getProject()const;
+				void setProject(const std::string& project);
+				std::string getAccessKeyId()const;
+				void setAccessKeyId(const std::string& accessKeyId);
+				std::string getTaskId()const;
+				void setTaskId(const std::string& taskId);
+
+            private:
+				std::string project_;
+				std::string accessKeyId_;
+				std::string taskId_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_IMM_MODEL_STOPSTREAMANALYSETASKREQUEST_H_

+ 51 - 0
imm/include/alibabacloud/imm/model/StopStreamAnalyseTaskResult.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_IMM_MODEL_STOPSTREAMANALYSETASKRESULT_H_
+#define ALIBABACLOUD_IMM_MODEL_STOPSTREAMANALYSETASKRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/imm/ImmExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Imm
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_IMM_EXPORT StopStreamAnalyseTaskResult : public ServiceResult
+			{
+			public:
+
+
+				StopStreamAnalyseTaskResult();
+				explicit StopStreamAnalyseTaskResult(const std::string &payload);
+				~StopStreamAnalyseTaskResult();
+				std::string getTaskId()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string taskId_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_IMM_MODEL_STOPSTREAMANALYSETASKRESULT_H_

+ 108 - 0
imm/src/ImmClient.cc

@@ -1419,6 +1419,78 @@ ImmClient::FindSimilarFacesOutcomeCallable ImmClient::findSimilarFacesCallable(c
 	return task->get_future();
 }
 
+ImmClient::GetContentKeyOutcome ImmClient::getContentKey(const GetContentKeyRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return GetContentKeyOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return GetContentKeyOutcome(GetContentKeyResult(outcome.result()));
+	else
+		return GetContentKeyOutcome(outcome.error());
+}
+
+void ImmClient::getContentKeyAsync(const GetContentKeyRequest& request, const GetContentKeyAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, getContentKey(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+ImmClient::GetContentKeyOutcomeCallable ImmClient::getContentKeyCallable(const GetContentKeyRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<GetContentKeyOutcome()>>(
+			[this, request]()
+			{
+			return this->getContentKey(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
+ImmClient::GetDRMLicenseOutcome ImmClient::getDRMLicense(const GetDRMLicenseRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return GetDRMLicenseOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return GetDRMLicenseOutcome(GetDRMLicenseResult(outcome.result()));
+	else
+		return GetDRMLicenseOutcome(outcome.error());
+}
+
+void ImmClient::getDRMLicenseAsync(const GetDRMLicenseRequest& request, const GetDRMLicenseAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, getDRMLicense(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+ImmClient::GetDRMLicenseOutcomeCallable ImmClient::getDRMLicenseCallable(const GetDRMLicenseRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<GetDRMLicenseOutcome()>>(
+			[this, request]()
+			{
+			return this->getDRMLicense(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 ImmClient::GetDocIndexOutcome ImmClient::getDocIndex(const GetDocIndexRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -2499,6 +2571,42 @@ ImmClient::SearchDocIndexOutcomeCallable ImmClient::searchDocIndexCallable(const
 	return task->get_future();
 }
 
+ImmClient::StopStreamAnalyseTaskOutcome ImmClient::stopStreamAnalyseTask(const StopStreamAnalyseTaskRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return StopStreamAnalyseTaskOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return StopStreamAnalyseTaskOutcome(StopStreamAnalyseTaskResult(outcome.result()));
+	else
+		return StopStreamAnalyseTaskOutcome(outcome.error());
+}
+
+void ImmClient::stopStreamAnalyseTaskAsync(const StopStreamAnalyseTaskRequest& request, const StopStreamAnalyseTaskAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, stopStreamAnalyseTask(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+ImmClient::StopStreamAnalyseTaskOutcomeCallable ImmClient::stopStreamAnalyseTaskCallable(const StopStreamAnalyseTaskRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<StopStreamAnalyseTaskOutcome()>>(
+			[this, request]()
+			{
+			return this->stopStreamAnalyseTask(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 ImmClient::UpdateDocIndexMetaOutcome ImmClient::updateDocIndexMeta(const UpdateDocIndexMetaRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();

+ 84 - 0
imm/src/model/GetContentKeyRequest.cc

@@ -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.
+ */
+
+#include <alibabacloud/imm/model/GetContentKeyRequest.h>
+
+using AlibabaCloud::Imm::Model::GetContentKeyRequest;
+
+GetContentKeyRequest::GetContentKeyRequest() :
+	RpcServiceRequest("imm", "2017-09-06", "GetContentKey")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+GetContentKeyRequest::~GetContentKeyRequest()
+{}
+
+std::string GetContentKeyRequest::getProject()const
+{
+	return project_;
+}
+
+void GetContentKeyRequest::setProject(const std::string& project)
+{
+	project_ = project;
+	setParameter("Project", project);
+}
+
+std::string GetContentKeyRequest::getAccessKeyId()const
+{
+	return accessKeyId_;
+}
+
+void GetContentKeyRequest::setAccessKeyId(const std::string& accessKeyId)
+{
+	accessKeyId_ = accessKeyId;
+	setParameter("AccessKeyId", accessKeyId);
+}
+
+std::string GetContentKeyRequest::getVersionId()const
+{
+	return versionId_;
+}
+
+void GetContentKeyRequest::setVersionId(const std::string& versionId)
+{
+	versionId_ = versionId;
+	setParameter("VersionId", versionId);
+}
+
+std::string GetContentKeyRequest::getDRMServerId()const
+{
+	return dRMServerId_;
+}
+
+void GetContentKeyRequest::setDRMServerId(const std::string& dRMServerId)
+{
+	dRMServerId_ = dRMServerId;
+	setParameter("DRMServerId", dRMServerId);
+}
+
+std::string GetContentKeyRequest::getKeyIds()const
+{
+	return keyIds_;
+}
+
+void GetContentKeyRequest::setKeyIds(const std::string& keyIds)
+{
+	keyIds_ = keyIds;
+	setParameter("KeyIds", keyIds);
+}
+

+ 58 - 0
imm/src/model/GetContentKeyResult.cc

@@ -0,0 +1,58 @@
+/*
+ * 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/imm/model/GetContentKeyResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Imm;
+using namespace AlibabaCloud::Imm::Model;
+
+GetContentKeyResult::GetContentKeyResult() :
+	ServiceResult()
+{}
+
+GetContentKeyResult::GetContentKeyResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+GetContentKeyResult::~GetContentKeyResult()
+{}
+
+void GetContentKeyResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	if(!value["VersionId"].isNull())
+		versionId_ = value["VersionId"].asString();
+	if(!value["KeyInfos"].isNull())
+		keyInfos_ = value["KeyInfos"].asString();
+
+}
+
+std::string GetContentKeyResult::getVersionId()const
+{
+	return versionId_;
+}
+
+std::string GetContentKeyResult::getKeyInfos()const
+{
+	return keyInfos_;
+}
+

+ 73 - 0
imm/src/model/GetDRMLicenseRequest.cc

@@ -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/imm/model/GetDRMLicenseRequest.h>
+
+using AlibabaCloud::Imm::Model::GetDRMLicenseRequest;
+
+GetDRMLicenseRequest::GetDRMLicenseRequest() :
+	RpcServiceRequest("imm", "2017-09-06", "GetDRMLicense")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+GetDRMLicenseRequest::~GetDRMLicenseRequest()
+{}
+
+std::string GetDRMLicenseRequest::getProject()const
+{
+	return project_;
+}
+
+void GetDRMLicenseRequest::setProject(const std::string& project)
+{
+	project_ = project;
+	setParameter("Project", project);
+}
+
+std::string GetDRMLicenseRequest::getAccessKeyId()const
+{
+	return accessKeyId_;
+}
+
+void GetDRMLicenseRequest::setAccessKeyId(const std::string& accessKeyId)
+{
+	accessKeyId_ = accessKeyId;
+	setParameter("AccessKeyId", accessKeyId);
+}
+
+std::string GetDRMLicenseRequest::getDRMType()const
+{
+	return dRMType_;
+}
+
+void GetDRMLicenseRequest::setDRMType(const std::string& dRMType)
+{
+	dRMType_ = dRMType;
+	setParameter("DRMType", dRMType);
+}
+
+std::string GetDRMLicenseRequest::getDRMLicense()const
+{
+	return dRMLicense_;
+}
+
+void GetDRMLicenseRequest::setDRMLicense(const std::string& dRMLicense)
+{
+	dRMLicense_ = dRMLicense;
+	setParameter("DRMLicense", dRMLicense);
+}
+

+ 51 - 0
imm/src/model/GetDRMLicenseResult.cc

@@ -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.
+ */
+
+#include <alibabacloud/imm/model/GetDRMLicenseResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Imm;
+using namespace AlibabaCloud::Imm::Model;
+
+GetDRMLicenseResult::GetDRMLicenseResult() :
+	ServiceResult()
+{}
+
+GetDRMLicenseResult::GetDRMLicenseResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+GetDRMLicenseResult::~GetDRMLicenseResult()
+{}
+
+void GetDRMLicenseResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	if(!value["DRMData"].isNull())
+		dRMData_ = value["DRMData"].asString();
+
+}
+
+std::string GetDRMLicenseResult::getDRMData()const
+{
+	return dRMData_;
+}
+

+ 62 - 0
imm/src/model/StopStreamAnalyseTaskRequest.cc

@@ -0,0 +1,62 @@
+/*
+ * 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/imm/model/StopStreamAnalyseTaskRequest.h>
+
+using AlibabaCloud::Imm::Model::StopStreamAnalyseTaskRequest;
+
+StopStreamAnalyseTaskRequest::StopStreamAnalyseTaskRequest() :
+	RpcServiceRequest("imm", "2017-09-06", "StopStreamAnalyseTask")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+StopStreamAnalyseTaskRequest::~StopStreamAnalyseTaskRequest()
+{}
+
+std::string StopStreamAnalyseTaskRequest::getProject()const
+{
+	return project_;
+}
+
+void StopStreamAnalyseTaskRequest::setProject(const std::string& project)
+{
+	project_ = project;
+	setParameter("Project", project);
+}
+
+std::string StopStreamAnalyseTaskRequest::getAccessKeyId()const
+{
+	return accessKeyId_;
+}
+
+void StopStreamAnalyseTaskRequest::setAccessKeyId(const std::string& accessKeyId)
+{
+	accessKeyId_ = accessKeyId;
+	setParameter("AccessKeyId", accessKeyId);
+}
+
+std::string StopStreamAnalyseTaskRequest::getTaskId()const
+{
+	return taskId_;
+}
+
+void StopStreamAnalyseTaskRequest::setTaskId(const std::string& taskId)
+{
+	taskId_ = taskId;
+	setParameter("TaskId", taskId);
+}
+

+ 51 - 0
imm/src/model/StopStreamAnalyseTaskResult.cc

@@ -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.
+ */
+
+#include <alibabacloud/imm/model/StopStreamAnalyseTaskResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Imm;
+using namespace AlibabaCloud::Imm::Model;
+
+StopStreamAnalyseTaskResult::StopStreamAnalyseTaskResult() :
+	ServiceResult()
+{}
+
+StopStreamAnalyseTaskResult::StopStreamAnalyseTaskResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+StopStreamAnalyseTaskResult::~StopStreamAnalyseTaskResult()
+{}
+
+void StopStreamAnalyseTaskResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	if(!value["TaskId"].isNull())
+		taskId_ = value["TaskId"].asString();
+
+}
+
+std::string StopStreamAnalyseTaskResult::getTaskId()const
+{
+	return taskId_;
+}
+