@@ -428,7 +428,7 @@ pub enum IpResolve {
428428
429429/// Possible values to pass to the `http_version` method.
430430#[ non_exhaustive]
431- #[ derive( Debug , Clone , Copy ) ]
431+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash ) ]
432432pub enum HttpVersion {
433433 /// We don't care what http version to use, and we'd like the library to
434434 /// choose the best possible for us.
@@ -3128,6 +3128,23 @@ impl<H> Easy2<H> {
31283128 Ok ( list:: from_raw ( list) )
31293129 }
31303130 }
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+ }
31313148
31323149 /// Wait for pipelining/multiplexing
31333150 ///
@@ -3989,3 +4006,12 @@ impl fmt::Debug for PostRedirections {
39894006 . finish ( )
39904007 }
39914008}
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