@@ -39,6 +39,7 @@ use crate::{Api,
39
39
AnyOfGetResponse ,
40
40
CallbackWithHeaderPostResponse ,
41
41
ComplexQueryParamGetResponse ,
42
+ FormTestResponse ,
42
43
GetWithBooleanParameterResponse ,
43
44
JsonComplexQueryParamGetResponse ,
44
45
MandatoryRequestHeaderGetResponse ,
@@ -670,6 +671,96 @@ impl<S, C> Api<C> for Client<S, C> where
670
671
}
671
672
}
672
673
674
+ async fn form_test (
675
+ & self ,
676
+ param_required_array : Option < & Vec < String > > ,
677
+ context : & C ) -> Result < FormTestResponse , ApiError >
678
+ {
679
+ let mut client_service = self . client_service . clone ( ) ;
680
+ let mut uri = format ! (
681
+ "{}/form-test" ,
682
+ self . base_path
683
+ ) ;
684
+
685
+ // Query parameters
686
+ let query_string = {
687
+ let mut query_string = form_urlencoded:: Serializer :: new ( "" . to_owned ( ) ) ;
688
+ query_string. finish ( )
689
+ } ;
690
+ if !query_string. is_empty ( ) {
691
+ uri += "?" ;
692
+ uri += & query_string;
693
+ }
694
+
695
+ let uri = match Uri :: from_str ( & uri) {
696
+ Ok ( uri) => uri,
697
+ Err ( err) => return Err ( ApiError ( format ! ( "Unable to build URI: {}" , err) ) ) ,
698
+ } ;
699
+
700
+ let mut request = match Request :: builder ( )
701
+ . method ( "POST" )
702
+ . uri ( uri)
703
+ . body ( Body :: empty ( ) ) {
704
+ Ok ( req) => req,
705
+ Err ( e) => return Err ( ApiError ( format ! ( "Unable to create request: {}" , e) ) )
706
+ } ;
707
+
708
+ // Consumes form body
709
+ let mut params = vec ! [ ] ;
710
+ if let Some ( param_required_array) = param_required_array {
711
+ // style=form,explode=true
712
+ for param_required_array in param_required_array {
713
+ params. push ( ( "requiredArray" ,
714
+ format ! ( "{:?}" , param_required_array)
715
+ ) ) ;
716
+ }
717
+ }
718
+
719
+ let body = serde_urlencoded:: to_string ( params) . expect ( "impossible to fail to serialize" ) ;
720
+
721
+ * request. body_mut ( ) = Body :: from ( body. into_bytes ( ) ) ;
722
+
723
+ let header = "application/x-www-form-urlencoded" ;
724
+ request. headers_mut ( ) . insert ( CONTENT_TYPE , match HeaderValue :: from_str ( header) {
725
+ Ok ( h) => h,
726
+ Err ( e) => return Err ( ApiError ( format ! ( "Unable to create header: {} - {}" , header, e) ) )
727
+ } ) ;
728
+
729
+ let header = HeaderValue :: from_str ( Has :: < XSpanIdString > :: get ( context) . 0 . as_str ( ) ) ;
730
+ request. headers_mut ( ) . insert ( HeaderName :: from_static ( "x-span-id" ) , match header {
731
+ Ok ( h) => h,
732
+ Err ( e) => return Err ( ApiError ( format ! ( "Unable to create X-Span ID header value: {}" , e) ) )
733
+ } ) ;
734
+
735
+ let response = client_service. call ( ( request, context. clone ( ) ) )
736
+ . map_err ( |e| ApiError ( format ! ( "No response received: {}" , e) ) ) . await ?;
737
+
738
+ match response. status ( ) . as_u16 ( ) {
739
+ 200 => {
740
+ Ok (
741
+ FormTestResponse :: OK
742
+ )
743
+ }
744
+ code => {
745
+ let headers = response. headers ( ) . clone ( ) ;
746
+ let body = response. into_body ( )
747
+ . take ( 100 )
748
+ . into_raw ( ) . await ;
749
+ Err ( ApiError ( format ! ( "Unexpected response code {}:\n {:?}\n \n {}" ,
750
+ code,
751
+ headers,
752
+ match body {
753
+ Ok ( body) => match String :: from_utf8( body) {
754
+ Ok ( body) => body,
755
+ Err ( e) => format!( "<Body was not UTF8: {:?}>" , e) ,
756
+ } ,
757
+ Err ( e) => format!( "<Failed to read body: {}>" , e) ,
758
+ }
759
+ ) ) )
760
+ }
761
+ }
762
+ }
763
+
673
764
async fn get_with_boolean_parameter (
674
765
& self ,
675
766
param_iambool : bool ,
0 commit comments