eureka-mmanager 0.3.0

An Actix actor collection for downloading manga, chapters, covers from Mangadex
Documentation
use std::fs::File;

use actix::prelude::*;
use uuid::Uuid;

use crate::{DirsOptions, ManagerCoreResult};

use super::CoverDataPullMessage;

#[derive(Debug, Clone, Hash, Default)]
pub struct CoverImageDataPullMessage(pub Uuid);

impl From<Uuid> for CoverImageDataPullMessage {
    fn from(value: Uuid) -> Self {
        Self(value)
    }
}

impl From<CoverImageDataPullMessage> for Uuid {
    fn from(value: CoverImageDataPullMessage) -> Self {
        value.0
    }
}

impl Message for CoverImageDataPullMessage {
    type Result = ManagerCoreResult<File>;
}

impl Handler<CoverImageDataPullMessage> for DirsOptions {
    type Result = <CoverImageDataPullMessage as Message>::Result;
    fn handle(&mut self, msg: CoverImageDataPullMessage, ctx: &mut Self::Context) -> Self::Result {
        let filename = self
            .handle(CoverDataPullMessage(msg.0), ctx)?
            .attributes
            .file_name;
        Ok(File::open(self.cover_images_add(filename))?)
    }
}