pub struct ConnectionBuilder { /* private fields */ }Expand description
Строитель для создания и настройки экземпляров Connection.
ConnectionBuilder предоставляет удобный интерфейс для настройки
параметров соединения перед установлением соединения с сервером CloudPub.
§Пример
use cloudpub_sdk::Connection;
use std::time::Duration;
let conn = Connection::builder()
.config_path("/custom/config.toml") // Пользовательский файл конфигурации
.log_level("debug") // Установка уровня логирования
.verbose(true) // Включить вывод в консоль
.credentials("user@example.com", "password") // Учетные данные для аутентификации
.timeout(Duration::from_secs(30)) // Таймаут операций
.build()
.await?;§Методы аутентификации
Строитель поддерживает два метода аутентификации:
- На основе токена: Используйте
token()для аутентификации с существующим токеном - Учетные данные: Используйте
credentials()илиemail()/password()для аутентификации по имени/паролю
§Значения по умолчанию
- Уровень логирования: “info”
- Подробный вывод: false
- Таймаут: 10 секунд
- Путь к конфигурации: Системное расположение по умолчанию (~/.config/cloudpub/client.toml)
Implementations§
Source§impl ConnectionBuilder
impl ConnectionBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Создает новый builder с настройками по умолчанию.
§Пример
use cloudpub_sdk::ConnectionBuilder;
let builder = ConnectionBuilder::new();Sourcepub fn config_path<P: AsRef<Path>>(self, path: P) -> Self
pub fn config_path<P: AsRef<Path>>(self, path: P) -> Self
Устанавливает путь к файлу конфигурации.
По умолчанию SDK ищет файл конфигурации в стандартном системном расположении. Используйте этот метод для указания пользовательского расположения.
§Аргументы
path- Путь к файлу конфигурации
§Пример
use cloudpub_sdk::Connection;
use std::path::Path;
let conn = Connection::builder()
.config_path(Path::new("/etc/cloudpub/config.toml"))
.build()
.await?;Sourcepub fn log_level<S: Into<String>>(self, level: S) -> Self
pub fn log_level<S: Into<String>>(self, level: S) -> Self
Устанавливает уровень логирования для SDK.
§Аргументы
level- Уровень логирования: “trace”, “debug”, “info”, “warn”, “error”
§Пример
use cloudpub_sdk::Connection;
// Включить отладочное логирование
let conn = Connection::builder()
.log_level("debug")
.verbose(true) // Также выводить в консоль
.build()
.await?;Sourcepub fn verbose(self, verbose: bool) -> Self
pub fn verbose(self, verbose: bool) -> Self
Включает или отключает подробное логирование в консоль.
При включении сообщения логов выводятся в stderr в дополнение к файлу логов. Это полезно для отладки и разработки.
§Аргументы
verbose- true для включения вывода в консоль, false для отключения
§Пример
use cloudpub_sdk::Connection;
let conn = Connection::builder()
.verbose(true) // Включить вывод в консоль
.build()
.await?;Sourcepub fn init_logging(self, init: bool) -> Self
pub fn init_logging(self, init: bool) -> Self
Включает или отключает инициализацию логирования SDK.
По умолчанию build() устанавливает глобальный tracing-подписчик
(tracing::subscriber::set_global_default) с записью в файл лога.
Если в процессе уже установлен собственный подписчик, такая инициализация
завершится ошибкой. Вызовите init_logging(false), чтобы SDK не трогал
глобальное состояние логирования: события SDK попадут в подписчик
приложения, а настройки log_level() и verbose() игнорируются -
фильтрация остается за подписчиком приложения.
§Аргументы
init- false, чтобы использовать собственное логирование приложения
§Пример
use cloudpub_sdk::Connection;
// В приложении уже настроен tracing-подписчик
let conn = Connection::builder()
.init_logging(false)
.build()
.await?;Sourcepub fn token<S: Into<String>>(self, token: S) -> Self
pub fn token<S: Into<String>>(self, token: S) -> Self
Устанавливает токен аутентификации.
Используйте этот метод для аутентификации на основе токена. Это взаимоисключающе с аутентификацией на основе учетных данных.
§Аргументы
token- Токен аутентификации, полученный при предыдущем входе
§Пример
use cloudpub_sdk::Connection;
let conn = Connection::builder()
.token("your-auth-token-here")
.build()
.await?;Sourcepub fn credentials<S: Into<String>>(self, email: S, password: S) -> Self
pub fn credentials<S: Into<String>>(self, email: S, password: S) -> Self
Устанавливает email и пароль для аутентификации.
Используйте этот метод для аутентификации на основе учетных данных. Это взаимоисключающе с аутентификацией на основе токена.
§Аргументы
email- Email адрес пользователяpassword- Пароль пользователя
§Пример
use cloudpub_sdk::Connection;
let conn = Connection::builder()
.credentials("user@example.com", "secure-password")
.build()
.await?;Sourcepub fn email<S: Into<String>>(self, email: S) -> Self
pub fn email<S: Into<String>>(self, email: S) -> Self
Устанавливает только email адрес.
Должен использоваться в сочетании с password(). Это полезно, когда
учетные данные получаются отдельно.
§Аргументы
email- Email адрес пользователя
§Пример
use cloudpub_sdk::Connection;
let conn = Connection::builder()
.email("user@example.com")
.password("secure-password")
.build()
.await?;Sourcepub fn password<S: Into<String>>(self, password: S) -> Self
pub fn password<S: Into<String>>(self, password: S) -> Self
Устанавливает только пароль.
Должен использоваться в сочетании с email(). Это полезно, когда
учетные данные получаются отдельно.
§Аргументы
password- Пароль пользователя
§Пример
use cloudpub_sdk::Connection;
let email = std::env::var("CLOUDPUB_EMAIL")?;
let password = std::env::var("CLOUDPUB_PASSWORD")?;
let conn = Connection::builder()
.email(email)
.password(password)
.build()
.await?;Sourcepub fn timeout(self, timeout: Duration) -> Self
pub fn timeout(self, timeout: Duration) -> Self
Устанавливает таймаут для операций.
Этот таймаут применяется ко всем асинхронным операциям, таким как register, publish, ls и т.д. По умолчанию 10 секунд.
§Аргументы
timeout- Продолжительность таймаута операции
§Пример
use cloudpub_sdk::Connection;
use std::time::Duration;
let conn = Connection::builder()
.timeout(Duration::from_secs(60)) // Таймаут 1 минута
.build()
.await?;Sourcepub fn timeout_secs(self, secs: u64) -> Self
pub fn timeout_secs(self, secs: u64) -> Self
Sourcepub fn check_signal_fn(self, check_fn: CheckSignalFn) -> Self
pub fn check_signal_fn(self, check_fn: CheckSignalFn) -> Self
Устанавливает функцию для проверки сигналов прерывания.
Это в основном используется языковыми обертками (например, Python) для проверки сигналов, таких как Ctrl+C, во время долговременных операций.
§Аргументы
check_fn- Функция, которая возвращает ошибку, если операция должна быть прервана
§Пример
use cloudpub_sdk::{Connection, CheckSignalFn};
use std::sync::Arc;
use std::sync::atomic::{AtomicBool, Ordering};
let interrupted = Arc::new(AtomicBool::new(false));
let interrupted_clone = interrupted.clone();
let check_signal: CheckSignalFn = Arc::new(move || {
if interrupted_clone.load(Ordering::Relaxed) {
anyhow::bail!("Operation interrupted")
}
Ok(())
});
let conn = Connection::builder()
.check_signal_fn(check_signal)
.build()
.await?;
Sourcepub async fn build(self) -> Result<Connection>
pub async fn build(self) -> Result<Connection>
Создает и устанавливает соединение с сервером CloudPub.
Этот метод:
- Проверяет конфигурацию
- Инициализирует логирование (если не отключено через
init_logging(false)) - Загружает или создает файл конфигурации
- Аутентифицируется на сервере (если предоставлены учетные данные)
- Устанавливает соединение
- Ожидает готовности соединения
§Возвращает
Возвращает экземпляр Connection при успехе, или ошибку, если:
- Неверная конфигурация (например, email без пароля)
- Неудачная аутентификация
- Не удается установить соединение
- Происходит таймаут
§Пример
use cloudpub_sdk::Connection;
// Создание с настройками по умолчанию
let conn = Connection::builder().build().await?;
// Создание с пользовательской конфигурацией
let conn = Connection::builder()
.credentials("user@example.com", "password")
.log_level("debug")
.verbose(true)
.timeout_secs(30)
.build()
.await?;§Ошибки
Этот метод вернет ошибку, если:
- Email предоставлен без пароля или наоборот
- Не удалось инициализировать логирование (например, в процессе уже
установлен глобальный tracing-подписчик; используйте
init_logging(false)) - Не удалось загрузить или создать файл конфигурации
- Неудачная аутентификация
- Неудачное соединение с сервером
- Таймаут ожидания соединения
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for ConnectionBuilder
impl !UnwindSafe for ConnectionBuilder
impl Freeze for ConnectionBuilder
impl Send for ConnectionBuilder
impl Sync for ConnectionBuilder
impl Unpin for ConnectionBuilder
impl UnsafeUnpin for ConnectionBuilder
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more