@@ -21,13 +21,19 @@ class JSController: ObservableObject {
2121 }
2222 context. setObject ( logFunction, forKeyedSubscript: " log " as NSString )
2323
24- let fetchNativeFunction : @convention ( block) ( String , JSValue , JSValue ) -> Void = { urlString, resolve, reject in
24+ let fetchNativeFunction : @convention ( block) ( String , [ String : String ] ? , JSValue , JSValue ) -> Void = { urlString, headers , resolve, reject in
2525 guard let url = URL ( string: urlString) else {
2626 Logger . shared. log ( " Invalid URL " , type: " Error " )
2727 reject. call ( withArguments: [ " Invalid URL " ] )
2828 return
2929 }
30- let task = URLSession . custom. dataTask ( with: url) { data, _, error in
30+ var request = URLRequest ( url: url)
31+ if let headers = headers {
32+ for (key, value) in headers {
33+ request. setValue ( value, forHTTPHeaderField: key)
34+ }
35+ }
36+ let task = URLSession . custom. dataTask ( with: request) { data, _, error in
3137 if let error = error {
3238 Logger . shared. log ( " Network error in fetchNativeFunction: \( error. localizedDescription) " , type: " Error " )
3339 reject. call ( withArguments: [ error. localizedDescription] )
@@ -50,12 +56,12 @@ class JSController: ObservableObject {
5056 context. setObject ( fetchNativeFunction, forKeyedSubscript: " fetchNative " as NSString )
5157
5258 let fetchDefinition = """
53- function fetch(url) {
54- return new Promise(function(resolve, reject) {
55- fetchNative(url, resolve, reject);
56- });
57- }
58- """
59+ function fetch(url, headers ) {
60+ return new Promise(function(resolve, reject) {
61+ fetchNative(url, headers , resolve, reject);
62+ });
63+ }
64+ """
5965 context. evaluateScript ( fetchDefinition)
6066 }
6167
0 commit comments