identity/source/IotIdentityClient.cpp (333 lines of code) (raw):
/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*
* This file is generated
*/
#include <aws/iotidentity/IotIdentityClient.h>
#include <aws/iotidentity/CreateCertificateFromCsrRequest.h>
#include <aws/iotidentity/CreateCertificateFromCsrResponse.h>
#include <aws/iotidentity/CreateCertificateFromCsrSubscriptionRequest.h>
#include <aws/iotidentity/CreateKeysAndCertificateRequest.h>
#include <aws/iotidentity/CreateKeysAndCertificateResponse.h>
#include <aws/iotidentity/CreateKeysAndCertificateSubscriptionRequest.h>
#include <aws/iotidentity/ErrorResponse.h>
#include <aws/iotidentity/RegisterThingRequest.h>
#include <aws/iotidentity/RegisterThingResponse.h>
#include <aws/iotidentity/RegisterThingSubscriptionRequest.h>
namespace Aws
{
namespace Iotidentity
{
IotIdentityClient::IotIdentityClient(const std::shared_ptr<Aws::Crt::Mqtt::MqttConnection> &connection)
: m_connection(connection)
{
}
IotIdentityClient::IotIdentityClient(const std::shared_ptr<Aws::Crt::Mqtt5::Mqtt5Client> &mqtt5Client)
{
m_connection = Aws::Crt::Mqtt::MqttConnection::NewConnectionFromMqtt5Client(mqtt5Client);
}
IotIdentityClient::operator bool() const noexcept
{
return m_connection && *m_connection;
}
int IotIdentityClient::GetLastError() const noexcept
{
return aws_last_error();
}
bool IotIdentityClient::SubscribeToCreateCertificateFromCsrAccepted(
const Aws::Iotidentity::CreateCertificateFromCsrSubscriptionRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToCreateCertificateFromCsrAcceptedResponse &handler,
const OnSubscribeComplete &onSubAck)
{
(void)request;
auto onSubscribeComplete = [handler, onSubAck](
Aws::Crt::Mqtt::MqttConnection &,
uint16_t,
const Aws::Crt::String &topic,
Aws::Crt::Mqtt::QOS,
int errorCode)
{
(void)topic;
if (errorCode)
{
handler(nullptr, errorCode);
}
if (onSubAck)
{
onSubAck(errorCode);
}
};
auto onSubscribePublish =
[handler](Aws::Crt::Mqtt::MqttConnection &, const Aws::Crt::String &, const Aws::Crt::ByteBuf &payload)
{
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.buffer), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
Aws::Iotidentity::CreateCertificateFromCsrResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws/certificates/create-from-csr/json/accepted";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}
bool IotIdentityClient::SubscribeToCreateCertificateFromCsrRejected(
const Aws::Iotidentity::CreateCertificateFromCsrSubscriptionRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToCreateCertificateFromCsrRejectedResponse &handler,
const OnSubscribeComplete &onSubAck)
{
(void)request;
auto onSubscribeComplete = [handler, onSubAck](
Aws::Crt::Mqtt::MqttConnection &,
uint16_t,
const Aws::Crt::String &topic,
Aws::Crt::Mqtt::QOS,
int errorCode)
{
(void)topic;
if (errorCode)
{
handler(nullptr, errorCode);
}
if (onSubAck)
{
onSubAck(errorCode);
}
};
auto onSubscribePublish =
[handler](Aws::Crt::Mqtt::MqttConnection &, const Aws::Crt::String &, const Aws::Crt::ByteBuf &payload)
{
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.buffer), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
Aws::Iotidentity::ErrorResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws/certificates/create-from-csr/json/rejected";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}
bool IotIdentityClient::SubscribeToCreateKeysAndCertificateAccepted(
const Aws::Iotidentity::CreateKeysAndCertificateSubscriptionRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToCreateKeysAndCertificateAcceptedResponse &handler,
const OnSubscribeComplete &onSubAck)
{
(void)request;
auto onSubscribeComplete = [handler, onSubAck](
Aws::Crt::Mqtt::MqttConnection &,
uint16_t,
const Aws::Crt::String &topic,
Aws::Crt::Mqtt::QOS,
int errorCode)
{
(void)topic;
if (errorCode)
{
handler(nullptr, errorCode);
}
if (onSubAck)
{
onSubAck(errorCode);
}
};
auto onSubscribePublish =
[handler](Aws::Crt::Mqtt::MqttConnection &, const Aws::Crt::String &, const Aws::Crt::ByteBuf &payload)
{
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.buffer), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
Aws::Iotidentity::CreateKeysAndCertificateResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws/certificates/create/json/accepted";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}
bool IotIdentityClient::SubscribeToCreateKeysAndCertificateRejected(
const Aws::Iotidentity::CreateKeysAndCertificateSubscriptionRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToCreateKeysAndCertificateRejectedResponse &handler,
const OnSubscribeComplete &onSubAck)
{
(void)request;
auto onSubscribeComplete = [handler, onSubAck](
Aws::Crt::Mqtt::MqttConnection &,
uint16_t,
const Aws::Crt::String &topic,
Aws::Crt::Mqtt::QOS,
int errorCode)
{
(void)topic;
if (errorCode)
{
handler(nullptr, errorCode);
}
if (onSubAck)
{
onSubAck(errorCode);
}
};
auto onSubscribePublish =
[handler](Aws::Crt::Mqtt::MqttConnection &, const Aws::Crt::String &, const Aws::Crt::ByteBuf &payload)
{
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.buffer), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
Aws::Iotidentity::ErrorResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws/certificates/create/json/rejected";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}
bool IotIdentityClient::SubscribeToRegisterThingAccepted(
const Aws::Iotidentity::RegisterThingSubscriptionRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToRegisterThingAcceptedResponse &handler,
const OnSubscribeComplete &onSubAck)
{
(void)request;
auto onSubscribeComplete = [handler, onSubAck](
Aws::Crt::Mqtt::MqttConnection &,
uint16_t,
const Aws::Crt::String &topic,
Aws::Crt::Mqtt::QOS,
int errorCode)
{
(void)topic;
if (errorCode)
{
handler(nullptr, errorCode);
}
if (onSubAck)
{
onSubAck(errorCode);
}
};
auto onSubscribePublish =
[handler](Aws::Crt::Mqtt::MqttConnection &, const Aws::Crt::String &, const Aws::Crt::ByteBuf &payload)
{
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.buffer), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
Aws::Iotidentity::RegisterThingResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws/provisioning-templates/" << *request.TemplateName << "/provision/json/accepted";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}
bool IotIdentityClient::SubscribeToRegisterThingRejected(
const Aws::Iotidentity::RegisterThingSubscriptionRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToRegisterThingRejectedResponse &handler,
const OnSubscribeComplete &onSubAck)
{
(void)request;
auto onSubscribeComplete = [handler, onSubAck](
Aws::Crt::Mqtt::MqttConnection &,
uint16_t,
const Aws::Crt::String &topic,
Aws::Crt::Mqtt::QOS,
int errorCode)
{
(void)topic;
if (errorCode)
{
handler(nullptr, errorCode);
}
if (onSubAck)
{
onSubAck(errorCode);
}
};
auto onSubscribePublish =
[handler](Aws::Crt::Mqtt::MqttConnection &, const Aws::Crt::String &, const Aws::Crt::ByteBuf &payload)
{
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.buffer), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
Aws::Iotidentity::ErrorResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws/provisioning-templates/" << *request.TemplateName << "/provision/json/rejected";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}
bool IotIdentityClient::PublishCreateCertificateFromCsr(
const Aws::Iotidentity::CreateCertificateFromCsrRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnPublishComplete &onPubAck)
{
Aws::Crt::StringStream publishTopicSStr;
publishTopicSStr << "$aws/certificates/create-from-csr/json";
Aws::Crt::JsonObject jsonObject;
request.SerializeToObject(jsonObject);
Aws::Crt::String outgoingJson = jsonObject.View().WriteCompact(true);
Aws::Crt::ByteBuf buf = Aws::Crt::ByteBufNewCopy(
Aws::Crt::g_allocator, reinterpret_cast<const uint8_t *>(outgoingJson.data()), outgoingJson.length());
auto onPublishComplete = [buf, onPubAck](Aws::Crt::Mqtt::MqttConnection &, uint16_t, int errorCode)
{
onPubAck(errorCode);
Aws::Crt::ByteBufDelete(const_cast<Aws::Crt::ByteBuf &>(buf));
};
return m_connection->Publish(
publishTopicSStr.str().c_str(), qos, false, buf, std::move(onPublishComplete)) != 0;
}
bool IotIdentityClient::PublishCreateKeysAndCertificate(
const Aws::Iotidentity::CreateKeysAndCertificateRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnPublishComplete &onPubAck)
{
Aws::Crt::StringStream publishTopicSStr;
publishTopicSStr << "$aws/certificates/create/json";
Aws::Crt::JsonObject jsonObject;
request.SerializeToObject(jsonObject);
Aws::Crt::String outgoingJson = jsonObject.View().WriteCompact(true);
Aws::Crt::ByteBuf buf = Aws::Crt::ByteBufNewCopy(
Aws::Crt::g_allocator, reinterpret_cast<const uint8_t *>(outgoingJson.data()), outgoingJson.length());
auto onPublishComplete = [buf, onPubAck](Aws::Crt::Mqtt::MqttConnection &, uint16_t, int errorCode)
{
onPubAck(errorCode);
Aws::Crt::ByteBufDelete(const_cast<Aws::Crt::ByteBuf &>(buf));
};
return m_connection->Publish(
publishTopicSStr.str().c_str(), qos, false, buf, std::move(onPublishComplete)) != 0;
}
bool IotIdentityClient::PublishRegisterThing(
const Aws::Iotidentity::RegisterThingRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnPublishComplete &onPubAck)
{
Aws::Crt::StringStream publishTopicSStr;
publishTopicSStr << "$aws/provisioning-templates/" << *request.TemplateName << "/provision/json";
Aws::Crt::JsonObject jsonObject;
request.SerializeToObject(jsonObject);
Aws::Crt::String outgoingJson = jsonObject.View().WriteCompact(true);
Aws::Crt::ByteBuf buf = Aws::Crt::ByteBufNewCopy(
Aws::Crt::g_allocator, reinterpret_cast<const uint8_t *>(outgoingJson.data()), outgoingJson.length());
auto onPublishComplete = [buf, onPubAck](Aws::Crt::Mqtt::MqttConnection &, uint16_t, int errorCode)
{
onPubAck(errorCode);
Aws::Crt::ByteBufDelete(const_cast<Aws::Crt::ByteBuf &>(buf));
};
return m_connection->Publish(
publishTopicSStr.str().c_str(), qos, false, buf, std::move(onPublishComplete)) != 0;
}
} // namespace Iotidentity
} // namespace Aws