44
55// #![deny(warnings)]
66#![ deny( missing_docs) ]
7- #![ feature( non_exhaustive) ]
87
98#[ macro_use]
109pub extern crate graphql_client;
@@ -36,7 +35,6 @@ pub struct Client {
3635///
3736/// not exhaustive
3837#[ derive( Debug , Fail , PartialEq ) ]
39- #[ non_exhaustive]
4038pub enum ClientError {
4139 /// The body couldn't be built
4240 #[ fail( display = "Request body is not a valid string" ) ]
@@ -92,6 +90,7 @@ impl Client {
9290 {
9391 // this can be removed when we convert to async/await
9492 let endpoint = self . endpoint . clone ( ) ;
93+ let custom_headers = self . headers . clone ( ) ;
9594
9695 web_sys:: window ( )
9796 . ok_or_else ( || ClientError :: NoWindow )
@@ -113,20 +112,21 @@ impl Client {
113112 // "Request constructor threw");
114113 } )
115114 . and_then ( move |( window, request) | {
116- let request : Result < web_sys :: Request , _ > = request
117- . headers ( )
115+ let mut headers = request. headers ( ) ;
116+ headers
118117 . set ( "Content-Type" , "application/json" )
119- . map_err ( |_| ClientError :: RequestError )
120- . map ( |_| request) ;
118+ . map_err ( |_| ClientError :: RequestError ) ?;
119+ headers
120+ . set ( "Accept" , "application/json" )
121+ . map_err ( |_| ClientError :: RequestError ) ?;
121122
122- let request: Result < web_sys:: Request , _ > = request. and_then ( |req| {
123- req. headers ( )
124- . set ( "Accept" , "application/json" )
125- . map_err ( |_| ClientError :: RequestError )
126- . map ( |_| req)
127- } ) ;
123+ for ( header_name, header_value) in custom_headers. iter ( ) {
124+ headers. set ( header_name, header_value)
125+ . map_err ( |_| ClientError :: RequestError ) ?;
128126
129- request. map ( move |request| ( window, request) )
127+ }
128+
129+ Ok ( ( window, request) )
130130 } )
131131 . and_then ( move |( window, request) | {
132132 JsFuture :: from ( window. fetch_with_request ( & request) )
0 commit comments