@@ -9,7 +9,7 @@ use self::s3::S3Backend;
99use crate :: {
1010 db:: {
1111 file:: { detect_mime, FileEntry } ,
12- Pool ,
12+ mimes , Pool ,
1313 } ,
1414 error:: Result ,
1515 utils:: spawn_blocking,
@@ -19,6 +19,7 @@ use anyhow::anyhow;
1919use chrono:: { DateTime , Utc } ;
2020use fn_error_context:: context;
2121use futures_util:: stream:: BoxStream ;
22+ use mime:: Mime ;
2223use path_slash:: PathExt ;
2324use std:: iter;
2425use std:: {
@@ -41,7 +42,7 @@ pub(crate) struct PathNotFoundError;
4142#[ derive( Clone , Debug , PartialEq , Eq , Hash ) ]
4243pub ( crate ) struct Blob {
4344 pub ( crate ) path : String ,
44- pub ( crate ) mime : String ,
45+ pub ( crate ) mime : Mime ,
4546 pub ( crate ) date_updated : DateTime < Utc > ,
4647 pub ( crate ) content : Vec < u8 > ,
4748 pub ( crate ) compression : Option < CompressionAlgorithm > ,
@@ -378,7 +379,7 @@ impl AsyncStorage {
378379
379380 Ok ( Blob {
380381 path : format ! ( "{archive_path}/{path}" ) ,
381- mime : detect_mime ( path) . into ( ) ,
382+ mime : detect_mime ( path) ,
382383 date_updated : blob. date_updated ,
383384 content : blob. content ,
384385 compression : None ,
@@ -460,14 +461,14 @@ impl AsyncStorage {
460461 self . store_inner ( vec ! [
461462 Blob {
462463 path: archive_path. to_string( ) ,
463- mime: "application/zip" . to_owned ( ) ,
464+ mime: mimes :: APPLICATION_ZIP . clone ( ) ,
464465 content: zip_content,
465466 compression: None ,
466467 date_updated: Utc :: now( ) ,
467468 } ,
468469 Blob {
469470 path: remote_index_path,
470- mime: "application/octet-stream" . to_owned ( ) ,
471+ mime: mime :: APPLICATION_OCTET_STREAM ,
471472 content: compressed_index_content,
472473 compression: Some ( alg) ,
473474 date_updated: Utc :: now( ) ,
@@ -512,7 +513,7 @@ impl AsyncStorage {
512513 path : file_path,
513514 size : file_size,
514515 } ;
515- let mime = file_info. mime ( ) . to_string ( ) ;
516+ let mime = file_info. mime ( ) ;
516517 file_paths. push ( file_info) ;
517518
518519 blobs. push ( Blob {
@@ -877,7 +878,7 @@ mod backend_tests {
877878 assert ! ( !storage. exists( "path/to/file.txt" ) . unwrap( ) ) ;
878879 let blob = Blob {
879880 path : "path/to/file.txt" . into ( ) ,
880- mime : "text/plain" . into ( ) ,
881+ mime : mime :: TEXT_PLAIN ,
881882 date_updated : Utc :: now ( ) ,
882883 content : "Hello world!" . into ( ) ,
883884 compression : None ,
@@ -893,7 +894,7 @@ mod backend_tests {
893894
894895 storage. store_blobs ( vec ! [ Blob {
895896 path: path. into( ) ,
896- mime: "text/plain" . into ( ) ,
897+ mime: mime :: TEXT_PLAIN ,
897898 date_updated: Utc :: now( ) ,
898899 compression: None ,
899900 content: b"test content\n " . to_vec( ) ,
@@ -920,7 +921,7 @@ mod backend_tests {
920921 let path: & str = "foo/bar.txt" ;
921922 let blob = Blob {
922923 path : path. into ( ) ,
923- mime : "text/plain" . into ( ) ,
924+ mime : mime :: TEXT_PLAIN ,
924925 date_updated : Utc :: now ( ) ,
925926 compression : None ,
926927 content : b"test content\n " . to_vec ( ) ,
@@ -955,7 +956,7 @@ mod backend_tests {
955956 fn test_get_range ( storage : & Storage ) -> Result < ( ) > {
956957 let blob = Blob {
957958 path : "foo/bar.txt" . into ( ) ,
958- mime : "text/plain" . into ( ) ,
959+ mime : mime :: TEXT_PLAIN ,
959960 date_updated : Utc :: now ( ) ,
960961 compression : None ,
961962 content : b"test content\n " . to_vec ( ) ,
@@ -995,7 +996,7 @@ mod backend_tests {
995996 . iter ( )
996997 . map ( |& filename| Blob {
997998 path : filename. into ( ) ,
998- mime : "text/plain" . into ( ) ,
999+ mime : mime :: TEXT_PLAIN ,
9991000 date_updated : Utc :: now ( ) ,
10001001 compression : None ,
10011002 content : b"test content\n " . to_vec ( ) ,
@@ -1036,14 +1037,14 @@ mod backend_tests {
10361037
10371038 let small_blob = Blob {
10381039 path : "small-blob.bin" . into ( ) ,
1039- mime : "text/plain" . into ( ) ,
1040+ mime : mime :: TEXT_PLAIN ,
10401041 date_updated : Utc :: now ( ) ,
10411042 content : vec ! [ 0 ; MAX_SIZE ] ,
10421043 compression : None ,
10431044 } ;
10441045 let big_blob = Blob {
10451046 path : "big-blob.bin" . into ( ) ,
1046- mime : "text/plain" . into ( ) ,
1047+ mime : mime :: TEXT_PLAIN ,
10471048 date_updated : Utc :: now ( ) ,
10481049 content : vec ! [ 0 ; MAX_SIZE * 2 ] ,
10491050 compression : None ,
@@ -1078,7 +1079,7 @@ mod backend_tests {
10781079 . iter ( )
10791080 . map ( |& path| Blob {
10801081 path : path. into ( ) ,
1081- mime : "text/plain" . into ( ) ,
1082+ mime : mime :: TEXT_PLAIN ,
10821083 date_updated : Utc :: now ( ) ,
10831084 compression : None ,
10841085 content : b"Hello world!\n " . to_vec ( ) ,
@@ -1221,7 +1222,7 @@ mod backend_tests {
12211222 . map ( |i| {
12221223 let content = format ! ( "const IDX: usize = {i};" ) . as_bytes ( ) . to_vec ( ) ;
12231224 Blob {
1224- mime : "text/rust" . into ( ) ,
1225+ mime : mimes :: TEXT_RUST . clone ( ) ,
12251226 content,
12261227 path : format ! ( "{i}.rs" ) ,
12271228 date_updated : now,
@@ -1286,7 +1287,7 @@ mod backend_tests {
12861287 path : ( * path) . to_string ( ) ,
12871288 content : b"foo\n " . to_vec ( ) ,
12881289 compression : None ,
1289- mime : "text/plain" . into ( ) ,
1290+ mime : mime :: TEXT_PLAIN ,
12901291 date_updated : Utc :: now ( ) ,
12911292 } )
12921293 . collect ( ) ,
0 commit comments