Create media::FileMeta to represent a file and meta data
This commit is contained in:
		
							parent
							
								
									2da48b941d
								
							
						
					
					
						commit
						1c6f211933
					
				
					 4 changed files with 33 additions and 9 deletions
				
			
		|  | @ -4,7 +4,9 @@ use std::{ | |||
|     time::{Duration, SystemTime}, | ||||
| }; | ||||
| 
 | ||||
| use crate::{utils, ConduitResult, Database, Error, Ruma}; | ||||
| use crate::{ | ||||
|     database::media::FileMeta, pdu::PduBuilder, utils, ConduitResult, Database, Error, Ruma, | ||||
| }; | ||||
| use keys::{upload_signatures, upload_signing_keys}; | ||||
| use log::warn; | ||||
| 
 | ||||
|  | @ -3273,7 +3275,11 @@ pub fn get_content_route( | |||
|     _server_name: String, | ||||
|     _media_id: String, | ||||
| ) -> ConduitResult<get_content::Response> { | ||||
|     if let Some((filename, content_type, file)) = db | ||||
|     if let Some(FileMeta { | ||||
|         filename, | ||||
|         content_type, | ||||
|         file, | ||||
|     }) = db | ||||
|         .media | ||||
|         .get(format!("mxc://{}/{}", body.server_name, body.media_id))? | ||||
|     { | ||||
|  | @ -3301,7 +3307,9 @@ pub fn get_content_thumbnail_route( | |||
|     _server_name: String, | ||||
|     _media_id: String, | ||||
| ) -> ConduitResult<get_content_thumbnail::Response> { | ||||
|     if let Some((_, content_type, file)) = db.media.get_thumbnail( | ||||
|     if let Some(FileMeta { | ||||
|         content_type, file, .. | ||||
|     }) = db.media.get_thumbnail( | ||||
|         format!("mxc://{}/{}", body.server_name, body.media_id), | ||||
|         body.width | ||||
|             .try_into() | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| pub(self) mod account_data; | ||||
| pub(self) mod globals; | ||||
| pub(self) mod key_backups; | ||||
| pub(self) mod media; | ||||
| pub(crate) mod media; | ||||
| pub(self) mod rooms; | ||||
| pub(self) mod uiaa; | ||||
| pub(self) mod users; | ||||
|  |  | |||
|  | @ -1,7 +1,11 @@ | |||
| use crate::{utils, Error, Result}; | ||||
| use std::mem; | ||||
| 
 | ||||
| pub type FileMeta = (Option<String>, String, Vec<u8>); | ||||
| pub struct FileMeta { | ||||
|     pub filename: Option<String>, | ||||
|     pub content_type: String, | ||||
|     pub file: Vec<u8>, | ||||
| } | ||||
| 
 | ||||
| pub struct Media { | ||||
|     pub(super) mediaid_file: sled::Tree, // MediaId = MXC + WidthHeight + Filename + ContentType
 | ||||
|  | @ -61,7 +65,11 @@ impl Media { | |||
|                 })?) | ||||
|             }; | ||||
| 
 | ||||
|             Ok(Some((filename, content_type, file.to_vec()))) | ||||
|             Ok(Some(FileMeta { | ||||
|                 filename, | ||||
|                 content_type, | ||||
|                 file: file.to_vec(), | ||||
|             })) | ||||
|         } else { | ||||
|             Ok(None) | ||||
|         } | ||||
|  | @ -107,7 +115,11 @@ impl Media { | |||
|                 ) | ||||
|             }; | ||||
| 
 | ||||
|             Ok(Some((filename, content_type, file.to_vec()))) | ||||
|             Ok(Some(FileMeta { | ||||
|                 filename, | ||||
|                 content_type, | ||||
|                 file: file.to_vec(), | ||||
|             })) | ||||
|         } else if let Some(r) = self.mediaid_file.scan_prefix(&original_prefix).next() { | ||||
|             // Generate a thumbnail
 | ||||
|             let (key, file) = r?; | ||||
|  | @ -154,7 +166,11 @@ impl Media { | |||
| 
 | ||||
|                 self.mediaid_file.insert(thumbnail_key, &*thumbnail_bytes)?; | ||||
| 
 | ||||
|                 Ok(Some((filename, content_type, thumbnail_bytes))) | ||||
|                 Ok(Some(FileMeta { | ||||
|                     filename, | ||||
|                     content_type, | ||||
|                     file: thumbnail_bytes.to_vec(), | ||||
|                 })) | ||||
|             } else { | ||||
|                 Ok(None) | ||||
|             } | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ pub mod push_rules; | |||
| mod ruma_wrapper; | ||||
| mod utils; | ||||
| 
 | ||||
| pub use database::Database; | ||||
| pub use database::{media::FileMeta, Database}; | ||||
| pub use error::{Error, Result}; | ||||
| pub use pdu::PduEvent; | ||||
| pub use ruma_wrapper::{ConduitResult, Ruma, RumaResponse}; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue