@@ -5,13 +5,7 @@ use reqwest::header::CONTENT_TYPE as MimeType;
55use std:: {
66 error:: Error ,
77 path:: PathBuf ,
8-
9- io:: {
10- Read ,
11- Write ,
12- Cursor ,
13- BufReader
14- } ,
8+ io:: BufReader ,
159
1610 fs:: {
1711 self ,
@@ -20,21 +14,10 @@ use std::{
2014} ;
2115
2216use crate :: {
17+ ui:: ui_base:: UI ,
18+ utils:: remote:: Remote ,
2319 render:: render:: Render ,
24- system:: providers:: Providers ,
25-
26- ui:: {
27- ui_base:: UI ,
28- errors_alerts:: ErrorsAlerts ,
29- success_alerts:: SuccessAlerts ,
30- } ,
3120
32- utils:: {
33- url:: UrlMisc ,
34- remote:: Remote ,
35- file:: FileUtils ,
36- validation:: Validate ,
37- } ,
3821} ;
3922
4023pub struct Pdf ;
@@ -75,34 +58,6 @@ impl Pdf {
7558 Ok ( ( ) )
7659 }
7760
78- pub async fn download ( & self , url : & str , path : & str ) -> Result < String , Box < dyn Error > > {
79- UrlMisc :: check_url_status ( url) . await ?;
80-
81- let ( request_uri, filename) = Providers :: new ( url) . get_from_provider ( ) . await ?;
82- let response = reqwest:: get ( & request_uri) . await ?;
83- let total_size = Remote . get_file_size ( & request_uri) . await ?;
84-
85- let pb = ProgressBar :: new ( total_size) ;
86- pb. set_style ( UI :: pb_template ( ) ) ;
87-
88- let output_path = FileUtils . get_output_path ( path, & filename) ;
89- let mut dest = File :: create ( & output_path) ?;
90- let content = response. bytes ( ) . await ?;
91- let mut reader = Cursor :: new ( content) ;
92-
93- let _ = Validate :: file_type ( & filename, ".pdf" ) ;
94-
95- let mut buffer = [ 0 ; 8192 ] ;
96- while let Ok ( size) = reader. read ( & mut buffer) {
97- if size == 0 { break ; }
98-
99- dest. write_all ( & buffer[ ..size] ) ?;
100- pb. inc ( size as u64 ) ;
101- }
102-
103- Ok ( filename)
104- }
105-
10661 pub fn is_pdf_encrypted ( & self , file_path : & str ) -> bool {
10762 if let Ok ( file) = File :: open ( file_path) {
10863 let reader = BufReader :: new ( file) ;
@@ -115,40 +70,4 @@ impl Pdf {
11570 false
11671 }
11772
118- pub async fn download_line ( & self , line_url : & str , url : & str , path : & str ) -> Result < String , Box < dyn Error > > {
119- if self . is_pdf_file ( & line_url) . await ? || Providers :: new ( url) . valid_provider_domain ( ) && !line_url. contains ( ".md" ) {
120- let result = self . download ( & line_url, path) . await ;
121-
122- match result {
123- Ok ( file) => {
124- let file_path = & format ! ( "{}{}" , & path, & file) ;
125- let password = self . is_pdf_encrypted ( & file_path) ;
126-
127- SuccessAlerts :: download ( & file, url, password) ;
128- return Ok ( file_path. to_string ( ) )
129- } ,
130-
131- Err ( e) => ErrorsAlerts :: download ( e, url) ,
132- }
133- }
134-
135- Ok ( "" . to_string ( ) )
136- }
137-
138- pub async fn download_doi ( & self , line_url : & str , url : & str , path : & str ) -> Result < String , Box < dyn Error > > {
139- let result = self . download ( & line_url, path) . await ;
140-
141- match result {
142- Ok ( file) => {
143- let file_path = & format ! ( "{}{}" , & path, & file) ;
144- SuccessAlerts :: download ( & file, url, false ) ;
145- return Ok ( file_path. to_string ( ) )
146- } ,
147-
148- Err ( e) => ErrorsAlerts :: download ( e, url) ,
149- }
150-
151- Ok ( "" . to_string ( ) )
152- }
153-
15473}
0 commit comments