4
4
5
5
// #![deny(warnings)]
6
6
#![ deny( missing_docs) ]
7
- #![ feature( non_exhaustive) ]
8
7
9
8
#[ macro_use]
10
9
pub extern crate graphql_client;
@@ -36,7 +35,6 @@ pub struct Client {
36
35
///
37
36
/// not exhaustive
38
37
#[ derive( Debug , Fail , PartialEq ) ]
39
- #[ non_exhaustive]
40
38
pub enum ClientError {
41
39
/// The body couldn't be built
42
40
#[ fail( display = "Request body is not a valid string" ) ]
@@ -92,6 +90,7 @@ impl Client {
92
90
{
93
91
// this can be removed when we convert to async/await
94
92
let endpoint = self . endpoint . clone ( ) ;
93
+ let custom_headers = self . headers . clone ( ) ;
95
94
96
95
web_sys:: window ( )
97
96
. ok_or_else ( || ClientError :: NoWindow )
@@ -113,20 +112,21 @@ impl Client {
113
112
// "Request constructor threw");
114
113
} )
115
114
. and_then ( move |( window, request) | {
116
- let request : Result < web_sys :: Request , _ > = request
117
- . headers ( )
115
+ let mut headers = request. headers ( ) ;
116
+ headers
118
117
. 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 ) ?;
121
122
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 ) ?;
128
126
129
- request. map ( move |request| ( window, request) )
127
+ }
128
+
129
+ Ok ( ( window, request) )
130
130
} )
131
131
. and_then ( move |( window, request) | {
132
132
JsFuture :: from ( window. fetch_with_request ( & request) )
0 commit comments