oxygengine_core/fetch/engines/
map.rs

1use crate::fetch::{FetchCancelReason, FetchEngine, FetchProcess, FetchStatus};
2use std::collections::HashMap;
3
4#[derive(Default, Clone)]
5pub struct MapFetchEngine {
6    pub map: HashMap<String, Vec<u8>>,
7}
8
9impl MapFetchEngine {
10    pub fn new(map: HashMap<String, Vec<u8>>) -> Self {
11        Self { map }
12    }
13}
14
15impl FetchEngine for MapFetchEngine {
16    fn fetch(&mut self, path: &str) -> Result<Box<FetchProcess>, FetchStatus> {
17        if let Some(bytes) = self.map.get(path) {
18            Ok(Box::new(FetchProcess::new_done(bytes.to_vec())))
19        } else {
20            Err(FetchStatus::Canceled(FetchCancelReason::Error))
21        }
22    }
23}