1use crate::{credentials, pb::scheduler::PairDeviceResponse};
2use thiserror::Error;
3
4pub mod attestation_device;
5pub mod new_device;
6
7#[derive(Error, Debug)]
8pub enum Error {
9 #[error(transparent)]
10 TransportError(#[from] tonic::transport::Error),
11 #[error(transparent)]
12 X509Error(#[from] rcgen::RcgenError),
13 #[error("could not build client: {0}")]
14 BuildClientError(String),
15 #[error(transparent)]
16 GrpcError(#[from] tonic::Status),
17 #[error(transparent)]
18 CredentialsError(#[from] credentials::Error),
19 #[error(transparent)]
20 RuneError(#[from] runeauth::RuneError),
21 #[error("could not approve pairing: {0}")]
22 ApprovePairingError(String),
23 #[error("could not verify pairing data: {0}")]
24 VerifyPairingDataError(String),
25}
26
27#[derive(Debug)]
28pub enum PairingSessionData {
29 PairingResponse(PairDeviceResponse),
30 PairingQr(String),
31 PairingError(tonic::Status),
32}
33
34fn into_approve_pairing_error<T: ToString>(v: T) -> Error {
35 Error::ApprovePairingError(v.to_string())
36}
37
38fn into_verify_pairing_data_error<T: ToString>(v: T) -> Error {
39 Error::VerifyPairingDataError(v.to_string())
40}