Explorar o código

ChatApp third version.

sdk-team %!s(int64=6) %!d(string=hai) anos
pai
achega
05785cf5fd

+ 4 - 0
CHANGELOG

@@ -1,3 +1,7 @@
+2020-10-12 Version: patch
+- ChatApp third version.
+- Add contack check api.
+
 2020-10-09 Version: patch
 - Update Scdn API.
 

+ 4 - 0
cams/CMakeLists.txt

@@ -21,11 +21,15 @@ set(cams_public_header
 	include/alibabacloud/cams/CamsExport.h )
 
 set(cams_public_header_model 
+	include/alibabacloud/cams/model/CheckContactsRequest.h
+	include/alibabacloud/cams/model/CheckContactsResult.h
 	include/alibabacloud/cams/model/SendMessageRequest.h
 	include/alibabacloud/cams/model/SendMessageResult.h )
 
 set(cams_src 
 	src/CamsClient.cc
+	src/model/CheckContactsRequest.cc
+	src/model/CheckContactsResult.cc
 	src/model/SendMessageRequest.cc
 	src/model/SendMessageResult.cc )
 

+ 8 - 0
cams/include/alibabacloud/cams/CamsClient.h

@@ -22,6 +22,8 @@
 #include <alibabacloud/core/EndpointProvider.h>
 #include <alibabacloud/core/RpcServiceClient.h>
 #include "CamsExport.h"
+#include "model/CheckContactsRequest.h"
+#include "model/CheckContactsResult.h"
 #include "model/SendMessageRequest.h"
 #include "model/SendMessageResult.h"
 
@@ -33,6 +35,9 @@ namespace AlibabaCloud
 		class ALIBABACLOUD_CAMS_EXPORT CamsClient : public RpcServiceClient
 		{
 		public:
+			typedef Outcome<Error, Model::CheckContactsResult> CheckContactsOutcome;
+			typedef std::future<CheckContactsOutcome> CheckContactsOutcomeCallable;
+			typedef std::function<void(const CamsClient*, const Model::CheckContactsRequest&, const CheckContactsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> CheckContactsAsyncHandler;
 			typedef Outcome<Error, Model::SendMessageResult> SendMessageOutcome;
 			typedef std::future<SendMessageOutcome> SendMessageOutcomeCallable;
 			typedef std::function<void(const CamsClient*, const Model::SendMessageRequest&, const SendMessageOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> SendMessageAsyncHandler;
@@ -41,6 +46,9 @@ namespace AlibabaCloud
 			CamsClient(const std::shared_ptr<CredentialsProvider> &credentialsProvider, const ClientConfiguration &configuration);
 			CamsClient(const std::string &accessKeyId, const std::string &accessKeySecret, const ClientConfiguration &configuration);
 			~CamsClient();
+			CheckContactsOutcome checkContacts(const Model::CheckContactsRequest &request)const;
+			void checkContactsAsync(const Model::CheckContactsRequest& request, const CheckContactsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			CheckContactsOutcomeCallable checkContactsCallable(const Model::CheckContactsRequest& request) const;
 			SendMessageOutcome sendMessage(const Model::SendMessageRequest &request)const;
 			void sendMessageAsync(const Model::SendMessageRequest& request, const SendMessageAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			SendMessageOutcomeCallable sendMessageCallable(const Model::SendMessageRequest& request) const;

+ 66 - 0
cams/include/alibabacloud/cams/model/CheckContactsRequest.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_CAMS_MODEL_CHECKCONTACTSREQUEST_H_
+#define ALIBABACLOUD_CAMS_MODEL_CHECKCONTACTSREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/cams/CamsExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Cams
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CAMS_EXPORT CheckContactsRequest : public RpcServiceRequest
+			{
+
+			public:
+				CheckContactsRequest();
+				~CheckContactsRequest();
+
+				long getResourceOwnerId()const;
+				void setResourceOwnerId(long resourceOwnerId);
+				std::string getAccessKeyId()const;
+				void setAccessKeyId(const std::string& accessKeyId);
+				std::string getChannelType()const;
+				void setChannelType(const std::string& channelType);
+				std::string getFrom()const;
+				void setFrom(const std::string& from);
+				std::string getResourceOwnerAccount()const;
+				void setResourceOwnerAccount(const std::string& resourceOwnerAccount);
+				long getOwnerId()const;
+				void setOwnerId(long ownerId);
+				std::string getContacts()const;
+				void setContacts(const std::string& contacts);
+
+            private:
+				long resourceOwnerId_;
+				std::string accessKeyId_;
+				std::string channelType_;
+				std::string from_;
+				std::string resourceOwnerAccount_;
+				long ownerId_;
+				std::string contacts_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CAMS_MODEL_CHECKCONTACTSREQUEST_H_

+ 60 - 0
cams/include/alibabacloud/cams/model/CheckContactsResult.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_CAMS_MODEL_CHECKCONTACTSRESULT_H_
+#define ALIBABACLOUD_CAMS_MODEL_CHECKCONTACTSRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/cams/CamsExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Cams
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CAMS_EXPORT CheckContactsResult : public ServiceResult
+			{
+			public:
+				struct ContactStatus
+				{
+					std::string status;
+					std::string phoneNumber;
+				};
+
+
+				CheckContactsResult();
+				explicit CheckContactsResult(const std::string &payload);
+				~CheckContactsResult();
+				std::vector<ContactStatus> getContacts()const;
+				std::string getResultMessage()const;
+				std::string getResultCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::vector<ContactStatus> contacts_;
+				std::string resultMessage_;
+				std::string resultCode_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CAMS_MODEL_CHECKCONTACTSRESULT_H_

+ 6 - 6
cams/include/alibabacloud/cams/model/SendMessageRequest.h

@@ -37,6 +37,8 @@ namespace AlibabaCloud
 
 				long getResourceOwnerId()const;
 				void setResourceOwnerId(long resourceOwnerId);
+				std::string getMessageType()const;
+				void setMessageType(const std::string& messageType);
 				std::string getTemplateBodyParams()const;
 				void setTemplateBodyParams(const std::string& templateBodyParams);
 				std::string getLink()const;
@@ -45,14 +47,14 @@ namespace AlibabaCloud
 				void setCaption(const std::string& caption);
 				std::string getType()const;
 				void setType(const std::string& type);
-				std::string getBody()const;
-				void setBody(const std::string& body);
 				std::string getAccessKeyId()const;
 				void setAccessKeyId(const std::string& accessKeyId);
 				std::string getChannelType()const;
 				void setChannelType(const std::string& channelType);
 				std::string getFrom()const;
 				void setFrom(const std::string& from);
+				std::string getText()const;
+				void setText(const std::string& text);
 				std::string getResourceOwnerAccount()const;
 				void setResourceOwnerAccount(const std::string& resourceOwnerAccount);
 				long getOwnerId()const;
@@ -61,24 +63,22 @@ namespace AlibabaCloud
 				void setTo(const std::string& to);
 				std::string getTemplateCode()const;
 				void setTemplateCode(const std::string& templateCode);
-				std::string getMediaType()const;
-				void setMediaType(const std::string& mediaType);
 
             private:
 				long resourceOwnerId_;
+				std::string messageType_;
 				std::string templateBodyParams_;
 				std::string link_;
 				std::string caption_;
 				std::string type_;
-				std::string body_;
 				std::string accessKeyId_;
 				std::string channelType_;
 				std::string from_;
+				std::string text_;
 				std::string resourceOwnerAccount_;
 				long ownerId_;
 				std::string to_;
 				std::string templateCode_;
-				std::string mediaType_;
 
 			};
 		}

+ 36 - 0
cams/src/CamsClient.cc

@@ -51,6 +51,42 @@ CamsClient::CamsClient(const std::string & accessKeyId, const std::string & acce
 CamsClient::~CamsClient()
 {}
 
+CamsClient::CheckContactsOutcome CamsClient::checkContacts(const CheckContactsRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return CheckContactsOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return CheckContactsOutcome(CheckContactsResult(outcome.result()));
+	else
+		return CheckContactsOutcome(outcome.error());
+}
+
+void CamsClient::checkContactsAsync(const CheckContactsRequest& request, const CheckContactsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, checkContacts(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+CamsClient::CheckContactsOutcomeCallable CamsClient::checkContactsCallable(const CheckContactsRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<CheckContactsOutcome()>>(
+			[this, request]()
+			{
+			return this->checkContacts(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 CamsClient::SendMessageOutcome CamsClient::sendMessage(const SendMessageRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();

+ 106 - 0
cams/src/model/CheckContactsRequest.cc

@@ -0,0 +1,106 @@
+/*
+ * 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/cams/model/CheckContactsRequest.h>
+
+using AlibabaCloud::Cams::Model::CheckContactsRequest;
+
+CheckContactsRequest::CheckContactsRequest() :
+	RpcServiceRequest("cams", "2020-06-06", "CheckContacts")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+CheckContactsRequest::~CheckContactsRequest()
+{}
+
+long CheckContactsRequest::getResourceOwnerId()const
+{
+	return resourceOwnerId_;
+}
+
+void CheckContactsRequest::setResourceOwnerId(long resourceOwnerId)
+{
+	resourceOwnerId_ = resourceOwnerId;
+	setParameter("ResourceOwnerId", std::to_string(resourceOwnerId));
+}
+
+std::string CheckContactsRequest::getAccessKeyId()const
+{
+	return accessKeyId_;
+}
+
+void CheckContactsRequest::setAccessKeyId(const std::string& accessKeyId)
+{
+	accessKeyId_ = accessKeyId;
+	setParameter("AccessKeyId", accessKeyId);
+}
+
+std::string CheckContactsRequest::getChannelType()const
+{
+	return channelType_;
+}
+
+void CheckContactsRequest::setChannelType(const std::string& channelType)
+{
+	channelType_ = channelType;
+	setBodyParameter("ChannelType", channelType);
+}
+
+std::string CheckContactsRequest::getFrom()const
+{
+	return from_;
+}
+
+void CheckContactsRequest::setFrom(const std::string& from)
+{
+	from_ = from;
+	setBodyParameter("From", from);
+}
+
+std::string CheckContactsRequest::getResourceOwnerAccount()const
+{
+	return resourceOwnerAccount_;
+}
+
+void CheckContactsRequest::setResourceOwnerAccount(const std::string& resourceOwnerAccount)
+{
+	resourceOwnerAccount_ = resourceOwnerAccount;
+	setParameter("ResourceOwnerAccount", resourceOwnerAccount);
+}
+
+long CheckContactsRequest::getOwnerId()const
+{
+	return ownerId_;
+}
+
+void CheckContactsRequest::setOwnerId(long ownerId)
+{
+	ownerId_ = ownerId;
+	setParameter("OwnerId", std::to_string(ownerId));
+}
+
+std::string CheckContactsRequest::getContacts()const
+{
+	return contacts_;
+}
+
+void CheckContactsRequest::setContacts(const std::string& contacts)
+{
+	contacts_ = contacts;
+	setBodyParameter("Contacts", contacts);
+}
+

+ 73 - 0
cams/src/model/CheckContactsResult.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/cams/model/CheckContactsResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Cams;
+using namespace AlibabaCloud::Cams::Model;
+
+CheckContactsResult::CheckContactsResult() :
+	ServiceResult()
+{}
+
+CheckContactsResult::CheckContactsResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+CheckContactsResult::~CheckContactsResult()
+{}
+
+void CheckContactsResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto allContactsNode = value["Contacts"]["ContactStatus"];
+	for (auto valueContactsContactStatus : allContactsNode)
+	{
+		ContactStatus contactsObject;
+		if(!valueContactsContactStatus["PhoneNumber"].isNull())
+			contactsObject.phoneNumber = valueContactsContactStatus["PhoneNumber"].asString();
+		if(!valueContactsContactStatus["Status"].isNull())
+			contactsObject.status = valueContactsContactStatus["Status"].asString();
+		contacts_.push_back(contactsObject);
+	}
+	if(!value["ResultCode"].isNull())
+		resultCode_ = value["ResultCode"].asString();
+	if(!value["ResultMessage"].isNull())
+		resultMessage_ = value["ResultMessage"].asString();
+
+}
+
+std::vector<CheckContactsResult::ContactStatus> CheckContactsResult::getContacts()const
+{
+	return contacts_;
+}
+
+std::string CheckContactsResult::getResultMessage()const
+{
+	return resultMessage_;
+}
+
+std::string CheckContactsResult::getResultCode()const
+{
+	return resultCode_;
+}
+

+ 22 - 22
cams/src/model/SendMessageRequest.cc

@@ -38,6 +38,17 @@ void SendMessageRequest::setResourceOwnerId(long resourceOwnerId)
 	setParameter("ResourceOwnerId", std::to_string(resourceOwnerId));
 }
 
+std::string SendMessageRequest::getMessageType()const
+{
+	return messageType_;
+}
+
+void SendMessageRequest::setMessageType(const std::string& messageType)
+{
+	messageType_ = messageType;
+	setBodyParameter("MessageType", messageType);
+}
+
 std::string SendMessageRequest::getTemplateBodyParams()const
 {
 	return templateBodyParams_;
@@ -82,17 +93,6 @@ void SendMessageRequest::setType(const std::string& type)
 	setBodyParameter("Type", type);
 }
 
-std::string SendMessageRequest::getBody()const
-{
-	return body_;
-}
-
-void SendMessageRequest::setBody(const std::string& body)
-{
-	body_ = body;
-	setBodyParameter("Body", body);
-}
-
 std::string SendMessageRequest::getAccessKeyId()const
 {
 	return accessKeyId_;
@@ -126,6 +126,17 @@ void SendMessageRequest::setFrom(const std::string& from)
 	setBodyParameter("From", from);
 }
 
+std::string SendMessageRequest::getText()const
+{
+	return text_;
+}
+
+void SendMessageRequest::setText(const std::string& text)
+{
+	text_ = text;
+	setBodyParameter("Text", text);
+}
+
 std::string SendMessageRequest::getResourceOwnerAccount()const
 {
 	return resourceOwnerAccount_;
@@ -170,14 +181,3 @@ void SendMessageRequest::setTemplateCode(const std::string& templateCode)
 	setBodyParameter("TemplateCode", templateCode);
 }
 
-std::string SendMessageRequest::getMediaType()const
-{
-	return mediaType_;
-}
-
-void SendMessageRequest::setMediaType(const std::string& mediaType)
-{
-	mediaType_ = mediaType;
-	setBodyParameter("MediaType", mediaType);
-}
-