1
- use crate :: services:: get_services_list;
1
+ use crate :: services:: { Service , get_services_list} ;
2
+ //use fake_user_agent::get_rua;
2
3
use chrono:: Utc ;
3
4
4
5
pub enum PhoneNumberTypes {
5
6
WithPlus ( String ) , //+7**********
6
7
WithPlusBrackets ( String ) //+7(***)*******
7
8
}
8
9
9
- pub fn format_number ( phone_number : & PhoneNumberTypes ) -> String {
10
+ pub fn format_number ( phone_number : PhoneNumberTypes ) -> String {
10
11
match phone_number {
11
12
PhoneNumberTypes :: WithPlus ( number) => {
12
13
let mut formatted_phone = "+" . to_string ( ) ;
13
- formatted_phone. push_str ( number) ;
14
+ formatted_phone. push_str ( number. as_str ( ) ) ;
14
15
15
16
formatted_phone
16
17
} ,
17
18
PhoneNumberTypes :: WithPlusBrackets ( number) => {
18
19
let slice = & number[ 0 ..=10 ] ;
19
20
let mut formatted_phone = "+" . to_string ( ) ;
20
- formatted_phone. push ( slice. chars ( ) . nth ( 0 ) . unwrap ( ) ) ;
21
+ formatted_phone. push ( slice. chars ( ) . next ( ) . unwrap ( ) ) ;
21
22
formatted_phone. push ( '(' ) ;
22
23
formatted_phone. push_str ( & slice[ 1 ..4 ] ) ;
23
24
formatted_phone. push ( ')' ) ;
@@ -29,66 +30,78 @@ pub fn format_number(phone_number: &PhoneNumberTypes) -> String {
29
30
}
30
31
}
31
32
33
+ async fn send ( service : Service ) {
34
+ //let rua = get_rua();
35
+
36
+ let client = reqwest:: Client :: builder ( )
37
+ //.user_agent(rua)
38
+ . build ( )
39
+ . expect ( "Error while client creating" ) ;
40
+
41
+ if !service. headers . is_empty ( ) {
42
+ let res = client
43
+ . post ( service. url )
44
+ . headers ( service. headers )
45
+ . json ( & service. post )
46
+ . send ( )
47
+ . await
48
+ . unwrap ( ) ;
49
+
50
+ println ! ( "\n Service with HEADERs - {}" ,
51
+ service. name) ;
52
+ println ! ( "Status - {}\n {:#?}\n " ,
53
+ res. status( ) ,
54
+ res. text( )
55
+ . await
56
+ . unwrap( ) ) ;
57
+ } else {
58
+ let res = client
59
+ . post ( service. url )
60
+ . json ( & service. post )
61
+ . send ( )
62
+ . await
63
+ . unwrap ( ) ;
64
+
65
+ println ! ( "\n Service without HEADERs - {}" ,
66
+ service. name) ;
67
+ println ! ( "Status - {}\n {:#?}\n " ,
68
+ res. status( ) ,
69
+ res. text( )
70
+ . await
71
+ . unwrap( ) ) ;
72
+ }
73
+ }
74
+
32
75
#[ tokio:: main]
33
- pub async fn send ( phone_number : String ) { //-> Result<(), Box<dyn std::error::Error>>
76
+ pub async fn start ( phone_number : String ) {
34
77
let services_list = get_services_list ( phone_number) ;
35
-
36
- let services_list_clone1 = services_list. clone ( ) ;
37
- let thread1 = tokio:: spawn ( async move {
38
- for i in 0 ..services_list_clone1. len ( ) {
39
- if ( i+1 ) % 2 != 0 {
40
- let client = reqwest:: Client :: new ( ) ;
41
- let res = client
42
- . post ( & services_list_clone1[ i] . url )
43
- . json ( & services_list_clone1[ i] . post )
44
- . send ( )
45
- . await
46
- . unwrap ( ) ;
47
78
48
- println ! ( "\n Service №{} - {}" ,
49
- i,
50
- & services_list_clone1[ i] . name) ;
51
- println ! ( "Status - {}\n {:#?}\n " ,
52
- res. status( ) ,
53
- res. text( )
54
- . await
55
- . unwrap( ) ) ;
79
+ let services_list_0 = services_list. clone ( ) ;
80
+ let thread0 = tokio:: spawn ( async move {
81
+ for i in 0 ..services_list_0. len ( ) {
82
+ if ( i+1 ) % 2 != 0 {
83
+ send ( services_list_0[ i] . clone ( ) ) . await ;
56
84
}
57
85
}
58
86
} ) ;
59
87
60
- let services_list_clone2 = services_list. clone ( ) ;
61
- let thread2 = tokio:: spawn ( async move {
62
- for i in 0 ..services_list_clone2 . len ( ) {
88
+ let services_list_1 = services_list. clone ( ) ;
89
+ let thread1 = tokio:: spawn ( async move {
90
+ for i in 0 ..services_list_1 . len ( ) {
63
91
if ( i+1 ) % 2 == 0 {
64
- let client = reqwest:: Client :: new ( ) ;
65
- let res = client
66
- . post ( & services_list_clone2[ i] . url )
67
- . json ( & services_list_clone2[ i] . post )
68
- . send ( )
69
- . await
70
- . unwrap ( ) ;
71
-
72
- println ! ( "\n Service №{} - {}" ,
73
- i,
74
- & services_list_clone2[ i] . name) ;
75
- println ! ( "Status - {}\n {:#?}\n " ,
76
- res. status( ) ,
77
- res. text( )
78
- . await
79
- . unwrap( ) ) ;
92
+ send ( services_list_1[ i] . clone ( ) ) . await ;
80
93
}
81
94
}
82
95
} ) ;
83
96
84
97
let start_time = Utc :: now ( ) ;
98
+ thread0. await . unwrap ( ) ;
85
99
thread1. await . unwrap ( ) ;
86
- thread2. await . unwrap ( ) ;
87
100
88
101
let finish_time = Utc :: now ( ) ;
89
102
let duration = finish_time - start_time;
90
103
println ! ( "Finished\n Started at: {}\n Finished at: {}\n Worked: {}" ,
91
- start_time. format( "%Y-%m-%d %H:%M:%S" ) . to_string ( ) ,
92
- finish_time. format( "%Y-%m-%d %H:%M:%S" ) . to_string ( ) ,
93
- duration. num_seconds( ) . to_string ( ) ) ;
104
+ start_time. format( "%Y-%m-%d %H:%M:%S" ) ,
105
+ finish_time. format( "%Y-%m-%d %H:%M:%S" ) ,
106
+ duration. num_seconds( ) ) ;
94
107
}
0 commit comments