@@ -19,33 +19,33 @@ use crate::Status;
19
19
///
20
20
/// let username = "nori";
21
21
/// let password = "secret_fish!!";
22
- /// let authz = BasicAuth::new(username, Some( password) );
22
+ /// let authz = BasicAuth::new(username, password);
23
23
///
24
24
/// let mut res = Response::new(200);
25
25
/// authz.apply(&mut res);
26
26
///
27
27
/// let authz = BasicAuth::from_headers(res)?.unwrap();
28
28
///
29
29
/// assert_eq!(authz.username(), username);
30
- /// assert_eq!(authz.password(), Some( password) );
30
+ /// assert_eq!(authz.password(), password);
31
31
/// #
32
32
/// # Ok(()) }
33
33
/// ```
34
34
#[ derive( Debug ) ]
35
35
pub struct BasicAuth {
36
36
username : String ,
37
- password : Option < String > ,
37
+ password : String ,
38
38
}
39
39
40
40
impl BasicAuth {
41
41
/// Create a new instance of `BasicAuth`.
42
- pub fn new < U , P > ( username : U , password : Option < P > ) -> Self
42
+ pub fn new < U , P > ( username : U , password : P ) -> Self
43
43
where
44
44
U : AsRef < str > ,
45
45
P : AsRef < str > ,
46
46
{
47
47
let username = username. as_ref ( ) . to_owned ( ) ;
48
- let password = password. map ( |p| p . as_ref ( ) . to_owned ( ) ) ;
48
+ let password = password. as_ref ( ) . to_owned ( ) ;
49
49
Self { username, password }
50
50
}
51
51
@@ -71,8 +71,12 @@ impl BasicAuth {
71
71
let password = iter. next ( ) ;
72
72
73
73
let ( username, password) = match ( username, password) {
74
- ( Some ( username) , Some ( password) ) => ( username. to_string ( ) , Some ( password. to_string ( ) ) ) ,
75
- ( Some ( username) , None ) => ( username. to_string ( ) , None ) ,
74
+ ( Some ( username) , Some ( password) ) => ( username. to_string ( ) , password. to_string ( ) ) ,
75
+ ( Some ( _) , None ) => {
76
+ let mut err = format_err ! ( "Expected basic auth to a password" ) ;
77
+ err. set_status ( 400 ) ;
78
+ return Err ( err) ;
79
+ }
76
80
( None , _) => {
77
81
let mut err = format_err ! ( "Expected basic auth to contain a username" ) ;
78
82
err. set_status ( 400 ) ;
@@ -96,10 +100,7 @@ impl BasicAuth {
96
100
/// Get the `HeaderValue`.
97
101
pub fn value ( & self ) -> HeaderValue {
98
102
let scheme = AuthenticationScheme :: Basic ;
99
- let credentials = match self . password . as_ref ( ) {
100
- Some ( password) => base64:: encode ( format ! ( "{}:{}" , self . username, password) ) ,
101
- None => base64:: encode ( self . username . clone ( ) ) ,
102
- } ;
103
+ let credentials = base64:: encode ( format ! ( "{}:{}" , self . username, self . password) ) ;
103
104
let auth = Authorization :: new ( scheme, credentials) ;
104
105
auth. value ( )
105
106
}
@@ -110,8 +111,8 @@ impl BasicAuth {
110
111
}
111
112
112
113
/// Get the password.
113
- pub fn password ( & self ) -> Option < & str > {
114
- self . password . as_deref ( )
114
+ pub fn password ( & self ) -> & str {
115
+ self . password . as_str ( )
115
116
}
116
117
}
117
118
@@ -124,15 +125,15 @@ mod test {
124
125
fn smoke ( ) -> crate :: Result < ( ) > {
125
126
let username = "nori" ;
126
127
let password = "secret_fish!!" ;
127
- let authz = BasicAuth :: new ( username, Some ( password) ) ;
128
+ let authz = BasicAuth :: new ( username, password) ;
128
129
129
130
let mut headers = Headers :: new ( ) ;
130
131
authz. apply ( & mut headers) ;
131
132
132
133
let authz = BasicAuth :: from_headers ( headers) ?. unwrap ( ) ;
133
134
134
135
assert_eq ! ( authz. username( ) , username) ;
135
- assert_eq ! ( authz. password( ) , Some ( password) ) ;
136
+ assert_eq ! ( authz. password( ) , password) ;
136
137
Ok ( ( ) )
137
138
}
138
139
0 commit comments