Astarte device API for C++ 0.8.1
Astarte device SDK for C++
Loading...
Searching...
No Matches
pairing.hpp
Go to the documentation of this file.
1// (C) Copyright 2025, SECO Mind Srl
2//
3// SPDX-License-Identifier: Apache-2.0
4
5#ifndef ASTARTE_MQTT_PAIRING_H
6#define ASTARTE_MQTT_PAIRING_H
7
15
16#include <ada.h>
17
18#include <chrono>
19#include <format>
20#include <string>
21#include <string_view>
22#include <tuple>
23
25
26namespace astarte::device::mqtt {
27
29using namespace std::chrono_literals;
31
38class PairingApi {
39 public:
48 static auto create(std::string_view realm, std::string_view device_id,
49 std::string_view astarte_base_url) -> astarte_tl::expected<PairingApi, Error>;
50
58 [[nodiscard]] auto register_device(std::string_view pairing_token,
59 std::chrono::milliseconds timeout_ms = 0ms) const
60 -> astarte_tl::expected<std::string, Error>;
61
70 [[nodiscard]] auto get_broker_url(std::string_view credential_secret, int timeout_ms = 0) const
71 -> astarte_tl::expected<std::string, Error>;
72
81 [[nodiscard]] auto get_device_key_and_certificate(std::string_view credential_secret,
82 int timeout_ms = 0) const
83 -> astarte_tl::expected<std::tuple<std::string, std::string>, Error>;
84
94 [[nodiscard]] auto device_cert_valid(std::string_view certificate,
95 std::string_view credential_secret, int timeout_ms = 0) const
96 -> astarte_tl::expected<bool, Error>;
97
98 private:
106 PairingApi(std::string_view realm, std::string_view device_id, ada::url_aggregator pairing_url);
107
109 std::string realm_;
111 std::string device_id_;
113 ada::url_aggregator pairing_url_;
114};
115
122auto create_random_device_id() -> std::string;
123
133auto create_deterministic_device_id(std::string_view namespc, std::string_view unique_data)
134 -> astarte_tl::expected<std::string, Error>;
135
136} // namespace astarte::device::mqtt
137
138#endif // ASTARTE_MQTT_PAIRING_H
auto get_device_key_and_certificate(std::string_view credential_secret, int timeout_ms=0) const -> astarte_tl::expected< std::tuple< std::string, std::string >, Error >
Retrieves the Astarte device certificate and relative private key.
static auto create(std::string_view realm, std::string_view device_id, std::string_view astarte_base_url) -> astarte_tl::expected< PairingApi, Error >
Creates an instance of the PairingApi class.
auto device_cert_valid(std::string_view certificate, std::string_view credential_secret, int timeout_ms=0) const -> astarte_tl::expected< bool, Error >
Checks if the Astarte device certificate is valid.
auto register_device(std::string_view pairing_token, std::chrono::milliseconds timeout_ms=0ms) const -> astarte_tl::expected< std::string, Error >
Registers a device.
auto get_broker_url(std::string_view credential_secret, int timeout_ms=0) const -> astarte_tl::expected< std::string, Error >
Retrieves the URL of the Astarte MQTT broker.
specific error definitions for the Astarte device SDK.
Namespace for Astarte device functionality using the MQTT transport protocol.
Definition errors.hpp:57
auto create_random_device_id() -> std::string
Creates a random Astarte device id starting from a UUIDv4.
auto create_deterministic_device_id(std::string_view namespc, std::string_view unique_data) -> astarte_tl::expected< std::string, Error >
Creates a deterministic Astarte device id using a UUIDv5.
std::variant< DataSerializationError, InternalError, FileOpenError, InvalidInputError, InterfaceValidationError, InvalidInterfaceVersionError, InvalidInterfaceTypeError, InvalidInterfaceOwnershipeError, InvalidInterfaceAggregationError, InvalidAstarteTypeError, InvalidReliabilityError, InvalidRetentionError, InvalidDatabaseRetentionPolicyError, OperationRefusedError, GrpcLibError, MsgHubError, mqtt::JsonParsingError, mqtt::DeviceRegistrationError, mqtt::PairingApiError, mqtt::MqttError, mqtt::InvalidUrlError, mqtt::RetrieveBrokerUrlError, mqtt::ReadCredentialError, mqtt::WriteCredentialError, mqtt::PairingConfigError, mqtt::CryptoError, mqtt::UuidError, mqtt::HttpError, mqtt::MqttConnectionError > Error
Variant type representing any error from the Astarte device library.
Definition errors.hpp:80