@@ -428,7 +428,7 @@ pub enum IpResolve {
428
428
429
429
/// Possible values to pass to the `http_version` method.
430
430
#[ non_exhaustive]
431
- #[ derive( Debug , Clone , Copy ) ]
431
+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash ) ]
432
432
pub enum HttpVersion {
433
433
/// We don't care what http version to use, and we'd like the library to
434
434
/// choose the best possible for us.
@@ -3128,6 +3128,23 @@ impl<H> Easy2<H> {
3128
3128
Ok ( list:: from_raw ( list) )
3129
3129
}
3130
3130
}
3131
+ /// Get the last http version number
3132
+ ///
3133
+ /// Corresponds to `CURLINFO_HTTP_VERSION` and may return an error if the
3134
+ /// option isn't supported.
3135
+ pub fn get_http_version ( & self ) -> Result < HttpVersionInfo , Error > {
3136
+ self . getopt_long ( curl_sys:: CURLINFO_HTTP_VERSION ) . map ( |c| {
3137
+ HttpVersionInfo :: HttpVersion ( match c as i32 {
3138
+ curl_sys:: CURL_HTTP_VERSION_1_0 => HttpVersion :: V10 ,
3139
+ curl_sys:: CURL_HTTP_VERSION_1_1 => HttpVersion :: V11 ,
3140
+ curl_sys:: CURL_HTTP_VERSION_2_0 => HttpVersion :: V2 ,
3141
+ curl_sys:: CURL_HTTP_VERSION_2TLS => HttpVersion :: V2TLS ,
3142
+ curl_sys:: CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE => HttpVersion :: V2PriorKnowledge ,
3143
+ curl_sys:: CURL_HTTP_VERSION_3 => HttpVersion :: V3 ,
3144
+ c => return HttpVersionInfo :: Unknown ( c) ,
3145
+ } )
3146
+ } )
3147
+ }
3131
3148
3132
3149
/// Wait for pipelining/multiplexing
3133
3150
///
@@ -3989,3 +4006,12 @@ impl fmt::Debug for PostRedirections {
3989
4006
. finish ( )
3990
4007
}
3991
4008
}
4009
+
4010
+ /// Possible values returned by [`Easy2::get_http_version()`].
4011
+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash ) ]
4012
+ pub enum HttpVersionInfo {
4013
+ /// Known HTTP version described by [`HttpVersion`].
4014
+ HttpVersion ( HttpVersion ) ,
4015
+ /// Invalid or unknown version returned for [`curl_sys::CURLINFO_HTTP_VERSION`].
4016
+ Unknown ( i32 ) ,
4017
+ }
0 commit comments