@@ -12,16 +12,17 @@ use crate::config::default_config;
1212pub const MAX_CONCURRENT_UPLOADS : usize = 8 ; // TODO
1313pub const MAX_CONCURRENT_DOWNLOADS : usize = 8 ; // TODO
1414
15- const DEFAULT_CAS_ENDPOINT : & str = "https ://cas-server.us.dev.moon.huggingface.tech" ;
15+ const DEFAULT_CAS_ENDPOINT : & str = "http ://localhost:8080" ;
1616const READ_BLOCK_SIZE : usize = 1024 * 1024 ;
1717
18- pub async fn upload_async ( file_paths : Vec < String > ) -> errors:: Result < Vec < PointerFile > > {
18+ pub async fn upload_async ( file_paths : Vec < String > , endpoint : Option < String > , token : Option < String > ) -> errors:: Result < Vec < PointerFile > > {
1919 // chunk files
2020 // produce Xorbs + Shards
2121 // upload shards and xorbs
2222 // for each file, return the filehash
23+ let endpoint = endpoint. unwrap_or ( DEFAULT_CAS_ENDPOINT . to_string ( ) ) ;
2324
24- let config = default_config ( DEFAULT_CAS_ENDPOINT . to_string ( ) ) ?;
25+ let config = default_config ( endpoint , token ) ?;
2526 let processor = Arc :: new ( PointerFileTranslator :: new ( config) . await ?) ;
2627 let processor = & processor;
2728 // for all files, clean them, producing pointer files.
@@ -45,16 +46,20 @@ pub async fn upload_async(file_paths: Vec<String>) -> errors::Result<Vec<Pointer
4546 Ok ( pointers)
4647}
4748
48- pub async fn download_async ( pointer_files : Vec < PointerFile > ) -> errors:: Result < Vec < String > > {
49- let config = default_config ( DEFAULT_CAS_ENDPOINT . to_string ( ) ) ?;
49+ pub async fn download_async ( pointer_files : Vec < PointerFile > , endpoint : Option < String > , token : Option < String > ) -> errors:: Result < Vec < String > > {
50+ let config = default_config ( endpoint . clone ( ) . unwrap_or ( DEFAULT_CAS_ENDPOINT . to_string ( ) ) , token . clone ( ) ) ?;
5051 let processor = Arc :: new ( PointerFileTranslator :: new ( config) . await ?) ;
5152 let processor = & processor;
5253 let paths = tokio_par_for_each (
5354 pointer_files,
5455 MAX_CONCURRENT_DOWNLOADS ,
55- |pointer_file, _| async move {
56- let proc = processor. clone ( ) ;
57- smudge_file ( & proc, & pointer_file) . await
56+ |pointer_file, _| {
57+ let tok = token. clone ( ) ;
58+ let end = endpoint. clone ( ) ;
59+ async move {
60+ let proc = processor. clone ( ) ;
61+ smudge_file ( & proc, & pointer_file, end. clone ( ) , tok. clone ( ) ) . await
62+ }
5863 } ,
5964 ) . await . map_err ( |e| match e {
6065 ParallelError :: JoinError => {
@@ -87,13 +92,13 @@ async fn clean_file(processor: &PointerFileTranslator, f: String) -> errors::Res
8792 Ok ( pf)
8893}
8994
90- async fn smudge_file ( proc : & PointerFileTranslator , pointer_file : & PointerFile ) -> errors:: Result < String > {
95+ async fn smudge_file ( proc : & PointerFileTranslator , pointer_file : & PointerFile , endpoint : Option < String > , token : Option < String > ) -> errors:: Result < String > {
9196 let path = PathBuf :: from ( pointer_file. path ( ) ) ;
9297 if let Some ( parent_dir) = path. parent ( ) {
9398 fs:: create_dir_all ( parent_dir) ?;
9499 }
95100 let mut f = File :: create ( & path) ?;
96- proc. smudge_file_from_pointer ( & pointer_file, & mut f, None ) . await ?;
101+ proc. smudge_file_from_pointer ( & pointer_file, & mut f, None , endpoint , token ) . await ?;
97102 Ok ( pointer_file. path ( ) . to_string ( ) )
98103}
99104
@@ -122,7 +127,7 @@ mod tests {
122127 let pointers = vec ! [
123128 PointerFile :: init_from_info( "/tmp/foo.rs" , "6999733a46030e67f6f020651c91442ace735572458573df599106e54646867c" , 4203 ) ,
124129 ] ;
125- let paths = download_async ( pointers) . await . unwrap ( ) ;
130+ let paths = download_async ( pointers, "http://localhost:8080" , "12345" ) . await . unwrap ( ) ;
126131 println ! ( "paths: {paths:?}" ) ;
127132 }
128133}
0 commit comments