use serde::Deserialize;
#[cfg(feature = "auth")]
use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
pub struct CheckPackage {
pub project_code: String,
}
#[derive(Deserialize, Debug)]
pub(super) struct PortalError {
pub(super) detail: String,
}
#[cfg(feature = "auth")]
#[derive(Deserialize)]
pub(super) struct S3ConnectionInfoRaw {
access_key_id: String,
secret_access_key: String,
session_token: String,
endpoint: String,
bucket: String,
expiration: chrono::DateTime<chrono::Utc>,
}
#[cfg(feature = "auth")]
impl From<S3ConnectionInfoRaw> for crate::remote::s3::ConnectionInfo {
fn from(value: S3ConnectionInfoRaw) -> Self {
crate::remote::s3::ConnectionInfo {
endpoint: value.endpoint,
bucket: value.bucket,
credentials: crate::remote::s3::Credentials::new(
value.access_key_id,
value.secret_access_key,
Some(value.session_token),
Some(value.expiration.into()),
),
}
}
}
#[cfg(feature = "auth")]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)]
#[serde(rename_all(deserialize = "SCREAMING_SNAKE_CASE"))]
pub enum DataTransferStatus {
Initial,
Authorized,
Unauthorized,
Expired,
}
#[cfg(feature = "auth")]
#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
pub struct DataTransfer {
pub id: u32,
pub data_provider_name: String,
pub project_name: String,
pub status: DataTransferStatus,
}