use chrono::{DateTime, Utc};
use serde::Deserialize;
use super::{
MetadataRedemptionId, PendingAuthStateMetadataRedemption,
PendingAuthStateMetadataRedemptionConfig, PendingAuthStateMetadataRedemptionPayload,
PendingAuthStateMetadataRedemptionStore, PendingAuthStateMetadataRedemptionStoreError,
};
#[derive(Debug, Clone, Default, Deserialize, PartialEq, Eq)]
pub struct NeverMetadataRedemptionConfig;
impl PendingAuthStateMetadataRedemptionConfig for NeverMetadataRedemptionConfig {}
pub struct NeverMetadataRedemptionStore;
impl PendingAuthStateMetadataRedemptionStore for NeverMetadataRedemptionStore {
type Config = NeverMetadataRedemptionConfig;
fn from_config(
_config: &Self::Config,
) -> Result<Self, PendingAuthStateMetadataRedemptionStoreError> {
Ok(Self)
}
fn issue(
&self,
_payload: PendingAuthStateMetadataRedemptionPayload,
_now: DateTime<Utc>,
) -> Result<PendingAuthStateMetadataRedemption, PendingAuthStateMetadataRedemptionStoreError>
{
Err(
PendingAuthStateMetadataRedemptionStoreError::StoreOperation {
message: "NeverMetadataRedemptionStore does not support issue (metadata_delivery \
= none is active)"
.to_string(),
},
)
}
fn redeem(
&self,
_id: &MetadataRedemptionId,
_now: DateTime<Utc>,
) -> Result<
Option<PendingAuthStateMetadataRedemptionPayload>,
PendingAuthStateMetadataRedemptionStoreError,
> {
Err(
PendingAuthStateMetadataRedemptionStoreError::StoreOperation {
message: "NeverMetadataRedemptionStore does not support redeem (metadata_delivery \
= none is active)"
.to_string(),
},
)
}
}