@@ -215,7 +215,7 @@ impl DomainStorage {
215
215
}
216
216
}
217
217
if max_version > 0 {
218
- tracing :: info!( "serve: {},version: {}" , domain_dir_name, max_version) ;
218
+ info ! ( "serve: {},version: {}" , domain_dir_name, max_version) ;
219
219
return Ok ( ( uploading_version, Some ( max_version) ) ) ;
220
220
}
221
221
return Ok ( ( uploading_version, None ) ) ;
@@ -283,17 +283,23 @@ impl DomainStorage {
283
283
let multiple_file =
284
284
self . prefix . join ( & host) . join ( MULTIPLE_WEB_FILE_NAME ) ;
285
285
if multiple_file. exists ( ) {
286
- let mut file =
287
- OpenOptions :: new ( ) . append ( true ) . open ( multiple_file) ?;
288
- writeln ! ( file, "{}" , path. to_string( ) ) ?;
286
+ let mut file = OpenOptions :: new ( )
287
+ . append ( true )
288
+ . read ( true )
289
+ . open ( multiple_file) ?;
290
+ let mut multiple_path = String :: new ( ) ;
291
+ file. read_to_string ( & mut multiple_path) ?;
292
+ if !multiple_path. lines ( ) . any ( |x| x == path) {
293
+ writeln ! ( file, "{}" , path) ?;
294
+ }
289
295
}
290
296
map. insert ( path. to_string ( ) , ( new_path. clone ( ) , version) ) ;
291
297
}
292
298
} ;
293
299
}
294
300
None => {
295
301
//TODO: check if MULTIPLE_WEB_FILE_NAME exists
296
- if path == "" {
302
+ if path. is_empty ( ) {
297
303
self . meta . insert (
298
304
host. to_string ( ) ,
299
305
DomainMeta :: OneWeb ( new_path. clone ( ) , version) ,
@@ -303,10 +309,16 @@ impl DomainStorage {
303
309
let mut file = OpenOptions :: new ( )
304
310
. create ( true )
305
311
. append ( true )
312
+ . read ( true )
306
313
. open ( & multiple_file) ?;
307
314
315
+ let mut multiple_path = String :: new ( ) ;
316
+ file. read_to_string ( & mut multiple_path) ?;
317
+ if !multiple_path. lines ( ) . any ( |x| x == path) {
318
+ writeln ! ( file, "{}" , path) ?;
319
+ }
308
320
let map = DashMap :: new ( ) ;
309
- writeln ! ( file , "{}" , path . to_string ( ) ) ? ;
321
+
310
322
info ! ( "create multiple_file {multiple_file:?}, append {path}" ) ;
311
323
map. insert ( path. to_string ( ) , ( new_path. clone ( ) , version) ) ;
312
324
@@ -597,7 +609,7 @@ impl DomainStorage {
597
609
None => ( domain. as_str ( ) , "" ) ,
598
610
} ;
599
611
let multiple = self . prefix . join ( host) . join ( MULTIPLE_WEB_FILE_NAME ) ;
600
- if path != "" {
612
+ if !path . is_empty ( ) {
601
613
if !multiple. exists ( ) {
602
614
let parent = self . prefix . join ( host) ;
603
615
if !parent. exists ( ) && fs:: create_dir_all ( & parent) . is_err ( ) {
@@ -721,9 +733,15 @@ pub struct UploadDomainPosition {
721
733
722
734
#[ cfg( test) ]
723
735
mod test {
736
+ use crate :: config:: Config ;
724
737
use crate :: domain_storage:: { DomainStorage , URI_REGEX_STR } ;
738
+ use crate :: file_cache:: FileCache ;
725
739
use hyper:: Uri ;
726
740
use regex:: Regex ;
741
+ use std:: env;
742
+ use std:: fs:: OpenOptions ;
743
+ use std:: io:: Read ;
744
+ use std:: io:: Write ;
727
745
use std:: ops:: RangeInclusive ;
728
746
use std:: path:: PathBuf ;
729
747
use std:: str:: FromStr ;
@@ -789,9 +807,33 @@ mod test {
789
807
// println!("{:?}", path.join("usr/lib/pam/").to_str());
790
808
// }
791
809
792
- // would crea
793
- // #[test]
794
- // fn test_create_file() {
795
- // File::create_new(PathBuf::from("/tmp/bccskwef")).unwrap();
796
- // }
810
+ #[ test]
811
+ fn test_domain_storage_get_domain_info ( ) {
812
+ let path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) . join ( "../test/config.test.conf" ) ;
813
+ env:: set_var ( "SPA_CONFIG" , path. display ( ) . to_string ( ) ) ;
814
+ let mut config = Config :: load ( ) . unwrap ( ) ;
815
+ config. file_dir = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) )
816
+ . join ( "../test/data" )
817
+ . display ( )
818
+ . to_string ( ) ;
819
+ let file_cache = FileCache :: new ( & config) ;
820
+ let storage = DomainStorage :: init ( & config. file_dir , file_cache) . unwrap ( ) ;
821
+ let result = storage. get_domain_info ( ) . unwrap ( ) ;
822
+
823
+ println ! ( "{:?}" , result) ;
824
+ }
825
+ #[ test]
826
+ fn test_file_read ( ) {
827
+ let mut file = OpenOptions :: new ( )
828
+ . read ( true )
829
+ . create ( true )
830
+ . append ( true )
831
+ . write ( true )
832
+ . open ( "/tmp/cde.txt" )
833
+ . unwrap ( ) ;
834
+ let mut text = String :: new ( ) ;
835
+ file. read_to_string ( & mut text) . unwrap ( ) ;
836
+ assert_eq ! ( & text, "" ) ;
837
+ //writeln!(file, "{}", "abc").unwrap();
838
+ }
797
839
}
0 commit comments