From 2bd37b50a4eb87e8b4fc8bf8e25a417f5c3267ba Mon Sep 17 00:00:00 2001 From: cranci1 <100066266+cranci1@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:06:28 +0100 Subject: [PATCH] added headers support i think --- Sora/Utils/JSLoader/JSController.swift | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Sora/Utils/JSLoader/JSController.swift b/Sora/Utils/JSLoader/JSController.swift index afdeab5..8cc9ba5 100644 --- a/Sora/Utils/JSLoader/JSController.swift +++ b/Sora/Utils/JSLoader/JSController.swift @@ -21,13 +21,19 @@ class JSController: ObservableObject { } context.setObject(logFunction, forKeyedSubscript: "log" as NSString) - let fetchNativeFunction: @convention(block) (String, JSValue, JSValue) -> Void = { urlString, resolve, reject in + let fetchNativeFunction: @convention(block) (String, [String: String]?, JSValue, JSValue) -> Void = { urlString, headers, resolve, reject in guard let url = URL(string: urlString) else { Logger.shared.log("Invalid URL",type: "Error") reject.call(withArguments: ["Invalid URL"]) return } - let task = URLSession.custom.dataTask(with: url) { data, _, error in + var request = URLRequest(url: url) + if let headers = headers { + for (key, value) in headers { + request.setValue(value, forHTTPHeaderField: key) + } + } + let task = URLSession.custom.dataTask(with: request) { data, _, error in if let error = error { Logger.shared.log("Network error in fetchNativeFunction: \(error.localizedDescription)",type: "Error") reject.call(withArguments: [error.localizedDescription]) @@ -50,12 +56,12 @@ class JSController: ObservableObject { context.setObject(fetchNativeFunction, forKeyedSubscript: "fetchNative" as NSString) let fetchDefinition = """ - function fetch(url) { - return new Promise(function(resolve, reject) { - fetchNative(url, resolve, reject); - }); - } - """ + function fetch(url, headers) { + return new Promise(function(resolve, reject) { + fetchNative(url, headers, resolve, reject); + }); + } + """ context.evaluateScript(fetchDefinition) }