10
10
11
11
## Getting Started
12
12
13
- A file type. The file type is determined by examining the file or bytes against known file
13
+ File types are determined by examining a file or bytes against known file
14
14
signatures and file extensions.
15
15
16
16
Signature, extension and media type data are provided by:
@@ -25,21 +25,38 @@ Detect a Java class file from bytes:
25
25
use file_type :: FileType ;
26
26
27
27
let file_type = FileType :: from_bytes (b " \ x CA\ x FE\ x BA\ x BE" );
28
- assert_eq! (file_type . id (), " x-fmt/415" );
29
28
assert_eq! (file_type . name (), " Java Class File" );
30
29
assert_eq! (file_type . media_types (), Vec :: <String >:: new ());
31
30
assert_eq! (file_type . extensions (), vec! [" class" ]);
32
31
```
33
32
34
- Detect text from bytes :
33
+ Detect the file type from a file :
35
34
``` rust
36
35
use file_type :: FileType ;
36
+ use std :: path :: Path ;
37
37
38
- let file_type = FileType :: from_bytes (b " hello, world\ n" );
39
- assert_eq! (file_type . id (), " default/2" );
40
- assert_eq! (file_type . name (), " Text" );
41
- assert_eq! (file_type . media_types (), vec! [" text/plain" ]);
42
- assert_eq! (file_type . extensions (), Vec :: <String >:: new ());
38
+ #[tokio:: main]
39
+ async fn main () {
40
+ let file_path = Path :: new (" image.png" );
41
+ let file_type = FileType :: try_from_file (file_path ). await . expect (" file type not found" );
42
+ assert_eq! (file_type . id (), " fmt/11" );
43
+ assert_eq! (file_type . name (), " Portable Network Graphics" );
44
+ assert_eq! (file_type . extensions (), vec! [" png" ]);
45
+ assert_eq! (file_type . media_types (), vec! [" image/png" ]);
46
+ }
47
+ ```
48
+
49
+ Detect the file type from a file synchronously:
50
+ ``` rust
51
+ use file_type :: FileType ;
52
+ use std :: path :: Path ;
53
+
54
+ let file_path = Path :: new (" image.png" );
55
+ let file_type = FileType :: try_from_file_sync (file_path ). expect (" file type not found" );
56
+ assert_eq! (file_type . id (), " fmt/11" );
57
+ assert_eq! (file_type . name (), " Portable Network Graphics" );
58
+ assert_eq! (file_type . extensions (), vec! [" png" ]);
59
+ assert_eq! (file_type . media_types (), vec! [" image/png" ]);
43
60
```
44
61
45
62
## Supported File Types
0 commit comments